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

Function TestEncoderDecoder

pkg/ingest/encoding_test.go:16–68  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

14)
15
16func TestEncoderDecoder(t *testing.T) {
17 tests := []struct {
18 name string
19 req *tempopb.PushBytesRequest
20 maxSize int
21 expectSplit bool
22 }{
23 {
24 name: "Small trace, no split",
25 req: generateRequest(10, 100),
26 maxSize: 1024 * 1024,
27 expectSplit: false,
28 },
29 {
30 name: "Large trace, expect split",
31 req: generateRequest(1000, 1000),
32 maxSize: 1024 * 10,
33 expectSplit: true,
34 },
35 }
36
37 for _, tt := range tests {
38 t.Run(tt.name, func(t *testing.T) {
39 decoder := NewDecoder()
40
41 records, err := Encode(0, "test-tenant", tt.req, tt.maxSize)
42 require.NoError(t, err)
43
44 if tt.expectSplit {
45 require.Greater(t, len(records), 1)
46 } else {
47 require.Equal(t, 1, len(records))
48 }
49
50 var decodedEntries []tempopb.PreallocBytes
51 var decodedIDs [][]byte
52
53 for _, record := range records {
54 decoder.Reset()
55 req, err := decoder.Decode(record.Value)
56 require.NoError(t, err)
57 decodedEntries = append(decodedEntries, req.Traces...)
58 decodedIDs = append(decodedIDs, req.Ids...)
59 }
60
61 require.Equal(t, len(tt.req.Traces), len(decodedEntries))
62 for i := range tt.req.Traces {
63 require.Equal(t, tt.req.Traces[i], decodedEntries[i])
64 require.Equal(t, tt.req.Ids[i], decodedIDs[i])
65 }
66 })
67 }
68}
69
70func TestEncoderSingleEntryTooLarge(t *testing.T) {
71 stream := generateRequest(1, 1000)

Callers

nothing calls this directly

Calls 7

ResetMethod · 0.95
DecodeMethod · 0.95
generateRequestFunction · 0.85
NewDecoderFunction · 0.85
EncodeFunction · 0.85
RunMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected