MCPcopy
hub / github.com/grafana/tempo / benchmarkGetNextForQuerier

Function benchmarkGetNextForQuerier

modules/frontend/queue/queue_test.go:131–164  ·  view source on GitHub ↗
(b *testing.B, listeners int, messages int)

Source from the content-addressed store, hash-verified

129}
130
131func benchmarkGetNextForQuerier(b *testing.B, listeners int, messages int) {
132 const user = "user"
133
134 ctx, cancel := context.WithCancel(context.Background())
135 defer cancel()
136 stop := make(chan struct{})
137 requestsPulled := atomic.NewInt32(0)
138
139 q, start := queueWithListeners(ctx, listeners, 1, func(_ []Request) {
140 if requestsPulled.Inc() == int32(messages) {
141 stop <- struct{}{}
142 }
143 })
144 close(start)
145
146 req := &mockRequest{}
147 b.ResetTimer()
148 for i := 0; i < b.N; i++ {
149 for j := 0; j < messages; j++ {
150 err := q.EnqueueRequest(user, req)
151 if err != nil {
152 panic(err)
153 }
154 }
155
156 <-stop
157 requestsPulled.Sub(int32(messages))
158 }
159
160 err := q.stopping(nil)
161 if err != nil {
162 panic(err)
163 }
164}
165
166func queueWithListeners(ctx context.Context, listeners int, batchSize int, listenerFn func(r []Request)) (*RequestQueue, chan struct{}) {
167 g := prometheus.NewGaugeVec(prometheus.GaugeOpts{

Calls 4

queueWithListenersFunction · 0.85
EnqueueRequestMethod · 0.80
IncMethod · 0.65
stoppingMethod · 0.45

Tested by

no test coverage detected