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
}
}