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

Function TestValueGC4

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

Source from the content-addressed store, hash-verified

362}
363
364func TestValueGC4(t *testing.T) {
365 dir, err := ioutil.TempDir("", "badger-test")
366 require.NoError(t, err)
367 defer removeDir(dir)
368 opt := getTestOptions(dir)
369 opt.ValueLogFileSize = 1 << 20
370 opt.Truncate = true
371
372 kv, err := Open(opt)
373 require.NoError(t, err)
374
375 sz := 128 << 10 // 5 entries per value log file.
376 txn := kv.NewTransaction(true)
377 for i := 0; i < 24; i++ {
378 v := make([]byte, sz)
379 rand.Read(v[:rand.Intn(sz)])
380 require.NoError(t, txn.SetEntry(NewEntry([]byte(fmt.Sprintf("key%d", i)), v)))
381 if i%3 == 0 {
382 require.NoError(t, txn.Commit())
383 txn = kv.NewTransaction(true)
384 }
385 }
386 require.NoError(t, txn.Commit())
387
388 for i := 0; i < 8; i++ {
389 txnDelete(t, kv, []byte(fmt.Sprintf("key%d", i)))
390 }
391
392 for i := 8; i < 16; i++ {
393 v := []byte(fmt.Sprintf("value%d", i))
394 txnSet(t, kv, []byte(fmt.Sprintf("key%d", i)), v, 0)
395 }
396
397 kv.vlog.filesLock.RLock()
398 lf0 := kv.vlog.filesMap[kv.vlog.sortedFids()[0]]
399 lf1 := kv.vlog.filesMap[kv.vlog.sortedFids()[1]]
400 kv.vlog.filesLock.RUnlock()
401
402 // lf.iterate(0, func(e Entry) bool {
403 // e.print("lf")
404 // return true
405 // })
406
407 tr := trace.New("Test", "Test")
408 defer tr.Finish()
409 kv.vlog.rewrite(lf0, tr)
410 kv.vlog.rewrite(lf1, tr)
411
412 require.NoError(t, kv.Close())
413
414 kv, err = Open(opt)
415 require.NoError(t, err)
416
417 for i := 0; i < 8; i++ {
418 key := []byte(fmt.Sprintf("key%d", i))
419 require.NoError(t, kv.View(func(txn *Txn) error {
420 _, err := txn.Get(key)
421 require.Equal(t, ErrKeyNotFound, err)

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…