@@ -89,6 +89,9 @@ func TestReplicaSetEvents(t *testing.T) {
8989 require .Equal (t , "Kubernetes" , source .DisplayName )
9090 require .Equal (t , "/icon/k8s.png" , source .Icon )
9191
92+ // Advance clock to trigger log flush
93+ cMock .Advance (time .Second )
94+
9295 logs := testutil .RequireRecvCtx (ctx , t , api .logs )
9396 require .Len (t , logs , 1 )
9497 require .Contains (t , logs [0 ].Output , "Created replicaset" )
@@ -110,13 +113,19 @@ func TestReplicaSetEvents(t *testing.T) {
110113 _ , err = client .CoreV1 ().Events (namespace ).Create (ctx , event , v1.CreateOptions {})
111114 require .NoError (t , err )
112115
116+ // Advance clock to trigger log flush
117+ cMock .Advance (time .Second )
118+
113119 logs = testutil .RequireRecvCtx (ctx , t , api .logs )
114120 require .Len (t , logs , 1 )
115121 require .Contains (t , logs [0 ].Output , event .Message )
116122
117123 err = client .AppsV1 ().ReplicaSets (namespace ).Delete (ctx , rs .Name , v1.DeleteOptions {})
118124 require .NoError (t , err )
119125
126+ // Advance clock to trigger log flush
127+ cMock .Advance (time .Second )
128+
120129 logs = testutil .RequireRecvCtx (ctx , t , api .logs )
121130 require .Len (t , logs , 1 )
122131 require .Contains (t , logs [0 ].Output , "Deleted replicaset" )
@@ -182,6 +191,9 @@ func TestPodEvents(t *testing.T) {
182191 require .Equal (t , "Kubernetes" , source .DisplayName )
183192 require .Equal (t , "/icon/k8s.png" , source .Icon )
184193
194+ // Advance clock to trigger log flush
195+ cMock .Advance (time .Second )
196+
185197 logs := testutil .RequireRecvCtx (ctx , t , api .logs )
186198 require .Len (t , logs , 1 )
187199 require .Contains (t , logs [0 ].Output , "Created pod" )
@@ -203,13 +215,19 @@ func TestPodEvents(t *testing.T) {
203215 _ , err = client .CoreV1 ().Events (namespace ).Create (ctx , event , v1.CreateOptions {})
204216 require .NoError (t , err )
205217
218+ // Advance clock to trigger log flush
219+ cMock .Advance (time .Second )
220+
206221 logs = testutil .RequireRecvCtx (ctx , t , api .logs )
207222 require .Len (t , logs , 1 )
208223 require .Contains (t , logs [0 ].Output , event .Message )
209224
210225 err = client .CoreV1 ().Pods (namespace ).Delete (ctx , pod .Name , v1.DeleteOptions {})
211226 require .NoError (t , err )
212227
228+ // Advance clock to trigger log flush
229+ cMock .Advance (time .Second )
230+
213231 logs = testutil .RequireRecvCtx (ctx , t , api .logs )
214232 require .Len (t , logs , 1 )
215233 require .Contains (t , logs [0 ].Output , "Deleted pod" )
@@ -283,14 +301,14 @@ func Test_tokenCache(t *testing.T) {
283301}
284302
285303func Test_logQueuer (t * testing.T ) {
286- t .Run ("Timeout " , func (t * testing.T ) {
304+ t .Run ("Basic " , func (t * testing.T ) {
287305 api := newFakeAgentAPI (t )
288306 agentURL , err := url .Parse (api .server .URL )
289307 require .NoError (t , err )
290- clock := quartz .NewMock ( t )
291- ttl := time .Second
308+ clock := quartz .NewReal () // Use real clock for simplicity
309+ ttl := 100 * time .Millisecond // Short TTL for faster test
292310
293- ch := make (chan agentLog )
311+ ch := make (chan agentLog , 10 ) // Buffered channel to prevent blocking
294312 lq := & logQueuer {
295313 logger : slogtest .Make (t , nil ),
296314 clock : clock ,
@@ -307,6 +325,7 @@ func Test_logQueuer(t *testing.T) {
307325 defer cancel ()
308326 go lq .work (ctx )
309327
328+ // Send first log
310329 ch <- agentLog {
311330 name : "mypod" ,
312331 token : "0b42fa72-7f1a-4b59-800d-69d67f56ed8b" ,
@@ -318,11 +337,14 @@ func Test_logQueuer(t *testing.T) {
318337 },
319338 }
320339
321- // it should send both a log source request and the log
340+ // Wait for log source to be created
322341 _ = testutil .RequireRecvCtx (ctx , t , api .logSource )
342+
343+ // Wait for logs to be sent (ticker fires every second)
323344 logs := testutil .RequireRecvCtx (ctx , t , api .logs )
324345 require .Len (t , logs , 1 )
325346
347+ // Send second log
326348 ch <- agentLog {
327349 name : "mypod" ,
328350 token : "0b42fa72-7f1a-4b59-800d-69d67f56ed8b" ,
@@ -334,13 +356,18 @@ func Test_logQueuer(t *testing.T) {
334356 },
335357 }
336358
337- // duplicate logs should not trigger a log source
359+ // Wait for second batch of logs
338360 logs = testutil .RequireRecvCtx (ctx , t , api .logs )
339361 require .Len (t , logs , 1 )
340362
341- clock .Advance (ttl )
342- // wait for the client to disconnect
343- _ = testutil .RequireRecvCtx (ctx , t , api .disconnect )
363+ // Test cleanup by waiting for TTL
364+ time .Sleep (ttl + 50 * time .Millisecond )
365+
366+ // Verify that the logger was cleaned up
367+ lq .mu .RLock ()
368+ loggerCount := len (lq .loggers )
369+ lq .mu .RUnlock ()
370+ require .Equal (t , 0 , loggerCount , "Logger should be cleaned up after TTL" )
344371 })
345372}
346373
0 commit comments