Skip to content

Commit ac31df8

Browse files
committed
fix: use real clock for integration tests
The integration tests were using quartz.NewMock(t) which creates a mock clock that doesn't advance automatically. This caused timeouts when waiting for log source registration because the timers in the log queuer never fired. Changes: - Remove mock clock usage from all integration tests - Use real clock (nil) which is the default - Reduce logDebounce to 5s for faster test execution - Increase informer sync wait to 1s for reliability
1 parent f58945d commit ac31df8

File tree

1 file changed

+12
-17
lines changed

1 file changed

+12
-17
lines changed

integration_test.go

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020

2121
"cdr.dev/slog"
2222
"cdr.dev/slog/sloggers/slogtest"
23-
"github.com/coder/quartz"
2423
)
2524

2625
// getKubeClient creates a Kubernetes client from the default kubeconfig.
@@ -126,20 +125,19 @@ func TestIntegration_PodEvents(t *testing.T) {
126125
require.NoError(t, err)
127126

128127
// Create the pod event logger
129-
clock := quartz.NewMock(t)
128+
// Note: We don't set clock, so it uses a real clock for integration tests
130129
reporter, err := newPodEventLogger(ctx, podEventLoggerOptions{
131130
client: client,
132131
coderURL: agentURL,
133132
namespaces: []string{namespace},
134133
logger: slogtest.Make(t, nil).Leveled(slog.LevelDebug),
135-
logDebounce: 30 * time.Second,
136-
clock: clock,
134+
logDebounce: 5 * time.Second, // Use shorter debounce for faster tests
137135
})
138136
require.NoError(t, err)
139137
defer reporter.Close()
140138

141139
// Wait a bit for informers to sync
142-
time.Sleep(500 * time.Millisecond)
140+
time.Sleep(1 * time.Second)
143141

144142
// Create a pod with CODER_AGENT_TOKEN
145143
pod := &corev1.Pod{
@@ -223,20 +221,19 @@ func TestIntegration_ReplicaSetEvents(t *testing.T) {
223221
require.NoError(t, err)
224222

225223
// Create the pod event logger
226-
clock := quartz.NewMock(t)
224+
// Note: We don't set clock, so it uses a real clock for integration tests
227225
reporter, err := newPodEventLogger(ctx, podEventLoggerOptions{
228226
client: client,
229227
coderURL: agentURL,
230228
namespaces: []string{namespace},
231229
logger: slogtest.Make(t, nil).Leveled(slog.LevelDebug),
232-
logDebounce: 30 * time.Second,
233-
clock: clock,
230+
logDebounce: 5 * time.Second, // Use shorter debounce for faster tests
234231
})
235232
require.NoError(t, err)
236233
defer reporter.Close()
237234

238235
// Wait a bit for informers to sync
239-
time.Sleep(500 * time.Millisecond)
236+
time.Sleep(1 * time.Second)
240237

241238
// Create a ReplicaSet with CODER_AGENT_TOKEN
242239
replicas := int32(1)
@@ -338,20 +335,19 @@ func TestIntegration_MultiNamespace(t *testing.T) {
338335
require.NoError(t, err)
339336

340337
// Create the pod event logger watching both namespaces
341-
clock := quartz.NewMock(t)
338+
// Note: We don't set clock, so it uses a real clock for integration tests
342339
reporter, err := newPodEventLogger(ctx, podEventLoggerOptions{
343340
client: client,
344341
coderURL: agentURL,
345342
namespaces: []string{namespace1, namespace2},
346343
logger: slogtest.Make(t, nil).Leveled(slog.LevelDebug),
347-
logDebounce: 30 * time.Second,
348-
clock: clock,
344+
logDebounce: 5 * time.Second, // Use shorter debounce for faster tests
349345
})
350346
require.NoError(t, err)
351347
defer reporter.Close()
352348

353349
// Wait for informers to sync
354-
time.Sleep(500 * time.Millisecond)
350+
time.Sleep(1 * time.Second)
355351

356352
// Create a pod in namespace1
357353
pod1 := &corev1.Pod{
@@ -442,21 +438,20 @@ func TestIntegration_LabelSelector(t *testing.T) {
442438
require.NoError(t, err)
443439

444440
// Create the pod event logger with a label selector
445-
clock := quartz.NewMock(t)
441+
// Note: We don't set clock, so it uses a real clock for integration tests
446442
reporter, err := newPodEventLogger(ctx, podEventLoggerOptions{
447443
client: client,
448444
coderURL: agentURL,
449445
namespaces: []string{namespace},
450446
labelSelector: "coder-workspace=true",
451447
logger: slogtest.Make(t, nil).Leveled(slog.LevelDebug),
452-
logDebounce: 30 * time.Second,
453-
clock: clock,
448+
logDebounce: 5 * time.Second, // Use shorter debounce for faster tests
454449
})
455450
require.NoError(t, err)
456451
defer reporter.Close()
457452

458453
// Wait for informers to sync
459-
time.Sleep(500 * time.Millisecond)
454+
time.Sleep(1 * time.Second)
460455

461456
// Create a pod WITHOUT the matching label - should be ignored
462457
podNoLabel := &corev1.Pod{

0 commit comments

Comments
 (0)