MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestNoopBufferWhenNotReleasableMessage

Function TestNoopBufferWhenNotReleasableMessage

pkg/cortexpb/codec_test.go:32–88  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

30}
31
32func TestNoopBufferWhenNotReleasableMessage(t *testing.T) {
33 codec := &cortexCodec{
34 noOpBufferPool: &wrappedBufferPool{inner: mem.NopBufferPool{}},
35 defaultBufferPool: &wrappedBufferPool{inner: mem.DefaultBufferPool()},
36 }
37
38 tc := map[string]struct {
39 noopBufferGets int
40 defaultBufferGets int
41 m any
42 }{
43 "releasable": {
44 noopBufferGets: 0,
45 defaultBufferGets: 1,
46 m: &WriteRequest{
47 Metadata: []*MetricMetadata{
48 {
49 Unit: strings.Repeat("a", 10000),
50 },
51 },
52 },
53 },
54 "not releasable": {
55 noopBufferGets: 1,
56 defaultBufferGets: 0,
57 m: &MetricMetadata{
58 Unit: strings.Repeat("a", 10000),
59 },
60 },
61 }
62
63 for name, tc := range tc {
64 t.Run(name, func(t *testing.T) {
65 data, err := codec.Marshal(tc.m)
66 require.NoError(t, err)
67
68 // lets split the buffer into 2 so we force get another buffer from the pool
69 r := data.Reader()
70 size := r.Remaining()
71 b1 := make([]byte, size/2)
72 b2 := make([]byte, (size/2)+1)
73 buffer1 := mem.NewBuffer(&b1, mem.NopBufferPool{})
74 buffer2 := mem.NewBuffer(&b2, mem.NopBufferPool{})
75
76 _, err = r.Read(b1)
77 require.NoError(t, err)
78 _, err = r.Read(b2)
79 require.NoError(t, err)
80
81 codec.noOpBufferPool.(*wrappedBufferPool).Reset()
82 codec.defaultBufferPool.(*wrappedBufferPool).Reset()
83 require.NoError(t, codec.Unmarshal(mem.BufferSlice{buffer1, buffer2}, tc.m))
84 require.Equal(t, tc.noopBufferGets, codec.noOpBufferPool.(*wrappedBufferPool).getCount)
85 require.Equal(t, tc.defaultBufferGets, codec.defaultBufferPool.(*wrappedBufferPool).getCount)
86 })
87 }
88}

Callers

nothing calls this directly

Calls 6

MarshalMethod · 0.95
UnmarshalMethod · 0.95
RunMethod · 0.65
EqualMethod · 0.65
ReadMethod · 0.45
ResetMethod · 0.45

Tested by

no test coverage detected