MCPcopy
hub / github.com/garethgeorge/backrest / TestTPQStress

Function TestTPQStress

internal/queue/timepriorityqueue_test.go:59–95  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

57}
58
59func TestTPQStress(t *testing.T) {
60 t.Parallel()
61 tpq := NewTimePriorityQueue[val]()
62 start := time.Now()
63
64 totalEnqueued := 0
65 totalEnqueuedSum := 0
66
67 go func() {
68 ctx, _ := context.WithDeadline(context.Background(), start.Add(1*time.Second))
69 for ctx.Err() == nil {
70 v := rand.Intn(100) + 1
71 tpq.Enqueue(time.Now().Add(time.Duration(rand.Intn(1000)-500)*time.Millisecond), rand.Intn(5), val{v})
72 totalEnqueuedSum += v
73 totalEnqueued++
74 }
75 }()
76
77 ctx, _ := context.WithDeadline(context.Background(), start.Add(3*time.Second))
78 totalDequeued := 0
79 sum := 0
80 for ctx.Err() == nil || totalDequeued < totalEnqueued {
81 v := tpq.Dequeue(ctx)
82 if v.v != 0 {
83 totalDequeued++
84 sum += v.v
85 }
86 }
87
88 if totalDequeued != totalEnqueued {
89 t.Errorf("expected totalDequeued to be %d, got %d", totalEnqueued, totalDequeued)
90 }
91
92 if sum != totalEnqueuedSum {
93 t.Errorf("expected sum to be %d, got %d", totalEnqueuedSum, sum)
94 }
95}
96
97func TestTPQRemove(t *testing.T) {
98 t.Parallel()

Callers

nothing calls this directly

Calls 4

ErrMethod · 0.80
AddMethod · 0.65
EnqueueMethod · 0.45
DequeueMethod · 0.45

Tested by

no test coverage detected