api/api_experiment.go (70 lines of code) (raw):

package api import ( "context" "strconv" "github.com/aliyun/alibaba-cloud-sdk-go/services/pairecservice" "github.com/aliyun/aliyun-pairec-config-go-sdk/v2/common" "github.com/aliyun/aliyun-pairec-config-go-sdk/v2/model" "github.com/antihax/optional" ) // Linger please var ( _ context.Context ) type ExperimentApiService service /* ExperimentApiService list all Experiments By filter condition * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param expGroupId list all experiments of the experiment group * @param optional nil or *ExperimentApiListExperimentsOpts - Optional Parameters: * @param "Status" (optional.Int32) - list the experiments of the status @return ListExperimentsResponse */ type ExperimentApiListExperimentsOpts struct { Status optional.Uint32 } func (a *ExperimentApiService) ListExperiments(expGroupId int64, localVarOptionals *ExperimentApiListExperimentsOpts) (ListExperimentsResponse, error) { listExperimentsRequest := pairecservice.CreateListExperimentsRequest() listExperimentsRequest.InstanceId = a.instanceId listExperimentsRequest.ExperimentGroupId = strconv.Itoa(int(expGroupId)) if localVarOptionals.Status.Value() == common.Experiment_Status_Online { listExperimentsRequest.Status = "Online" } else if localVarOptionals.Status.Value() == common.Experiment_Status_Offline { listExperimentsRequest.Status = "Offline" } listExperimentsRequest.SetDomain(a.client.GetDomain()) var ( localVarReturnValue ListExperimentsResponse ) response, err := a.client.ListExperiments(listExperimentsRequest) if err != nil { return localVarReturnValue, err } for _, item := range response.Experiments { if id, err := strconv.Atoi(item.ExperimentId); err == nil { experiment := model.Experiment{ ExperimentId: int64(id), ExpGroupId: expGroupId, ExperimentName: item.Name, ExperimentInfo: item.Description, ExperimentFlow: uint32(item.FlowPercent), ExperimentBuckets: item.Buckets, DebugUsers: item.DebugUsers, ExperimentConfig: item.Config, } if item.DebugCrowdId != "" { if crowdId, err := strconv.Atoi(item.DebugCrowdId); err == nil { experiment.DebugCrowdId = int64(crowdId) } } if sceneId, err := strconv.Atoi(item.SceneId); err == nil { experiment.SceneId = int64(sceneId) } // exproom id if laboratoryId, err := strconv.Atoi(item.LaboratoryId); err == nil { experiment.ExpRoomId = int64(laboratoryId) } if layerId, err := strconv.Atoi(item.LayerId); err == nil { experiment.LayerId = int64(layerId) } switch item.Type { case "Baseline": experiment.Type = common.Experiment_Type_Base case "Normal": experiment.Type = common.Experiment_Type_Test } localVarReturnValue.Experiments = append(localVarReturnValue.Experiments, &experiment) } } return localVarReturnValue, nil }