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

Function TestSnapshot_Iterator

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

Source from the content-addressed store, hash-verified

83}
84
85func TestSnapshot_Iterator(t *testing.T) {
86 tempDir := t.TempDir()
87 cfg := &config.Config{
88 LevelDB: config.LevelDBConfig{
89 CacheSize: 64 * 1024 * 1024,
90 BlockSize: 4 * 1024,
91 WriteBufferSize: 4 * 1024 * 1024,
92 MaxOpenFiles: 1000,
93 Compression: true,
94 },
95 }
96
97 db, err := Store{}.Open(tempDir, cfg)
98 require.NoError(t, err)
99 defer db.Close()
100
101 // Insert test data
102 testData := map[string]string{
103 "a": "1",
104 "b": "2",
105 "c": "3",
106 }
107
108 for k, v := range testData {
109 err = db.Put([]byte(k), []byte(v))
110 require.NoError(t, err)
111 }
112
113 // Create snapshot
114 snapshot, err := db.NewSnapshot()
115 require.NoError(t, err)
116 defer snapshot.Close()
117
118 // Modify data after snapshot
119 err = db.Put([]byte("d"), []byte("4"))
120 require.NoError(t, err)
121 err = db.Delete([]byte("b"))
122 require.NoError(t, err)
123
124 // Test snapshot iterator
125 iter := snapshot.NewIterator()
126 defer iter.Close()
127
128 // Count items in snapshot
129 count := 0
130 for iter.First(); iter.Valid(); iter.Next() {
131 key := string(iter.Key())
132 value := string(iter.Value())
133
134 expectedValue, exists := testData[key]
135 assert.True(t, exists, "Snapshot iterator should only see original keys")
136 assert.Equal(t, expectedValue, value)
137 count++
138 }
139
140 assert.Equal(t, len(testData), count, "Snapshot iterator should see all original keys")
141
142 // Test current DB iterator

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
NewIteratorMethod · 0.95
CloseMethod · 0.95
FirstMethod · 0.95
ValidMethod · 0.95
NextMethod · 0.95
KeyMethod · 0.95
ValueMethod · 0.95
CloseMethod · 0.65
EqualMethod · 0.65
OpenMethod · 0.45
PutMethod · 0.45

Tested by

no test coverage detected