MCPcopy
hub / github.com/dgraph-io/badger / TestGetMergeOperator

Function TestGetMergeOperator

merge_test.go:28–154  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

26)
27
28func TestGetMergeOperator(t *testing.T) {
29 t.Run("Get before Add", func(t *testing.T) {
30 runBadgerTest(t, nil, func(t *testing.T, db *DB) {
31 m := db.GetMergeOperator([]byte("merge"), add, 200*time.Millisecond)
32 defer m.Stop()
33
34 val, err := m.Get()
35 require.Equal(t, ErrKeyNotFound, err)
36 require.Nil(t, val)
37 })
38 })
39 t.Run("Add and Get", func(t *testing.T) {
40 key := []byte("merge")
41 runBadgerTest(t, nil, func(t *testing.T, db *DB) {
42 m := db.GetMergeOperator(key, add, 200*time.Millisecond)
43 defer m.Stop()
44
45 err := m.Add(uint64ToBytes(1))
46 require.NoError(t, err)
47 m.Add(uint64ToBytes(2))
48 require.NoError(t, err)
49 m.Add(uint64ToBytes(3))
50 require.NoError(t, err)
51
52 res, err := m.Get()
53 require.NoError(t, err)
54 require.Equal(t, uint64(6), bytesToUint64(res))
55 })
56
57 })
58 t.Run("Add and Get slices", func(t *testing.T) {
59 // Merge function to merge two byte slices
60 add := func(originalValue, newValue []byte) []byte {
61 return append(originalValue, newValue...)
62 }
63 runBadgerTest(t, nil, func(t *testing.T, db *DB) {
64 m := db.GetMergeOperator([]byte("fooprefix"), add, 2*time.Millisecond)
65 defer m.Stop()
66
67 require.Nil(t, m.Add([]byte("A")))
68 require.Nil(t, m.Add([]byte("B")))
69 require.Nil(t, m.Add([]byte("C")))
70
71 value, err := m.Get()
72 require.Nil(t, err)
73 require.Equal(t, "ABC", string(value))
74 })
75 })
76 t.Run("Get Before Compact", func(t *testing.T) {
77 key := []byte("merge")
78 runBadgerTest(t, nil, func(t *testing.T, db *DB) {
79 m := db.GetMergeOperator(key, add, 500*time.Millisecond)
80 defer m.Stop()
81
82 err := m.Add(uint64ToBytes(1))
83 require.NoError(t, err)
84 m.Add(uint64ToBytes(2))
85 require.NoError(t, err)

Callers

nothing calls this directly

Calls 15

runBadgerTestFunction · 0.85
uint64ToBytesFunction · 0.85
bytesToUint64Function · 0.85
removeDirFunction · 0.85
getTestOptionsFunction · 0.85
OpenFunction · 0.85
GetMergeOperatorMethod · 0.80
NewTransactionMethod · 0.80
DiscardMethod · 0.80
NewKeyIteratorMethod · 0.80
CloseMethod · 0.65
RewindMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…