func()

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
}