Skip to content

Commit d272e36

Browse files
committed
updated tests
1 parent 606c22f commit d272e36

File tree

2 files changed

+118
-11
lines changed

2 files changed

+118
-11
lines changed

tests/models/test_splits.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class SplitTests(object):
6060
'configurations': {
6161
'on': '{"color": "blue", "size": 13}'
6262
},
63+
'sets': ['set1', 'set2']
6364
}
6465

6566
def test_from_raw(self):
@@ -79,6 +80,7 @@ def test_from_raw(self):
7980
assert len(parsed.conditions) == 2
8081
assert parsed.get_configurations_for('on') == '{"color": "blue", "size": 13}'
8182
assert parsed._configurations == {'on': '{"color": "blue", "size": 13}'}
83+
assert parsed.sets == {'set1', 'set2'}
8284

8385
def test_get_segment_names(self, mocker):
8486
"""Test fetching segment names."""
@@ -89,7 +91,6 @@ def test_get_segment_names(self, mocker):
8991
split1 = splits.Split( 'some_split', 123, False, 'off', 'user', 'ACTIVE', 123, [cond1, cond2])
9092
assert split1.get_segment_names() == ['segment%d' % i for i in range(1, 5)]
9193

92-
9394
def test_to_json(self):
9495
"""Test json serialization."""
9596
as_json = splits.from_raw(self.raw).to_json()
@@ -105,6 +106,7 @@ def test_to_json(self):
105106
assert as_json['defaultTreatment'] == 'off'
106107
assert as_json['algo'] == 2
107108
assert len(as_json['conditions']) == 2
109+
assert sorted(as_json['sets']) == ['set1', 'set2']
108110

109111
def test_to_split_view(self):
110112
"""Test SplitView creation."""
@@ -115,3 +117,4 @@ def test_to_split_view(self):
115117
assert as_split_view.killed == self.raw['killed']
116118
assert as_split_view.traffic_type == self.raw['trafficTypeName']
117119
assert set(as_split_view.treatments) == set(['on', 'off'])
120+
assert sorted(as_split_view.sets) == sorted(list(self.raw['sets']))

tests/models/test_telemetry_model.py

Lines changed: 114 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,17 @@ def test_method_latencies(self, mocker):
5656
assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
5757
elif method.value == 'treatments_with_config':
5858
assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
59+
elif method.value == 'treatments_by_flag_set':
60+
assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
61+
elif method.value == 'treatments_by_flag_sets':
62+
assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
63+
elif method.value == 'treatments_with_config_by_flag_set':
64+
assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
65+
elif method.value == 'treatments_with_config_by_flag_sets':
66+
assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
5967
elif method.value == 'track':
6068
assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50)] == 1)
69+
6170
method_latencies.add_latency(method, 50000000)
6271
if method.value == 'treatment':
6372
assert(method_latencies._treatment[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
@@ -67,6 +76,14 @@ def test_method_latencies(self, mocker):
6776
assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
6877
if method.value == 'treatments_with_config':
6978
assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
79+
elif method.value == 'treatments_by_flag_set':
80+
assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
81+
elif method.value == 'treatments_by_flag_sets':
82+
assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
83+
elif method.value == 'treatments_with_config_by_flag_set':
84+
assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
85+
elif method.value == 'treatments_with_config_by_flag_sets':
86+
assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
7087
if method.value == 'track':
7188
assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
7289

@@ -76,14 +93,30 @@ def test_method_latencies(self, mocker):
7693
assert(method_latencies._treatments == [0] * 23)
7794
assert(method_latencies._treatment_with_config == [0] * 23)
7895
assert(method_latencies._treatments_with_config == [0] * 23)
96+
assert(method_latencies._treatments_by_flag_set == [0] * 23)
97+
assert(method_latencies._treatments_by_flag_sets == [0] * 23)
98+
assert(method_latencies._treatments_with_config_by_flag_set == [0] * 23)
99+
assert(method_latencies._treatments_with_config_by_flag_sets == [0] * 23)
79100

80101
method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT, 10)
81102
[method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS, 20) for i in range(2)]
82103
method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, 50)
83104
method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, 20)
105+
[method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, 20) for i in range(3)]
106+
[method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, 20) for i in range(4)]
107+
[method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, 20) for i in range(5)]
108+
[method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, 20) for i in range(6)]
84109
method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TRACK, 20)
85110
latencies = method_latencies.pop_all()
86-
assert(latencies == {'methodLatencies': {'treatment': [1] + [0] * 22, 'treatments': [2] + [0] * 22, 'treatment_with_config': [1] + [0] * 22, 'treatments_with_config': [1] + [0] * 22, 'track': [1] + [0] * 22}})
111+
assert(latencies == {'methodLatencies': {'treatment': [1] + [0] * 22,
112+
'treatments': [2] + [0] * 22,
113+
'treatment_with_config': [1] + [0] * 22,
114+
'treatments_with_config': [1] + [0] * 22,
115+
'treatments_by_flag_set': [3] + [0] * 22,
116+
'treatments_by_flag_sets': [4] + [0] * 22,
117+
'treatments_with_config_by_flag_set': [5] + [0] * 22,
118+
'treatments_with_config_by_flag_sets': [6] + [0] * 22,
119+
'track': [1] + [0] * 22}})
87120

88121
def test_http_latencies(self, mocker):
89122
http_latencies = HTTPLatencies()
@@ -145,15 +178,31 @@ def test_method_exceptions(self, mocker):
145178
method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS)
146179
method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG)
147180
[method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG) for i in range(5)]
181+
[method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET) for i in range(6)]
182+
[method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS) for i in range(7)]
183+
[method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET) for i in range(8)]
184+
[method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS) for i in range(9)]
148185
[method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TRACK) for i in range(3)]
149186
exceptions = method_exception.pop_all()
150187

151188
assert(method_exception._treatment == 0)
152189
assert(method_exception._treatments == 0)
153190
assert(method_exception._treatment_with_config == 0)
154191
assert(method_exception._treatments_with_config == 0)
192+
assert(method_exception._treatments_by_flag_set == 0)
193+
assert(method_exception._treatments_by_flag_sets == 0)
194+
assert(method_exception._treatments_with_config_by_flag_set == 0)
195+
assert(method_exception._treatments_with_config_by_flag_sets == 0)
155196
assert(method_exception._track == 0)
156-
assert(exceptions == {'methodExceptions': {'treatment': 2, 'treatments': 1, 'treatment_with_config': 1, 'treatments_with_config': 5, 'track': 3}})
197+
assert(exceptions == {'methodExceptions': {'treatment': 2,
198+
'treatments': 1,
199+
'treatment_with_config': 1,
200+
'treatments_with_config': 5,
201+
'treatments_by_flag_set': 6,
202+
'treatments_by_flag_sets': 7,
203+
'treatments_with_config_by_flag_set': 8,
204+
'treatments_with_config_by_flag_sets': 9,
205+
'track': 3}})
157206

158207
def test_http_errors(self, mocker):
159208
http_error = HTTPErrors()
@@ -254,9 +303,10 @@ def test_telemetry_config(self):
254303
'impressionsRefreshRate': 60,
255304
'eventsPushRate': 60,
256305
'metricsRefreshRate': 10,
257-
'storageType': None
306+
'storageType': None,
307+
'flagSetsFilter': None
258308
}
259-
telemetry_config.record_config(config, {})
309+
telemetry_config.record_config(config, {}, 5, 2)
260310
assert(telemetry_config.get_stats() == {'oM': 0,
261311
'sT': telemetry_config._get_storage_type(config['operationMode'], config['storageType']),
262312
'sE': config['streamingEnabled'],
@@ -271,7 +321,9 @@ def test_telemetry_config(self):
271321
'nR': 0,
272322
'bT': 0,
273323
'aF': 0,
274-
'rF': 0}
324+
'rF': 0,
325+
'fsT': 5,
326+
'fsI': 2}
275327
)
276328

277329
telemetry_config.record_ready_time(10)
@@ -312,8 +364,17 @@ async def test_method_latencies(self, mocker):
312364
assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
313365
elif method.value == 'treatments_with_config':
314366
assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50)] == 1)
367+
elif method.value == 'treatments_by_flag_set':
368+
assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
369+
elif method.value == 'treatments_by_flag_sets':
370+
assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
371+
elif method.value == 'treatments_with_config_by_flag_set':
372+
assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50)] == 1)
373+
elif method.value == 'treatments_with_config_by_flag_sets':
374+
assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50)] == 1)
315375
elif method.value == 'track':
316376
assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50)] == 1)
377+
317378
await method_latencies.add_latency(method, 50000000)
318379
if method.value == 'treatment':
319380
assert(method_latencies._treatment[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
@@ -323,6 +384,14 @@ async def test_method_latencies(self, mocker):
323384
assert(method_latencies._treatment_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
324385
if method.value == 'treatments_with_config':
325386
assert(method_latencies._treatments_with_config[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
387+
elif method.value == 'treatments_by_flag_set':
388+
assert(method_latencies._treatments_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
389+
elif method.value == 'treatments_by_flag_sets':
390+
assert(method_latencies._treatments_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
391+
elif method.value == 'treatments_with_config_by_flag_set':
392+
assert(method_latencies._treatments_with_config_by_flag_set[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
393+
elif method.value == 'treatments_with_config_by_flag_sets':
394+
assert(method_latencies._treatments_with_config_by_flag_sets[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
326395
if method.value == 'track':
327396
assert(method_latencies._track[ModelTelemetry.get_latency_bucket_index(50000000)] == 1)
328397

@@ -332,14 +401,30 @@ async def test_method_latencies(self, mocker):
332401
assert(method_latencies._treatments == [0] * 23)
333402
assert(method_latencies._treatment_with_config == [0] * 23)
334403
assert(method_latencies._treatments_with_config == [0] * 23)
404+
assert(method_latencies._treatments_by_flag_set == [0] * 23)
405+
assert(method_latencies._treatments_by_flag_sets == [0] * 23)
406+
assert(method_latencies._treatments_with_config_by_flag_set == [0] * 23)
407+
assert(method_latencies._treatments_with_config_by_flag_sets == [0] * 23)
335408

336409
await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT, 10)
337410
[await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS, 20) for i in range(2)]
338411
await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG, 50)
339412
await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG, 20)
413+
[await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET, 20) for i in range(3)]
414+
[await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS, 20) for i in range(4)]
415+
[await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET, 20) for i in range(5)]
416+
[await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS, 20) for i in range(6)]
340417
await method_latencies.add_latency(ModelTelemetry.MethodExceptionsAndLatencies.TRACK, 20)
341418
latencies = await method_latencies.pop_all()
342-
assert(latencies == {'methodLatencies': {'treatment': [1] + [0] * 22, 'treatments': [2] + [0] * 22, 'treatment_with_config': [1] + [0] * 22, 'treatments_with_config': [1] + [0] * 22, 'track': [1] + [0] * 22}})
419+
assert(latencies == {'methodLatencies': {'treatment': [1] + [0] * 22,
420+
'treatments': [2] + [0] * 22,
421+
'treatment_with_config': [1] + [0] * 22,
422+
'treatments_with_config': [1] + [0] * 22,
423+
'treatments_by_flag_set': [3] + [0] * 22,
424+
'treatments_by_flag_sets': [4] + [0] * 22,
425+
'treatments_with_config_by_flag_set': [5] + [0] * 22,
426+
'treatments_with_config_by_flag_sets': [6] + [0] * 22,
427+
'track': [1] + [0] * 22}})
343428

344429
@pytest.mark.asyncio
345430
async def test_http_latencies(self, mocker):
@@ -403,15 +488,31 @@ async def test_method_exceptions(self, mocker):
403488
await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS)
404489
await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENT_WITH_CONFIG)
405490
[await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG) for i in range(5)]
491+
[await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SET) for i in range(6)]
492+
[await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_BY_FLAG_SETS) for i in range(7)]
493+
[await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SET) for i in range(8)]
494+
[await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TREATMENTS_WITH_CONFIG_BY_FLAG_SETS) for i in range(9)]
406495
[await method_exception.add_exception(ModelTelemetry.MethodExceptionsAndLatencies.TRACK) for i in range(3)]
407496
exceptions = await method_exception.pop_all()
408497

409498
assert(method_exception._treatment == 0)
410499
assert(method_exception._treatments == 0)
411500
assert(method_exception._treatment_with_config == 0)
412501
assert(method_exception._treatments_with_config == 0)
502+
assert(method_exception._treatments_by_flag_set == 0)
503+
assert(method_exception._treatments_by_flag_sets == 0)
504+
assert(method_exception._treatments_with_config_by_flag_set == 0)
505+
assert(method_exception._treatments_with_config_by_flag_sets == 0)
413506
assert(method_exception._track == 0)
414-
assert(exceptions == {'methodExceptions': {'treatment': 2, 'treatments': 1, 'treatment_with_config': 1, 'treatments_with_config': 5, 'track': 3}})
507+
assert(exceptions == {'methodExceptions': {'treatment': 2,
508+
'treatments': 1,
509+
'treatment_with_config': 1,
510+
'treatments_with_config': 5,
511+
'treatments_by_flag_set': 6,
512+
'treatments_by_flag_sets': 7,
513+
'treatments_with_config_by_flag_set': 8,
514+
'treatments_with_config_by_flag_sets': 9,
515+
'track': 3}})
415516

416517
@pytest.mark.asyncio
417518
async def test_http_errors(self, mocker):
@@ -511,9 +612,10 @@ async def test_telemetry_config(self):
511612
'impressionsRefreshRate': 60,
512613
'eventsPushRate': 60,
513614
'metricsRefreshRate': 10,
514-
'storageType': None
615+
'storageType': None,
616+
'flagSetsFilter': None
515617
}
516-
await telemetry_config.record_config(config, {})
618+
await telemetry_config.record_config(config, {}, 5, 2)
517619
assert(await telemetry_config.get_stats() == {'oM': 0,
518620
'sT': telemetry_config._get_storage_type(config['operationMode'], config['storageType']),
519621
'sE': config['streamingEnabled'],
@@ -528,7 +630,9 @@ async def test_telemetry_config(self):
528630
'nR': 0,
529631
'bT': 0,
530632
'aF': 0,
531-
'rF': 0}
633+
'rF': 0,
634+
'fsT': 5,
635+
'fsI': 2}
532636
)
533637

534638
await telemetry_config.record_ready_time(10)

0 commit comments

Comments
 (0)