firstExperimentAssignment returns the deterministic first experiment assignment from exp, sorted by experiment name. It is used when callers need a stable single experiment/variant pair for provenance fields.
(exp *ExperimentData)
| 154 | // from exp, sorted by experiment name. It is used when callers need a stable |
| 155 | // single experiment/variant pair for provenance fields. |
| 156 | func firstExperimentAssignment(exp *ExperimentData) (name, variant string, ok bool) { |
| 157 | if exp == nil || len(exp.Assignments) == 0 { |
| 158 | return "", "", false |
| 159 | } |
| 160 | names := sliceutil.SortedKeys(exp.Assignments) |
| 161 | name = names[0] |
| 162 | return name, exp.Assignments[name], true |
| 163 | } |
| 164 | |
| 165 | // experimentMatchesFilter reports whether exp satisfies the given experiment/variant |
| 166 | // filter pair. Rules: |