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

Function TestSnapshot_Concurrent

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

Source from the content-addressed store, hash-verified

196}
197
198func TestSnapshot_Concurrent(t *testing.T) {
199 tempDir := t.TempDir()
200 cfg := &config.Config{
201 LevelDB: config.LevelDBConfig{
202 CacheSize: 64 * 1024 * 1024,
203 BlockSize: 4 * 1024,
204 WriteBufferSize: 4 * 1024 * 1024,
205 MaxOpenFiles: 1000,
206 Compression: true,
207 },
208 }
209
210 db, err := Store{}.Open(tempDir, cfg)
211 require.NoError(t, err)
212 defer db.Close()
213
214 // Insert initial data
215 err = db.Put([]byte("initial"), []byte("value"))
216 require.NoError(t, err)
217
218 // Create multiple snapshots
219 snapshots := make([]driver.ISnapshot, 5)
220 for i := 0; i < 5; i++ {
221 snapshot, err := db.NewSnapshot()
222 require.NoError(t, err)
223 snapshots[i] = snapshot
224 }
225
226 // Modify data
227 err = db.Put([]byte("initial"), []byte("modified"))
228 require.NoError(t, err)
229 err = db.Put([]byte("new"), []byte("value"))
230 require.NoError(t, err)
231
232 // All snapshots should see original data
233 for i, snapshot := range snapshots {
234 value, err := snapshot.Get([]byte("initial"))
235 require.NoError(t, err)
236 assert.Equal(t, []byte("value"), value, "Snapshot %d should see original value", i)
237
238 value, err = snapshot.Get([]byte("new"))
239 require.NoError(t, err)
240 assert.Nil(t, value, "Snapshot %d should not see new key", i)
241
242 snapshot.Close()
243 }
244}

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected