MCPcopy Create free account
hub / github.com/IceFireDB/IceFireDB / TestSnapshot

Function TestSnapshot

driver/hybriddb/snapshot_test.go:12–83  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestSnapshot(t *testing.T) {
13 tempDir := t.TempDir()
14 cfg := &config.Config{
15 LevelDB: config.LevelDBConfig{
16 CacheSize: 64 * 1024 * 1024,
17 BlockSize: 4 * 1024,
18 WriteBufferSize: 4 * 1024 * 1024,
19 MaxOpenFiles: 1000,
20 Compression: true,
21 },
22 }
23
24 db, err := Store{}.Open(tempDir, cfg)
25 require.NoError(t, err)
26 defer db.Close()
27
28 // Insert initial data
29 initialData := map[string]string{
30 "key1": "value1",
31 "key2": "value2",
32 "key3": "value3",
33 }
34
35 for k, v := range initialData {
36 err = db.Put([]byte(k), []byte(v))
37 require.NoError(t, err)
38 }
39
40 // Create snapshot
41 snapshot, err := db.NewSnapshot()
42 require.NoError(t, err)
43 defer snapshot.Close()
44
45 // Modify data after snapshot
46 modifiedData := map[string]string{
47 "key1": "new-value1",
48 "key4": "value4", // New key
49 }
50
51 for k, v := range modifiedData {
52 err = db.Put([]byte(k), []byte(v))
53 require.NoError(t, err)
54 }
55
56 // Delete a key
57 err = db.Delete([]byte("key2"))
58 require.NoError(t, err)
59
60 // Snapshot should see original data
61 for k, expectedValue := range initialData {
62 value, err := snapshot.Get([]byte(k))
63 require.NoError(t, err)
64 assert.Equal(t, []byte(expectedValue), value, "Snapshot should see original value for key %s", k)
65 }
66
67 // Snapshot should not see new data
68 value, err := snapshot.Get([]byte("key4"))
69 require.NoError(t, err)

Callers

nothing calls this directly

Calls 9

CloseMethod · 0.95
GetMethod · 0.95
CloseMethod · 0.65
EqualMethod · 0.65
OpenMethod · 0.45
PutMethod · 0.45
NewSnapshotMethod · 0.45
DeleteMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected