MCPcopy
hub / github.com/prometheus/prometheus / TestQueuePushBlocksOnFullQueue

Function TestQueuePushBlocksOnFullQueue

tsdb/chunks/queue_test.go:118–154  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

116}
117
118func TestQueuePushBlocksOnFullQueue(t *testing.T) {
119 t.Parallel()
120 queue := newWriteJobQueue(5, 5)
121
122 pushTime := make(chan time.Time)
123 go func() {
124 require.True(t, queue.push(chunkWriteJob{seriesRef: 1}))
125 require.True(t, queue.push(chunkWriteJob{seriesRef: 2}))
126 require.True(t, queue.push(chunkWriteJob{seriesRef: 3}))
127 require.True(t, queue.push(chunkWriteJob{seriesRef: 4}))
128 require.True(t, queue.push(chunkWriteJob{seriesRef: 5}))
129 pushTime <- time.Now()
130 // This will block
131 require.True(t, queue.push(chunkWriteJob{seriesRef: 6}))
132 pushTime <- time.Now()
133 }()
134
135 timeBeforePush := <-pushTime
136
137 delay := 100 * time.Millisecond
138 select {
139 case <-time.After(delay):
140 // ok
141 case <-pushTime:
142 require.Fail(t, "didn't expect another push to proceed")
143 }
144
145 popTime := time.Now()
146 j, b := queue.pop()
147 require.True(t, b)
148 require.Equal(t, HeadSeriesRef(1), j.seriesRef)
149
150 timeAfterPush := <-pushTime
151
152 require.GreaterOrEqual(t, timeAfterPush.Sub(popTime), time.Duration(0))
153 require.GreaterOrEqual(t, timeAfterPush.Sub(timeBeforePush), delay)
154}
155
156func TestQueuePopBlocksOnEmptyQueue(t *testing.T) {
157 t.Parallel()

Callers

nothing calls this directly

Calls 7

newWriteJobQueueFunction · 0.85
HeadSeriesRefTypeAlias · 0.85
FailMethod · 0.80
DurationMethod · 0.80
pushMethod · 0.45
popMethod · 0.45
SubMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…