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