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

Function TestValueGC2

value_test.go:213–287  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

211}
212
213func TestValueGC2(t *testing.T) {
214 dir, err := ioutil.TempDir("", "badger-test")
215 require.NoError(t, err)
216 defer removeDir(dir)
217 opt := getTestOptions(dir)
218 opt.ValueLogFileSize = 1 << 20
219
220 kv, _ := Open(opt)
221 defer kv.Close()
222
223 sz := 32 << 10
224 txn := kv.NewTransaction(true)
225 for i := 0; i < 100; i++ {
226 v := make([]byte, sz)
227 rand.Read(v[:rand.Intn(sz)])
228 require.NoError(t, txn.SetEntry(NewEntry([]byte(fmt.Sprintf("key%d", i)), v)))
229 if i%20 == 0 {
230 require.NoError(t, txn.Commit())
231 txn = kv.NewTransaction(true)
232 }
233 }
234 require.NoError(t, txn.Commit())
235
236 for i := 0; i < 5; i++ {
237 txnDelete(t, kv, []byte(fmt.Sprintf("key%d", i)))
238 }
239
240 for i := 5; i < 10; i++ {
241 v := []byte(fmt.Sprintf("value%d", i))
242 txnSet(t, kv, []byte(fmt.Sprintf("key%d", i)), v, 0)
243 }
244
245 kv.vlog.filesLock.RLock()
246 lf := kv.vlog.filesMap[kv.vlog.sortedFids()[0]]
247 kv.vlog.filesLock.RUnlock()
248
249 // lf.iterate(0, func(e Entry) bool {
250 // e.print("lf")
251 // return true
252 // })
253
254 tr := trace.New("Test", "Test")
255 defer tr.Finish()
256 kv.vlog.rewrite(lf, tr)
257 for i := 0; i < 5; i++ {
258 key := []byte(fmt.Sprintf("key%d", i))
259 require.NoError(t, kv.View(func(txn *Txn) error {
260 _, err := txn.Get(key)
261 require.Equal(t, ErrKeyNotFound, err)
262 return nil
263 }))
264 }
265 for i := 5; i < 10; i++ {
266 key := []byte(fmt.Sprintf("key%d", i))
267 require.NoError(t, kv.View(func(txn *Txn) error {
268 item, err := txn.Get(key)
269 require.NoError(t, err)
270 val := getItemValue(t, item)

Callers

nothing calls this directly

Calls 15

removeDirFunction · 0.85
getTestOptionsFunction · 0.85
OpenFunction · 0.85
NewEntryFunction · 0.85
txnDeleteFunction · 0.85
txnSetFunction · 0.85
getItemValueFunction · 0.85
NewTransactionMethod · 0.80
CommitMethod · 0.80
sortedFidsMethod · 0.80
ViewMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…