abtest/abtest.go (42 lines of code) (raw):
package abtest
import (
"os"
"github.com/alibaba/pairec/v2/log"
"github.com/aliyun/aliyun-pairec-config-go-sdk/v2/experiments"
"github.com/aliyun/aliyun-pairec-config-go-sdk/v2/model"
)
var experimentClient *experiments.ExperimentClient
// LoadFromEnvironment create abtest instance use env, env list:
//
// ENV params list:
//
// PAIREC_ENVIRONMENT is the environment type, valid values are: daily, prepub, product
// REGION region of pairec console instance, like cn-beijing,cn-hangzhou
// INSTANCE_ID id of pairec console instance
// AccessKey aliyun accessKeyId
// AccessSecret aliyun accessKeySecret
func LoadFromEnvironment() {
env := os.Getenv("PAIREC_ENVIRONMENT")
if env == "" {
panic("env PAIREC_ENVIRONMENT empty")
}
region := os.Getenv("REGION")
instanceId := os.Getenv("INSTANCE_ID")
accessId := os.Getenv("AccessKey")
accessSecret := os.Getenv("AccessSecret")
if region == "" {
panic("env REGION empty")
}
if instanceId == "" {
panic("env INSTANCE_ID empty")
}
/*
if accessId == "" {
panic("env AccessKey empty")
}
if accessSecret == "" {
panic("env AccessSecret empty")
}
*/
l := log.ABTestLogger{}
opts := []experiments.ClientOption{experiments.WithLogger(experiments.LoggerFunc(l.Infof)), experiments.WithErrorLogger(experiments.LoggerFunc(l.Errorf))}
if os.Getenv("PAIREC_CONFIG_ENDPOINT") != "" {
opts = append(opts, experiments.WithDomain(os.Getenv("PAIREC_CONFIG_ENDPOINT")))
}
client, err := experiments.NewExperimentClient(instanceId, region, accessId, accessSecret, env,
opts...,
)
if err != nil {
panic(err)
}
experimentClient = client
}
func GetExperimentClient() *experiments.ExperimentClient {
return experimentClient
}
func GetParams(sceneName string) model.SceneParams {
return experimentClient.GetSceneParams(sceneName)
}