Skip to content

Commit 101013a

Browse files
aepflichrfwow
andauthored
test: reduce complexity in tests (#1795)
Signed-off-by: Simon Schrottner <[email protected]> Co-authored-by: chrfwow <[email protected]>
1 parent bf3f722 commit 101013a

File tree

5 files changed

+288
-548
lines changed

5 files changed

+288
-548
lines changed

core/pkg/evaluator/fractional_test.go

Lines changed: 65 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,12 @@ func TestFractionalEvaluation(t *testing.T) {
1515
var sources = []string{source}
1616
ctx := context.Background()
1717

18-
commonFlags := Flags{
19-
Flags: map[string]model.Flag{
20-
"headerColor": {
21-
State: "ENABLED",
22-
DefaultVariant: "red",
23-
Variants: map[string]any{
24-
"red": "#FF0000",
25-
"blue": "#0000FF",
26-
"green": "#00FF00",
27-
"yellow": "#FFFF00",
28-
},
29-
Targeting: []byte(`{
18+
commonFlags := map[string]model.Flag{
19+
"headerColor": {
20+
State: "ENABLED",
21+
DefaultVariant: "red",
22+
Variants: colorVariants,
23+
Targeting: []byte(`{
3024
"if": [
3125
{
3226
"in": ["@faas.com", {
@@ -56,17 +50,12 @@ func TestFractionalEvaluation(t *testing.T) {
5650
}, null
5751
]
5852
}`),
59-
},
60-
"customSeededHeaderColor": {
61-
State: "ENABLED",
62-
DefaultVariant: "red",
63-
Variants: map[string]any{
64-
"red": "#FF0000",
65-
"blue": "#0000FF",
66-
"green": "#00FF00",
67-
"yellow": "#FFFF00",
68-
},
69-
Targeting: []byte(`{
53+
},
54+
"customSeededHeaderColor": {
55+
State: "ENABLED",
56+
DefaultVariant: "red",
57+
Variants: colorVariants,
58+
Targeting: []byte(`{
7059
"if": [
7160
{
7261
"in": ["@faas.com", {
@@ -84,12 +73,11 @@ func TestFractionalEvaluation(t *testing.T) {
8473
}, null
8574
]
8675
}`),
87-
},
8876
},
8977
}
9078

9179
tests := map[string]struct {
92-
flags Flags
80+
flags map[string]model.Flag
9381
flagKey string
9482
context map[string]any
9583
expectedValue string
@@ -178,18 +166,12 @@ func TestFractionalEvaluation(t *testing.T) {
178166
expectedReason: model.TargetingMatchReason,
179167
},
180168
"[email protected] with different flag key": {
181-
flags: Flags{
182-
Flags: map[string]model.Flag{
183-
"footerColor": {
184-
State: "ENABLED",
185-
DefaultVariant: "red",
186-
Variants: map[string]any{
187-
"red": "#FF0000",
188-
"blue": "#0000FF",
189-
"green": "#00FF00",
190-
"yellow": "#FFFF00",
191-
},
192-
Targeting: []byte(`{
169+
flags: map[string]model.Flag{
170+
"footerColor": {
171+
State: "ENABLED",
172+
DefaultVariant: "red",
173+
Variants: colorVariants,
174+
Targeting: []byte(`{
193175
"if": [
194176
{
195177
"in": ["@faas.com", {
@@ -219,7 +201,6 @@ func TestFractionalEvaluation(t *testing.T) {
219201
}, null
220202
]
221203
}`),
222-
},
223204
},
224205
},
225206
flagKey: "footerColor",
@@ -231,18 +212,12 @@ func TestFractionalEvaluation(t *testing.T) {
231212
expectedReason: model.TargetingMatchReason,
232213
},
233214
"non even split": {
234-
flags: Flags{
235-
Flags: map[string]model.Flag{
236-
"headerColor": {
237-
State: "ENABLED",
238-
DefaultVariant: "red",
239-
Variants: map[string]any{
240-
"red": "#FF0000",
241-
"blue": "#0000FF",
242-
"green": "#00FF00",
243-
"yellow": "#FFFF00",
244-
},
245-
Targeting: []byte(`{
215+
flags: map[string]model.Flag{
216+
"headerColor": {
217+
State: "ENABLED",
218+
DefaultVariant: "red",
219+
Variants: colorVariants,
220+
Targeting: []byte(`{
246221
"if": [
247222
{
248223
"in": ["@faas.com", {
@@ -268,7 +243,6 @@ func TestFractionalEvaluation(t *testing.T) {
268243
}, null
269244
]
270245
}`),
271-
},
272246
},
273247
},
274248
flagKey: "headerColor",
@@ -280,18 +254,12 @@ func TestFractionalEvaluation(t *testing.T) {
280254
expectedReason: model.TargetingMatchReason,
281255
},
282256
"fallback to default variant if no email provided": {
283-
flags: Flags{
284-
Flags: map[string]model.Flag{
285-
"headerColor": {
286-
State: "ENABLED",
287-
DefaultVariant: "red",
288-
Variants: map[string]any{
289-
"red": "#FF0000",
290-
"blue": "#0000FF",
291-
"green": "#00FF00",
292-
"yellow": "#FFFF00",
293-
},
294-
Targeting: []byte(`{
257+
flags: map[string]model.Flag{
258+
"headerColor": {
259+
State: "ENABLED",
260+
DefaultVariant: "red",
261+
Variants: colorVariants,
262+
Targeting: []byte(`{
295263
"fractional": [
296264
{"var": "email"},
297265
[
@@ -312,7 +280,6 @@ func TestFractionalEvaluation(t *testing.T) {
312280
]
313281
]
314282
}`),
315-
},
316283
},
317284
},
318285
flagKey: "headerColor",
@@ -322,18 +289,12 @@ func TestFractionalEvaluation(t *testing.T) {
322289
expectedReason: model.DefaultReason,
323290
},
324291
"get variant for non-percentage weight values": {
325-
flags: Flags{
326-
Flags: map[string]model.Flag{
327-
"headerColor": {
328-
State: "ENABLED",
329-
DefaultVariant: "red",
330-
Variants: map[string]any{
331-
"red": "#FF0000",
332-
"blue": "#0000FF",
333-
"green": "#00FF00",
334-
"yellow": "#FFFF00",
335-
},
336-
Targeting: []byte(`{
292+
flags: map[string]model.Flag{
293+
"headerColor": {
294+
State: "ENABLED",
295+
DefaultVariant: "red",
296+
Variants: colorVariants,
297+
Targeting: []byte(`{
337298
"fractional": [
338299
{"var": "email"},
339300
[
@@ -346,7 +307,6 @@ func TestFractionalEvaluation(t *testing.T) {
346307
]
347308
]
348309
}`),
349-
},
350310
},
351311
},
352312
flagKey: "headerColor",
@@ -358,18 +318,12 @@ func TestFractionalEvaluation(t *testing.T) {
358318
expectedReason: model.TargetingMatchReason,
359319
},
360320
"get variant for non-specified weight values": {
361-
flags: Flags{
362-
Flags: map[string]model.Flag{
363-
"headerColor": {
364-
State: "ENABLED",
365-
DefaultVariant: "red",
366-
Variants: map[string]any{
367-
"red": "#FF0000",
368-
"blue": "#0000FF",
369-
"green": "#00FF00",
370-
"yellow": "#FFFF00",
371-
},
372-
Targeting: []byte(`{
321+
flags: map[string]model.Flag{
322+
"headerColor": {
323+
State: "ENABLED",
324+
DefaultVariant: "red",
325+
Variants: colorVariants,
326+
Targeting: []byte(`{
373327
"fractional": [
374328
{"var": "email"},
375329
[
@@ -380,7 +334,6 @@ func TestFractionalEvaluation(t *testing.T) {
380334
]
381335
]
382336
}`),
383-
},
384337
},
385338
},
386339
flagKey: "headerColor",
@@ -392,18 +345,12 @@ func TestFractionalEvaluation(t *testing.T) {
392345
expectedReason: model.TargetingMatchReason,
393346
},
394347
"default to targetingKey if no bucket key provided": {
395-
flags: Flags{
396-
Flags: map[string]model.Flag{
397-
"headerColor": {
398-
State: "ENABLED",
399-
DefaultVariant: "red",
400-
Variants: map[string]any{
401-
"red": "#FF0000",
402-
"blue": "#0000FF",
403-
"green": "#00FF00",
404-
"yellow": "#FFFF00",
405-
},
406-
Targeting: []byte(`{
348+
flags: map[string]model.Flag{
349+
"headerColor": {
350+
State: "ENABLED",
351+
DefaultVariant: "red",
352+
Variants: colorVariants,
353+
Targeting: []byte(`{
407354
"fractional": [
408355
[
409356
"blue",
@@ -415,7 +362,6 @@ func TestFractionalEvaluation(t *testing.T) {
415362
]
416363
]
417364
}`),
418-
},
419365
},
420366
},
421367
flagKey: "headerColor",
@@ -427,24 +373,19 @@ func TestFractionalEvaluation(t *testing.T) {
427373
expectedReason: model.TargetingMatchReason,
428374
},
429375
"missing email - parser should ignore nil/missing custom variables and continue": {
430-
flags: Flags{
431-
Flags: map[string]model.Flag{
432-
"headerColor": {
433-
State: "ENABLED",
434-
DefaultVariant: "red",
435-
Variants: map[string]any{
436-
"red": "#FF0000",
437-
"blue": "#0000FF",
438-
},
439-
Targeting: []byte(
440-
`{
376+
flags: map[string]model.Flag{
377+
"headerColor": {
378+
State: "ENABLED",
379+
DefaultVariant: "red",
380+
Variants: colorVariants,
381+
Targeting: []byte(
382+
`{
441383
"fractional": [
442384
{"var": "email"},
443385
["red",50],
444386
["blue",50]
445387
]
446388
}`),
447-
},
448389
},
449390
},
450391
flagKey: "headerColor",
@@ -466,7 +407,7 @@ func TestFractionalEvaluation(t *testing.T) {
466407
}
467408

468409
je := NewJSON(log, s)
469-
je.store.Update(source, tt.flags.Flags, model.Metadata{})
410+
je.store.Update(source, tt.flags, model.Metadata{})
470411

471412
value, variant, reason, _, err := resolve[string](ctx, reqID, tt.flagKey, tt.context, je.evaluateVariant)
472413

@@ -497,18 +438,12 @@ func BenchmarkFractionalEvaluation(b *testing.B) {
497438
var sources = []string{source}
498439
ctx := context.Background()
499440

500-
flags := Flags{
501-
Flags: map[string]model.Flag{
502-
"headerColor": {
503-
State: "ENABLED",
504-
DefaultVariant: "red",
505-
Variants: map[string]any{
506-
"red": "#FF0000",
507-
"blue": "#0000FF",
508-
"green": "#00FF00",
509-
"yellow": "#FFFF00",
510-
},
511-
Targeting: []byte(`{
441+
flags := map[string]model.Flag{
442+
"headerColor": {
443+
State: "ENABLED",
444+
DefaultVariant: "red",
445+
Variants: colorVariants,
446+
Targeting: []byte(`{
512447
"if": [
513448
{
514449
"in": ["@faas.com", {
@@ -538,12 +473,11 @@ func BenchmarkFractionalEvaluation(b *testing.B) {
538473
}, null
539474
]
540475
}`),
541-
},
542476
},
543477
}
544478

545479
tests := map[string]struct {
546-
flags Flags
480+
flags map[string]model.Flag
547481
flagKey string
548482
context map[string]any
549483
expectedValue string
@@ -601,7 +535,7 @@ func BenchmarkFractionalEvaluation(b *testing.B) {
601535
b.Fatalf("NewStore failed: %v", err)
602536
}
603537
je := NewJSON(log, s)
604-
je.store.Update(source, tt.flags.Flags, model.Metadata{})
538+
je.store.Update(source, tt.flags, model.Metadata{})
605539

606540
for i := 0; i < b.N; i++ {
607541
value, variant, reason, _, err := resolve[string](

0 commit comments

Comments
 (0)