func()

in model/model_experiment_group.go [105:146]


func (e *ExperimentGroup) Match(experimentContext *ExperimentContext) bool {
	// Backward compatible with legacy logic
	if e.CrowdTargetType == "" {
		if e.Filter == "" && e.CrowdId == 0 {
			return true
		}

		if e.Filter == "" && e.CrowdId != 0 {
			if _, found := e.crowdUserMap[experimentContext.Uid]; found {
				return true
			}
		}

		if e.diversionBucket != nil {
			return e.diversionBucket.Match(experimentContext)
		}

		return false

	} else {
		switch e.CrowdTargetType {
		case common.CrowdTargetType_ALL:
			return true
		case common.CrowdTargetType_Filter:
			if e.diversionBucket != nil {
				return e.diversionBucket.Match(experimentContext)
			}
		case common.CrowdTargetType_CrowdId:
			if _, found := e.crowdUserMap[experimentContext.Uid]; found {
				return true
			}
		case common.CrowdTargetType_Random:
			if e.diversionBucket != nil {
				return e.diversionBucket.Match(experimentContext)
			}

		}

		return false
	}

}