MCPcopy Create free account
hub / github.com/CrunchyData/postgres-operator / TestTicker

Function TestTicker

internal/controller/runtime/ticker_test.go:26–71  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

24}
25
26func TestTicker(t *testing.T) {
27 t.Parallel()
28
29 var called []event.GenericEvent
30 expected := event.GenericEvent{Object: new(corev1.ConfigMap)}
31
32 tq := workqueue.NewTypedRateLimitingQueue(workqueue.DefaultTypedItemBasedRateLimiter[reconcile.Request]())
33 th := handler.Funcs{GenericFunc: func(ctx context.Context, e event.GenericEvent, q workqueue.TypedRateLimitingInterface[reconcile.Request]) {
34 called = append(called, e)
35
36 assert.Equal(t, q, tq, "should be called with the queue passed in Start")
37 }}
38
39 t.Run("NotImmediate", func(t *testing.T) {
40 called = nil
41
42 ticker := NewTicker(100*time.Millisecond, expected, th)
43 ctx, cancel := context.WithTimeout(context.Background(), 250*time.Millisecond)
44 t.Cleanup(cancel)
45
46 // Start the ticker and wait for the deadline to pass.
47 assert.NilError(t, ticker.Start(ctx, tq))
48 <-ctx.Done()
49
50 assert.Equal(t, len(called), 2)
51 assert.Equal(t, called[0], expected, "expected at 100ms")
52 assert.Equal(t, called[1], expected, "expected at 200ms")
53 })
54
55 t.Run("Immediate", func(t *testing.T) {
56 called = nil
57
58 ticker := NewTickerImmediate(100*time.Millisecond, expected, th)
59 ctx, cancel := context.WithTimeout(context.Background(), 250*time.Millisecond)
60 t.Cleanup(cancel)
61
62 // Start the ticker and wait for the deadline to pass.
63 assert.NilError(t, ticker.Start(ctx, tq))
64 <-ctx.Done()
65
66 assert.Assert(t, len(called) > 2)
67 assert.Equal(t, called[0], expected, "expected at 0ms")
68 assert.Equal(t, called[1], expected, "expected at 100ms")
69 assert.Equal(t, called[2], expected, "expected at 200ms")
70 })
71}

Callers

nothing calls this directly

Calls 5

NewTickerFunction · 0.85
NewTickerImmediateFunction · 0.85
CleanupMethod · 0.80
EqualMethod · 0.45
StartMethod · 0.45

Tested by

no test coverage detected