MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / TestDB_HintFileDifferentEntryIdxModes

Function TestDB_HintFileDifferentEntryIdxModes

db_test.go:2397–2467  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2395}
2396
2397func TestDB_HintFileDifferentEntryIdxModes(t *testing.T) {
2398 bucket := "bucket"
2399 opts := DefaultOptions
2400 opts.SegmentSize = KB
2401 opts.Dir = filepath.Join(t.TempDir(), "test-hintfile-modes")
2402 opts.EnableHintFile = true
2403
2404 // Clean the test directory at the start
2405 removeDir(opts.Dir)
2406
2407 // Test HintKeyValAndRAMIdxMode
2408 opts.EntryIdxMode = HintKeyValAndRAMIdxMode
2409
2410 db, err := Open(opts)
2411 require.NoError(t, err)
2412 txCreateBucket(t, db, DataStructureBTree, bucket, nil)
2413
2414 // Add some data
2415 n := 100
2416 for i := 0; i < n; i++ {
2417 txPut(t, db, bucket, testutils.GetTestBytes(i), testutils.GetTestBytes(i), Persistent, nil, nil)
2418 }
2419
2420 // Perform merge to create hint files
2421 require.NoError(t, db.Merge())
2422
2423 // Close the database
2424 require.NoError(t, db.Close())
2425
2426 // Reopen the database - it should use hint files for fast recovery
2427 db, err = Open(opts)
2428 require.NoError(t, err)
2429
2430 // Verify all data is correctly recovered
2431 for i := 0; i < n; i++ {
2432 txGet(t, db, bucket, testutils.GetTestBytes(i), testutils.GetTestBytes(i), nil)
2433 }
2434
2435 require.NoError(t, db.Close())
2436 removeDir(opts.Dir)
2437
2438 // Test HintKeyAndRAMIdxMode
2439 opts.EntryIdxMode = HintKeyAndRAMIdxMode
2440
2441 db, err = Open(opts)
2442 require.NoError(t, err)
2443 txCreateBucket(t, db, DataStructureBTree, bucket, nil)
2444
2445 // Add some data
2446 for i := 0; i < n; i++ {
2447 txPut(t, db, bucket, testutils.GetTestBytes(i), testutils.GetTestBytes(i), Persistent, nil, nil)
2448 }
2449
2450 // Perform merge to create hint files
2451 require.NoError(t, db.Merge())
2452
2453 // Close the database
2454 require.NoError(t, db.Close())

Callers

nothing calls this directly

Calls 8

GetTestBytesFunction · 0.92
removeDirFunction · 0.85
OpenFunction · 0.85
txCreateBucketFunction · 0.85
txPutFunction · 0.85
txGetFunction · 0.85
MergeMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected