@@ -45,14 +45,14 @@ func TestReplicaSetEvents(t *testing.T) {
45
45
sourceUUID := agentsdk .ExternalLogSourceID
46
46
client := fake .NewSimpleClientset ()
47
47
48
- cMock := quartz .NewMock (t )
49
48
reporter ,err := newPodEventLogger (ctx ,podEventLoggerOptions {
50
- client :client ,
51
- coderURL :agentURL ,
52
- namespaces :namespace ,
53
- logger :slogtest .Make (t ,nil ).Leveled (slog .LevelDebug ),
54
- logDebounce :5 * time .Second ,
55
- clock :cMock ,
49
+ client :client ,
50
+ coderURL :agentURL ,
51
+ namespaces :namespace ,
52
+ logger :slogtest .Make (t ,nil ).Leveled (slog .LevelDebug ),
53
+ logDebounce :5 * time .Second ,
54
+ clock :quartz .NewReal (),
55
+ tickInterval :10 * time .Millisecond ,
56
56
})
57
57
require .NoError (t ,err )
58
58
@@ -89,8 +89,8 @@ func TestReplicaSetEvents(t *testing.T) {
89
89
require .Equal (t ,"Kubernetes" ,source .DisplayName )
90
90
require .Equal (t ,"/icon/k8s.png" ,source .Icon )
91
91
92
- //Advance clock totrigger log flush
93
- cMock . Advance ( time .Second )
92
+ //Wait for ticker tofire (ticker fires every 10ms)
93
+ time . Sleep ( 50 * time .Millisecond )
94
94
95
95
logs := testutil .RequireRecvCtx (ctx ,t ,api .logs )
96
96
require .Len (t ,logs ,1 )
@@ -113,8 +113,8 @@ func TestReplicaSetEvents(t *testing.T) {
113
113
_ ,err = client .CoreV1 ().Events (namespace ).Create (ctx ,event , v1.CreateOptions {})
114
114
require .NoError (t ,err )
115
115
116
- //Advance clock totrigger log flush
117
- cMock . Advance ( time .Second )
116
+ //Wait for ticker tofire (ticker fires every 10ms)
117
+ time . Sleep ( 50 * time .Millisecond )
118
118
119
119
logs = testutil .RequireRecvCtx (ctx ,t ,api .logs )
120
120
require .Len (t ,logs ,1 )
@@ -123,8 +123,8 @@ func TestReplicaSetEvents(t *testing.T) {
123
123
err = client .AppsV1 ().ReplicaSets (namespace ).Delete (ctx ,rs .Name , v1.DeleteOptions {})
124
124
require .NoError (t ,err )
125
125
126
- //Advance clock totrigger log flush
127
- cMock . Advance ( time .Second )
126
+ //Wait for ticker tofire (ticker fires every 10ms)
127
+ time . Sleep ( 50 * time .Millisecond )
128
128
129
129
logs = testutil .RequireRecvCtx (ctx ,t ,api .logs )
130
130
require .Len (t ,logs ,1 )
@@ -152,14 +152,14 @@ func TestPodEvents(t *testing.T) {
152
152
sourceUUID := agentsdk .ExternalLogSourceID
153
153
client := fake .NewSimpleClientset ()
154
154
155
- cMock := quartz .NewMock (t )
156
155
reporter ,err := newPodEventLogger (ctx ,podEventLoggerOptions {
157
- client :client ,
158
- coderURL :agentURL ,
159
- namespaces :namespace ,
160
- logger :slogtest .Make (t ,nil ).Leveled (slog .LevelDebug ),
161
- logDebounce :5 * time .Second ,
162
- clock :cMock ,
156
+ client :client ,
157
+ coderURL :agentURL ,
158
+ namespaces :namespace ,
159
+ logger :slogtest .Make (t ,nil ).Leveled (slog .LevelDebug ),
160
+ logDebounce :5 * time .Second ,
161
+ clock :quartz .NewReal (),
162
+ tickInterval :10 * time .Millisecond ,
163
163
})
164
164
require .NoError (t ,err )
165
165
@@ -191,8 +191,8 @@ func TestPodEvents(t *testing.T) {
191
191
require .Equal (t ,"Kubernetes" ,source .DisplayName )
192
192
require .Equal (t ,"/icon/k8s.png" ,source .Icon )
193
193
194
- //Advance clock totrigger log flush
195
- cMock . Advance ( time .Second )
194
+ //Wait for ticker tofire (ticker fires every 10ms)
195
+ time . Sleep ( 50 * time .Millisecond )
196
196
197
197
logs := testutil .RequireRecvCtx (ctx ,t ,api .logs )
198
198
require .Len (t ,logs ,1 )
@@ -215,8 +215,8 @@ func TestPodEvents(t *testing.T) {
215
215
_ ,err = client .CoreV1 ().Events (namespace ).Create (ctx ,event , v1.CreateOptions {})
216
216
require .NoError (t ,err )
217
217
218
- //Advance clock totrigger log flush
219
- cMock . Advance ( time .Second )
218
+ //Wait for ticker tofire (ticker fires every 10ms)
219
+ time . Sleep ( 50 * time .Millisecond )
220
220
221
221
logs = testutil .RequireRecvCtx (ctx ,t ,api .logs )
222
222
require .Len (t ,logs ,1 )
@@ -225,8 +225,8 @@ func TestPodEvents(t *testing.T) {
225
225
err = client .CoreV1 ().Pods (namespace ).Delete (ctx ,pod .Name , v1.DeleteOptions {})
226
226
require .NoError (t ,err )
227
227
228
- //Advance clock totrigger log flush
229
- cMock . Advance ( time .Second )
228
+ //Wait for ticker tofire (ticker fires every 10ms)
229
+ time . Sleep ( 50 * time .Millisecond )
230
230
231
231
logs = testutil .RequireRecvCtx (ctx ,t ,api .logs )
232
232
require .Len (t ,logs ,1 )
@@ -305,17 +305,18 @@ func Test_logQueuer(t *testing.T) {
305
305
api := newFakeAgentAPI (t )
306
306
agentURL ,err := url .Parse (api .server .URL )
307
307
require .NoError (t ,err )
308
- clock := quartz .NewReal ()// Use real clockfor simplicity
309
- ttl := 100 * time .Millisecond //Short TTLfor faster test
308
+ clock := quartz .NewReal ()// Use real clockwith fast intervals
309
+ ttl := 5 * time .Second // TTLlonger than ticker interval
310
310
311
311
ch := make (chan agentLog ,10 )// Buffered channel to prevent blocking
312
312
lq := & logQueuer {
313
- logger :slogtest .Make (t ,nil ),
314
- clock :clock ,
315
- q :ch ,
316
- coderURL :agentURL ,
317
- loggerTTL :ttl ,
318
- loggers :map [string ]agentLoggerLifecycle {},
313
+ logger :slogtest .Make (t ,nil ),
314
+ clock :clock ,
315
+ q :ch ,
316
+ coderURL :agentURL ,
317
+ loggerTTL :ttl ,
318
+ tickInterval :10 * time .Millisecond ,// Fast ticking for tests
319
+ loggers :map [string ]agentLoggerLifecycle {},
319
320
logCache :logCache {
320
321
logs :map [string ][]agentsdk.Log {},
321
322
},
@@ -340,7 +341,10 @@ func Test_logQueuer(t *testing.T) {
340
341
// Wait for log source to be created
341
342
_ = testutil .RequireRecvCtx (ctx ,t ,api .logSource )
342
343
343
- // Wait for logs to be sent (ticker fires every second)
344
+ // Wait for ticker to fire (ticker fires every 10ms)
345
+ time .Sleep (20 * time .Millisecond )
346
+
347
+ // Wait for logs to be sent
344
348
logs := testutil .RequireRecvCtx (ctx ,t ,api .logs )
345
349
require .Len (t ,logs ,1 )
346
350
@@ -356,6 +360,9 @@ func Test_logQueuer(t *testing.T) {
356
360
},
357
361
}
358
362
363
+ // Wait for ticker to fire for second batch
364
+ time .Sleep (20 * time .Millisecond )
365
+
359
366
// Wait for second batch of logs
360
367
logs = testutil .RequireRecvCtx (ctx ,t ,api .logs )
361
368
require .Len (t ,logs ,1 )