MCPcopy Index your code
hub / github.com/ByteStorage/FlyDB / TestDB_Get

Function TestDB_Get

engine/db_test.go:211–279  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

209}
210
211func TestDB_Get(t *testing.T) {
212 opts := config.DefaultOptions
213 dir, _ := os.MkdirTemp("", "flydb-get")
214 opts.DirPath = dir
215 opts.DataFileSize = 64 * 1024 * 1024
216 db, err := NewDB(opts)
217 defer destroyDB(db)
218 assert.Nil(t, err)
219 assert.NotNil(t, db)
220
221 // Read a piece of data normally
222 err = db.Put(randkv.GetTestKey(11), randkv.RandomValue(24))
223 assert.Nil(t, err)
224 val1, err := db.Get(randkv.GetTestKey(11))
225 assert.Nil(t, err)
226 assert.NotNil(t, val1)
227
228 // Read a nonexistent key
229 val2, err := db.Get([]byte("some key unknown"))
230 assert.Nil(t, val2)
231 assert.Equal(t, _const.ErrKeyNotFound, err)
232
233 // The value is read after being repeatedly Put
234 err = db.Put(randkv.GetTestKey(22), randkv.RandomValue(24))
235 assert.Nil(t, err)
236 err = db.Put(randkv.GetTestKey(22), randkv.RandomValue(24))
237 val3, err := db.Get(randkv.GetTestKey(22))
238 assert.Nil(t, err)
239 assert.NotNil(t, val3)
240
241 // Get the value after it is deleted
242 err = db.Put(randkv.GetTestKey(33), randkv.RandomValue(24))
243 assert.Nil(t, err)
244 err = db.Delete(randkv.GetTestKey(33))
245 assert.Nil(t, err)
246 val4, err := db.Get(randkv.GetTestKey(33))
247 assert.Equal(t, 0, len(val4))
248 assert.Equal(t, _const.ErrKeyNotFound, err)
249
250 // Convert it to the old data file and obtain the value from the old data file
251 for i := 100; i < 1000000; i++ {
252 err := db.Put(randkv.GetTestKey(i), randkv.RandomValue(128))
253 assert.Nil(t, err)
254 }
255 assert.Equal(t, 2, len(db.olderFiles))
256 val5, err := db.Get(randkv.GetTestKey(101))
257 assert.Nil(t, err)
258 assert.NotNil(t, val5)
259
260 // After the restart, all the data previously written can be obtained
261 err = db.Close()
262 assert.Nil(t, err)
263
264 // Restart the database
265 db2, err := NewDB(opts)
266 val6, err := db2.Get(randkv.GetTestKey(11))
267 assert.Nil(t, err)
268 assert.NotNil(t, val6)

Callers

nothing calls this directly

Calls 8

PutMethod · 0.95
GetMethod · 0.95
DeleteMethod · 0.95
CloseMethod · 0.95
GetTestKeyFunction · 0.92
RandomValueFunction · 0.92
NewDBFunction · 0.85
destroyDBFunction · 0.85

Tested by

no test coverage detected