@@ -2,6 +2,7 @@ package stats
22
33import (
44 "testing"
5+ "time"
56
67 "github.com/stretchr/testify/assert"
78 "github.com/stretchr/testify/require"
@@ -12,3 +13,130 @@ func TestTokens_Counts(t *testing.T) {
1213 require .NoError (t , err , "Expected to create tokens without error" )
1314 assert .Equal (t , 3 , tokens )
1415}
16+
17+ func TestStats_Add_Success (t * testing.T ) {
18+ s1 := & Stats {
19+ Name : "Stats1" ,
20+ llmreq : []time.Duration {time .Millisecond , 2 * time .Millisecond },
21+ llmreqtokens : 10 ,
22+ llmresptokens : 15 ,
23+ llmreqbytes : 100 ,
24+ llmrespbytes : 200 ,
25+ a2areqs : []time.Duration {3 * time .Millisecond },
26+ a2areqtokens : 5 ,
27+ a2aresptokens : 8 ,
28+ a2areqbytes : 50 ,
29+ a2arespbytes : 80 ,
30+ }
31+ s2 := & Stats {
32+ Name : "Stats2" ,
33+ llmreq : []time.Duration {500 * time .Microsecond },
34+ llmreqtokens : 20 ,
35+ llmresptokens : 25 ,
36+ llmreqbytes : 300 ,
37+ llmrespbytes : 400 ,
38+ a2areqs : []time.Duration {4 * time .Millisecond },
39+ a2areqtokens : 15 ,
40+ a2aresptokens : 18 ,
41+ a2areqbytes : 60 ,
42+ a2arespbytes : 90 ,
43+ }
44+ combined := s1 .Add (s2 )
45+ require .NotNil (t , combined )
46+ assert .Equal (t , "Stats1 + Stats2" , combined .Name )
47+ assert .Equal (t , []time.Duration {time .Millisecond , 2 * time .Millisecond , 500 * time .Microsecond }, combined .llmreq )
48+ assert .Equal (t , []time.Duration {3 * time .Millisecond , 4 * time .Millisecond }, combined .a2areqs )
49+ assert .Equal (t , 30 , combined .llmreqtokens )
50+ assert .Equal (t , 40 , combined .llmresptokens )
51+ assert .Equal (t , 400 , combined .llmreqbytes )
52+ assert .Equal (t , 600 , combined .llmrespbytes )
53+ assert .Equal (t , 20 , combined .a2areqtokens )
54+ assert .Equal (t , 26 , combined .a2aresptokens )
55+ assert .Equal (t , 110 , combined .a2areqbytes )
56+ assert .Equal (t , 170 , combined .a2arespbytes )
57+ }
58+
59+ func TestStats_Add_EmptyOther (t * testing.T ) {
60+ s := & Stats {
61+ Name : "Stats1" ,
62+ llmreq : []time.Duration {time .Millisecond },
63+ llmreqtokens : 10 ,
64+ llmresptokens : 15 ,
65+ llmreqbytes : 100 ,
66+ llmrespbytes : 200 ,
67+ a2areqs : []time.Duration {2 * time .Millisecond },
68+ a2areqtokens : 5 ,
69+ a2aresptokens : 8 ,
70+ a2areqbytes : 50 ,
71+ a2arespbytes : 80 ,
72+ }
73+ empty := & Stats {}
74+
75+ combined := s .Add (empty )
76+
77+ require .NotNil (t , combined )
78+ assert .Equal (t , "Stats1 + " , combined .Name )
79+ assert .Equal (t , []time.Duration {time .Millisecond }, combined .llmreq )
80+ assert .Equal (t , []time.Duration {2 * time .Millisecond }, combined .a2areqs )
81+ assert .Equal (t , 10 , combined .llmreqtokens )
82+ assert .Equal (t , 15 , combined .llmresptokens )
83+ assert .Equal (t , 100 , combined .llmreqbytes )
84+ assert .Equal (t , 200 , combined .llmrespbytes )
85+ assert .Equal (t , 5 , combined .a2areqtokens )
86+ assert .Equal (t , 8 , combined .a2aresptokens )
87+ assert .Equal (t , 50 , combined .a2areqbytes )
88+ assert .Equal (t , 80 , combined .a2arespbytes )
89+ }
90+
91+ func TestStats_Add_EmptySelf (t * testing.T ) {
92+ empty := & Stats {}
93+ s := & Stats {
94+ Name : "Stats2" ,
95+ llmreq : []time.Duration {500 * time .Microsecond },
96+ llmreqtokens : 20 ,
97+ llmresptokens : 25 ,
98+ llmreqbytes : 300 ,
99+ llmrespbytes : 400 ,
100+ a2areqs : []time.Duration {4 * time .Millisecond },
101+ a2areqtokens : 15 ,
102+ a2aresptokens : 18 ,
103+ a2areqbytes : 60 ,
104+ a2arespbytes : 90 ,
105+ }
106+
107+ combined := empty .Add (s )
108+
109+ require .NotNil (t , combined )
110+ assert .Equal (t , " + Stats2" , combined .Name )
111+ assert .Equal (t , []time.Duration {500 * time .Microsecond }, combined .llmreq )
112+ assert .Equal (t , []time.Duration {4 * time .Millisecond }, combined .a2areqs )
113+ assert .Equal (t , 20 , combined .llmreqtokens )
114+ assert .Equal (t , 25 , combined .llmresptokens )
115+ assert .Equal (t , 300 , combined .llmreqbytes )
116+ assert .Equal (t , 400 , combined .llmrespbytes )
117+ assert .Equal (t , 15 , combined .a2areqtokens )
118+ assert .Equal (t , 18 , combined .a2aresptokens )
119+ assert .Equal (t , 60 , combined .a2areqbytes )
120+ assert .Equal (t , 90 , combined .a2arespbytes )
121+ }
122+
123+ func TestStats_Add_BothEmpty (t * testing.T ) {
124+ empty1 := & Stats {}
125+ empty2 := & Stats {}
126+
127+ combined := empty1 .Add (empty2 )
128+
129+ combined .Name = "total"
130+ require .NotNil (t , combined )
131+ assert .Equal (t , "total" , combined .Name )
132+ assert .Empty (t , combined .llmreq )
133+ assert .Empty (t , combined .a2areqs )
134+ assert .Equal (t , 0 , combined .llmreqtokens )
135+ assert .Equal (t , 0 , combined .llmresptokens )
136+ assert .Equal (t , 0 , combined .llmreqbytes )
137+ assert .Equal (t , 0 , combined .llmrespbytes )
138+ assert .Equal (t , 0 , combined .a2areqtokens )
139+ assert .Equal (t , 0 , combined .a2aresptokens )
140+ assert .Equal (t , 0 , combined .a2areqbytes )
141+ assert .Equal (t , 0 , combined .a2arespbytes )
142+ }
0 commit comments