github.com/grafana/pyroscope@v1.18.0/pkg/phlaredb/symdb/sample_appender_test.go (about) 1 package symdb 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 schemav1 "github.com/grafana/pyroscope/pkg/phlaredb/schemas/v1" 9 ) 10 11 func Test_SampleAppender(t *testing.T) { 12 for _, test := range []struct { 13 description string 14 assert func(*testing.T, *SampleAppender) 15 }{ 16 { 17 description: "empty appender", 18 assert: func(t *testing.T, a *SampleAppender) { 19 assert.Equal(t, 0, a.Len()) 20 }, 21 }, 22 { 23 description: "hashtable", 24 assert: func(t *testing.T, a *SampleAppender) { 25 a.Append(1, 1) 26 a.AppendMany([]uint32{1337, 42}, []uint64{1, 1}) 27 a.Append(1337, 1) 28 assert.Equal(t, 3, a.Len()) 29 assert.Equal(t, 3, len(a.hashmap)) 30 assert.Equal(t, schemav1.Samples{ 31 StacktraceIDs: []uint32{1, 42, 1337}, 32 Values: []uint64{1, 1, 2}, 33 }, a.Samples()) 34 }, 35 }, 36 { 37 description: "sparse", 38 assert: func(t *testing.T, a *SampleAppender) { 39 a.Append(4, 1) 40 a.Append(1, 1) 41 a.AppendMany([]uint32{20, 40}, []uint64{1, 1}) 42 a.Append(10, 1) 43 a.Append(40, 1) 44 assert.Equal(t, 5, a.Len()) 45 assert.Equal(t, 0, len(a.hashmap)) 46 assert.Equal(t, 11, len(a.chunks)) 47 assert.Equal(t, schemav1.Samples{ 48 StacktraceIDs: []uint32{1, 4, 10, 20, 40}, 49 Values: []uint64{1, 1, 1, 1, 2}, 50 }, a.Samples()) 51 }, 52 }, 53 } { 54 a := NewSampleAppenderSize(4, 4) 55 test.assert(t, a) 56 } 57 }