in model/model_experiment_group.go [37:91]
func (e *ExperimentGroup) Init() error {
if e.CrowdTargetType == "" {
if e.Filter != "" {
diversionBucket, err := NewFilterDiversionBucket(e.Filter)
if err != nil {
return err
}
e.diversionBucket = diversionBucket
}
e.crowdUserMap = make(map[string]struct{}, len(e.CrowdUsers))
for _, uidstr := range e.CrowdUsers {
for _, uid := range strings.Split(uidstr, ",") {
e.crowdUserMap[strings.TrimSpace(uid)] = struct{}{}
}
}
} else {
switch e.CrowdTargetType {
case common.CrowdTargetType_CrowdId:
e.crowdUserMap = make(map[string]struct{}, len(e.CrowdUsers))
for _, uidstr := range e.CrowdUsers {
for _, uid := range strings.Split(uidstr, ",") {
e.crowdUserMap[strings.TrimSpace(uid)] = struct{}{}
}
}
case common.CrowdTargetType_Filter:
if e.Filter != "" {
diversionBucket, err := NewFilterDiversionBucket(e.Filter)
if err != nil {
return err
}
e.diversionBucket = diversionBucket
}
case common.CrowdTargetType_Random:
e.diversionBucket = NewUidDiversionBucket(100, e.HoldingBuckets)
}
}
// deal DebugUsers
e.debugUserMap = make(map[string]bool, 0)
if e.DebugUsers != "" {
uids := strings.Split(e.DebugUsers, ",")
for _, uid := range uids {
e.debugUserMap[uid] = true
}
}
if len(e.DebugCrowdUsers) != 0 {
for _, uid := range e.DebugCrowdUsers {
e.debugUserMap[uid] = true
}
}
return nil
}