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

Function TestInstance_remoteWriteHeaders

modules/generator/storage/instance_test.go:198–269  ·  modules/generator/storage/instance_test.go::TestInstance_remoteWriteHeaders
(t *testing.T)

Source from the content-addressed store, hash-verified

196}
197
198func TestInstance_remoteWriteHeaders(t *testing.T) {
199 var err error
200 logger := log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout))
201
202 mockServer := newMockPrometheusRemoteWriterServer(logger)
203 defer mockServer.close()
204
205 var cfg Config
206 cfg.RegisterFlagsAndApplyDefaults("", nil)
207 cfg.Path = t.TempDir()
208 cfg.RemoteWrite = mockServer.remoteWriteConfig()
209
210 headers := map[string]string{user.OrgIDHeaderName: "my-other-tenant"}
211
212 instance, err := New(&cfg, &mockOverrides{headers, histograms.HistogramMethodClassic}, "test-tenant", &noopRegisterer{}, logger)
213 require.NoError(t, err)
214
215 // Refuse requests - the WAL should buffer data until requests succeed
216 mockServer.refuseRequests.Store(true)
217
218 sendCtx, cancel := context.WithCancel(context.Background())
219 defer cancel()
220
221 // Append some data every second
222 go poll(sendCtx, time.Second, func() {
223 appender := instance.Appender(context.Background())
224
225 lbls := labels.FromMap(map[string]string{"__name__": "my-metrics"})
226 ref, err := appender.Append(0, lbls, time.Now().UnixMilli(), 1.0)
227 assert.NoError(t, err)
228
229 _, err = appender.AppendExemplar(ref, lbls, exemplar.Exemplar{
230 Labels: labels.FromMap(map[string]string{"traceID": "123"}),
231 Value: 1.2,
232 })
233 assert.NoError(t, err)
234
235 if sendCtx.Err() != nil {
236 return
237 }
238
239 err = appender.Commit()
240 assert.NoError(t, err)
241 })
242
243 // Wait until remote.Storage has tried at least once to send data
244 test.Poll(t, 30*time.Second, true, func() interface{} {
245 mockServer.mtx.Lock()
246 defer mockServer.mtx.Unlock()
247
248 return mockServer.refusedRequests > 0
249 })
250
251 // Allow requests
252 mockServer.refuseRequests.Store(false)
253
254 // Shutdown the instance - even though previous requests failed, remote.Storage should flush pending data
255 cancel()

Callers

nothing calls this directly

Calls 14

pollFunction · 0.85
remoteWriteConfigMethod · 0.80
NewFunction · 0.70
StoreMethod · 0.65
AppendMethod · 0.65
NowMethod · 0.65
CloseMethod · 0.65
LenMethod · 0.65
closeMethod · 0.45
AppenderMethod · 0.45

Tested by

no test coverage detected