11"""Telemetry model test module."""
22import os
3+ import random
34
45from splitio .models .telemetry import StorageType , OperationMode , MethodLatencies , MethodExceptions , \
56 HTTPLatencies , HTTPErrors , LastSynchronization , TelemetryCounters , TelemetryConfig , \
67 StreamingEvent , StreamingEvents , RefreshRates , URLOverrides
78
9+ import splitio .models .telemetry as ModelTelemetry
10+
811class TelemetryModelTests (object ):
912 """Telemetry model test cases."""
1013
@@ -15,92 +18,71 @@ def test_storage_type_and_operation_mode(self, mocker):
1518 assert (OperationMode .MEMEORY == 'in-memory' )
1619 assert (OperationMode .REDIS == 'redis-consumer' )
1720
18- def test_nethod_latencies (self , mocker ):
21+ def test_method_latencies (self , mocker ):
1922 method_latencies = MethodLatencies ()
20- method_latencies .add_latency ('treatment' , 10 )
21- assert (method_latencies ._treatment == [10 ])
22- [method_latencies .add_latency ('treatment' , 10 ) for i in range (25 )]
23- assert (len (method_latencies ._treatment ) == 23 )
24-
25- [method_latencies .add_latency ('treatments' , i ) for i in [20 , 30 ]]
26- assert (method_latencies ._treatments == [20 , 30 ])
27- [method_latencies .add_latency ('treatments' , 10 ) for i in range (25 )]
28- assert (len (method_latencies ._treatments ) == 23 )
29-
30- method_latencies .add_latency ('treatmentWithConfig' , 50 )
31- assert (method_latencies ._treatment_with_config == [50 ])
32- [method_latencies .add_latency ('treatmentWithConfig' , 10 ) for i in range (25 )]
33- assert (len (method_latencies ._treatment_with_config ) == 23 )
3423
35- method_latencies .add_latency ('treatmentsWithConfig' , 20 )
36- assert (method_latencies ._treatments_with_config == [20 ])
37- [method_latencies .add_latency ('treatmentsWithConfig' , 10 ) for i in range (25 )]
38- assert (len (method_latencies ._treatments_with_config ) == 23 )
39-
40- method_latencies .add_latency ('track' , 20 )
41- assert (method_latencies ._track == [20 ])
42- [method_latencies .add_latency ('track' , 10 ) for i in range (25 )]
43- assert (len (method_latencies ._track ) == 23 )
24+ for method in ['treatment' , 'treatments' , 'treatmentWithConfig' , 'treatmentsWithConfig' , 'track' ]:
25+ method_latencies .add_latency (method , 50 )
26+ assert (self ._get_method_latency (method , method_latencies )[ModelTelemetry .get_latency_bucket_index (50 )] == 1 )
27+ method_latencies .add_latency (method , 50000000 )
28+ assert (self ._get_method_latency (method , method_latencies )[ModelTelemetry .get_latency_bucket_index (50000000 )] == 1 )
29+ for j in range (10 ):
30+ latency = random .randint (1001 , 4987885 )
31+ current_count = self ._get_method_latency (method , method_latencies )[ModelTelemetry .get_latency_bucket_index (latency )]
32+ [method_latencies .add_latency (method , latency ) for i in range (2 )]
33+ assert (self ._get_method_latency (method , method_latencies )[ModelTelemetry .get_latency_bucket_index (latency )] == 2 + current_count )
4434
4535 method_latencies .pop_all ()
46- assert (method_latencies ._track == [] )
47- assert (method_latencies ._treatment == [] )
48- assert (method_latencies ._treatments == [] )
49- assert (method_latencies ._treatment_with_config == [] )
50- assert (method_latencies ._treatments_with_config == [] )
36+ assert (method_latencies ._track == [0 ] * 23 )
37+ assert (method_latencies ._treatment == [0 ] * 23 )
38+ assert (method_latencies ._treatments == [0 ] * 23 )
39+ assert (method_latencies ._treatment_with_config == [0 ] * 23 )
40+ assert (method_latencies ._treatments_with_config == [0 ] * 23 )
5141
5242 method_latencies .add_latency ('treatment' , 10 )
53- method_latencies .add_latency ('treatments' , 20 )
54- method_latencies .add_latency ('treatments' , 30 )
43+ [method_latencies .add_latency ('treatments' , 20 ) for i in range (2 )]
5544 method_latencies .add_latency ('treatmentWithConfig' , 50 )
5645 method_latencies .add_latency ('treatmentsWithConfig' , 20 )
5746 method_latencies .add_latency ('track' , 20 )
58- method_latencies .add_latency ('track' , 60 )
5947 latencies = method_latencies .pop_all ()
60- assert (latencies == {'methodLatencies' : {'treatment' : [10 ], 'treatments' : [20 , 30 ], 'treatmentWithConfig' : [50 ], 'treatmentsWithConfig' : [20 ], 'track' : [20 , 60 ]}})
48+ assert (latencies == {'methodLatencies' : {'treatment' : [1 ] + [0 ] * 22 , 'treatments' : [2 ] + [0 ] * 22 , 'treatmentWithConfig' : [1 ] + [0 ] * 22 , 'treatmentsWithConfig' : [1 ] + [0 ] * 22 , 'track' : [1 ] + [0 ] * 22 }})
49+
50+ def _get_method_latency (self , resource , storage ):
51+ if resource == ModelTelemetry .TREATMENT :
52+ return storage ._treatment
53+ elif resource == ModelTelemetry .TREATMENTS :
54+ return storage ._treatments
55+ elif resource == ModelTelemetry .TREATMENT_WITH_CONFIG :
56+ return storage ._treatment_with_config
57+ elif resource == ModelTelemetry .TREATMENTS_WITH_CONFIG :
58+ return storage ._treatments_with_config
59+ elif resource == ModelTelemetry .TRACK :
60+ return storage ._track
61+ else :
62+ return
6163
6264 def test_http_latencies (self , mocker ):
6365 http_latencies = HTTPLatencies ()
6466
65- http_latencies .add_latency ('split' , 10 )
66- assert (http_latencies ._split == [10 ])
67- [http_latencies .add_latency ('split' , 10 ) for i in range (25 )]
68- assert (len (http_latencies ._split ) == 23 )
69-
70- http_latencies .add_latency ('segment' , 10 )
71- assert (http_latencies ._segment == [10 ])
72- [http_latencies .add_latency ('segment' , 10 ) for i in range (25 )]
73- assert (len (http_latencies ._segment ) == 23 )
74-
75- http_latencies .add_latency ('impression' , 10 )
76- assert (http_latencies ._impression == [10 ])
77- [http_latencies .add_latency ('impression' , 10 ) for i in range (25 )]
78- assert (len (http_latencies ._impression ) == 23 )
79-
80- http_latencies .add_latency ('impressionCount' , 10 )
81- assert (http_latencies ._impression_count == [10 ])
82- [http_latencies .add_latency ('impressionCount' , 10 ) for i in range (25 )]
83- assert (len (http_latencies ._impression_count ) == 23 )
84-
85- http_latencies .add_latency ('telemetry' , 10 )
86- assert (http_latencies ._telemetry == [10 ])
87- [http_latencies .add_latency ('telemetry' , 10 ) for i in range (25 )]
88- assert (len (http_latencies ._telemetry ) == 23 )
89-
90- http_latencies .add_latency ('token' , 10 )
91- assert (http_latencies ._token == [10 ])
92- [http_latencies .add_latency ('token' , 10 ) for i in range (25 )]
93- assert (len (http_latencies ._token ) == 23 )
67+ for resource in ['split' , 'segment' , 'impression' , 'impressionCount' , 'event' , 'telemetry' , 'token' ]:
68+ http_latencies .add_latency (resource , 50 )
69+ assert (self ._get_http_latency (resource , http_latencies )[ModelTelemetry .get_latency_bucket_index (50 )] == 1 )
70+ http_latencies .add_latency (resource , 50000000 )
71+ assert (self ._get_http_latency (resource , http_latencies )[ModelTelemetry .get_latency_bucket_index (50000000 )] == 1 )
72+ for j in range (10 ):
73+ latency = random .randint (1001 , 4987885 )
74+ current_count = self ._get_http_latency (resource , http_latencies )[ModelTelemetry .get_latency_bucket_index (latency )]
75+ [http_latencies .add_latency (resource , latency ) for i in range (2 )]
76+ assert (self ._get_http_latency (resource , http_latencies )[ModelTelemetry .get_latency_bucket_index (latency )] == 2 + current_count )
9477
9578 http_latencies .pop_all ()
96- assert (http_latencies ._event == [])
97- assert (http_latencies ._impression == [])
98- assert (http_latencies ._impression_count == [])
99- assert (http_latencies ._segment == [])
100- assert (http_latencies ._split == [])
101- assert (http_latencies ._telemetry == [])
102- assert (http_latencies ._token == [])
103-
79+ assert (http_latencies ._event == [0 ] * 23 )
80+ assert (http_latencies ._impression == [0 ] * 23 )
81+ assert (http_latencies ._impression_count == [0 ] * 23 )
82+ assert (http_latencies ._segment == [0 ] * 23 )
83+ assert (http_latencies ._split == [0 ] * 23 )
84+ assert (http_latencies ._telemetry == [0 ] * 23 )
85+ assert (http_latencies ._token == [0 ] * 23 )
10486
10587 http_latencies .add_latency ('split' , 10 )
10688 [http_latencies .add_latency ('impression' , i ) for i in [10 , 20 ]]
@@ -110,7 +92,25 @@ def test_http_latencies(self, mocker):
11092 http_latencies .add_latency ('telemetry' , 70 )
11193 [http_latencies .add_latency ('token' , i ) for i in [10 , 15 ]]
11294 latencies = http_latencies .pop_all ()
113- assert (latencies == {'httpLatencies' : {'split' : [10 ], 'segment' : [40 ], 'impression' : [10 , 20 ], 'impressionCount' : [60 ], 'event' : [90 ], 'telemetry' : [70 ], 'token' : [10 , 15 ]}})
95+ assert (latencies == {'httpLatencies' : {'split' : [1 ] + [0 ] * 22 , 'segment' : [1 ] + [0 ] * 22 , 'impression' : [2 ] + [0 ] * 22 , 'impressionCount' : [1 ] + [0 ] * 22 , 'event' : [1 ] + [0 ] * 22 , 'telemetry' : [1 ] + [0 ] * 22 , 'token' : [2 ] + [0 ] * 22 }})
96+
97+ def _get_http_latency (self , resource , storage ):
98+ if resource == ModelTelemetry .SPLIT :
99+ return storage ._split
100+ elif resource == ModelTelemetry .SEGMENT :
101+ return storage ._segment
102+ elif resource == ModelTelemetry .IMPRESSION :
103+ return storage ._impression
104+ elif resource == ModelTelemetry .IMPRESSION_COUNT :
105+ return storage ._impression_count
106+ elif resource == ModelTelemetry .EVENT :
107+ return storage ._event
108+ elif resource == ModelTelemetry .TELEMETRY :
109+ return storage ._telemetry
110+ elif resource == ModelTelemetry .TOKEN :
111+ return storage ._token
112+ else :
113+ return
114114
115115 def test_method_exceptions (self , mocker ):
116116 method_exception = MethodExceptions ()
0 commit comments