(t *testing.T)
| 2395 | } |
| 2396 | |
| 2397 | func 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()) |
nothing calls this directly
no test coverage detected