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

Function TestForwarder

modules/distributor/forwarder_test.go:25–73  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

23const tenantID = "tenant-id"
24
25func TestForwarder(t *testing.T) {
26 oCfg := overrides.Config{}
27 oCfg.RegisterFlagsAndApplyDefaults(&flag.FlagSet{})
28
29 id, err := util.HexStringToTraceID("1234567890abcdef")
30 require.NoError(t, err)
31
32 b := test.MakeBatch(10, id)
33 keys, rebatchedTraces, _, _, err := requestsByTraceID([]*v1.ResourceSpans{b}, tenantID, 10, 1000)
34 require.NoError(t, err)
35
36 o, err := overrides.NewOverrides(oCfg, nil, prometheus.DefaultRegisterer)
37 require.NoError(t, err)
38
39 noGenerateMetricsRequestCount := 0
40
41 wg := sync.WaitGroup{}
42 f := newGeneratorForwarder(
43 log.NewNopLogger(),
44 func(_ context.Context, userID string, k []uint32, traces []*rebatchedTrace, noGenerateMetrics bool) error {
45 assert.Equal(t, tenantID, userID)
46 assert.Equal(t, keys, k)
47 assert.Equal(t, rebatchedTraces, traces)
48 if noGenerateMetrics {
49 noGenerateMetricsRequestCount++
50 }
51 wg.Done()
52 return nil
53 },
54 o,
55 )
56 require.NoError(t, f.start(context.Background()))
57 defer func() {
58 require.NoError(t, f.stop(nil))
59 }()
60
61 wg.Add(1)
62 // Mark this request as "to-be-ignored" for metrics generation.
63 ctx = metadata.NewIncomingContext(ctx, metadata.Pairs(generator.NoGenerateMetricsContextKey, ""))
64 f.SendTraces(ctx, tenantID, keys, rebatchedTraces)
65 wg.Wait()
66
67 wg.Add(1)
68 f.SendTraces(context.Background(), tenantID, keys, rebatchedTraces)
69 wg.Wait()
70
71 // Expect to receive one request for which no metrics should be generated in metrics-generator.
72 require.Equal(t, 1, noGenerateMetricsRequestCount)
73}
74
75func TestForwarder_shutdown(t *testing.T) {
76 oCfg := overrides.Config{}

Callers

nothing calls this directly

Calls 13

HexStringToTraceIDFunction · 0.92
MakeBatchFunction · 0.92
NewOverridesFunction · 0.92
requestsByTraceIDFunction · 0.85
newGeneratorForwarderFunction · 0.85
SendTracesMethod · 0.80
DoneMethod · 0.65
startMethod · 0.65
stopMethod · 0.65
AddMethod · 0.65
WaitMethod · 0.65

Tested by

no test coverage detected