17
17
register_statistics ,
18
18
statistics_dict ,
19
19
)
20
+ from comps .cores .mega .base_statistics import collect_all_statistics
20
21
22
+ SVC1 = "opea_service@s1_add"
23
+ SVC2 = "open_service@test"
21
24
25
+
26
+ @register_statistics (names = [SVC1 ])
27
+ @register_statistics (names = [SVC2 ])
22
28
@register_microservice (name = "s1" , host = "0.0.0.0" , port = 8083 , endpoint = "/v1/add" )
23
- @register_statistics (names = ["opea_service@s1_add" ])
24
29
async def s1_add (request : TextDoc ) -> TextDoc :
25
30
start = time .time ()
26
31
time .sleep (5 )
27
32
req = request .model_dump_json ()
28
33
req_dict = json .loads (req )
29
34
text = req_dict ["text" ]
30
35
text += "opea"
31
- statistics_dict ["opea_service@s1_add" ].append_latency (time .time () - start , None )
36
+ statistics_dict [SVC1 ].append_latency (time .time () - start , None )
32
37
return {"text" : text }
33
38
34
39
@@ -49,14 +54,45 @@ async def test_base_statistics(self):
49
54
for _ in range (2 ):
50
55
task1 = asyncio .create_task (self .service_builder .schedule (initial_inputs = {"text" : "hello, " }))
51
56
await asyncio .gather (task1 )
52
- result_dict1 , _ = task1 .result ()
57
+ _result_dict1 , _ = task1 .result ()
53
58
54
59
response = requests .get ("http://localhost:8083/v1/statistics" )
55
60
res = response .json ()
56
- p50 = res ["opea_service@s1_add" ]["p50_latency" ]
57
- p99 = res ["opea_service@s1_add" ]["p99_latency" ]
61
+ p50 = res [SVC1 ]["p50_latency" ]
62
+ p99 = res [SVC1 ]["p99_latency" ]
58
63
self .assertEqual (int (p50 ), int (p99 ))
59
64
60
65
66
+ class TestBaseStatisticsLocal (unittest .TestCase ):
67
+ def test_stats (self ):
68
+ stats = statistics_dict [SVC2 ]
69
+
70
+ stats .append_latency (3 )
71
+ res = collect_all_statistics ()
72
+ avg = res [SVC2 ]["average_latency" ]
73
+ self .assertIsNotNone (avg )
74
+ p99 = res [SVC2 ]["p99_latency" ]
75
+ self .assertEqual (int (p99 ), int (avg ))
76
+ p50 = res [SVC2 ]["p50_latency" ]
77
+ self .assertEqual (int (p99 ), int (p50 ))
78
+ self .assertIsNone (res [SVC2 ]["p50_latency_first_token" ])
79
+
80
+ stats .append_latency (2 , 1 )
81
+ res = collect_all_statistics ()
82
+ avg = res [SVC2 ]["average_latency_first_token" ]
83
+ self .assertIsNotNone (avg )
84
+ p99 = res [SVC2 ]["p99_latency_first_token" ]
85
+ self .assertEqual (int (p99 ), int (avg ))
86
+ p50 = res [SVC2 ]["p50_latency_first_token" ]
87
+ self .assertEqual (int (p99 ), int (p50 ))
88
+
89
+ stats .append_latency (1 )
90
+ res = collect_all_statistics ()
91
+ p50 = res [SVC2 ]["p50_latency" ]
92
+ avg = res [SVC2 ]["average_latency" ]
93
+ self .assertEqual (int (avg ), int (p50 ))
94
+ self .assertEqual (int (p50 ), 2 )
95
+
96
+
61
97
if __name__ == "__main__" :
62
98
unittest .main ()
0 commit comments