MCPcopy Create free account
hub / github.com/ByteStorage/FlyDB / TestDB_Put

Function TestDB_Put

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

Source from the content-addressed store, hash-verified

35}
36
37func TestDB_Put(t *testing.T) {
38 opts := config.DefaultOptions
39 dir, _ := os.MkdirTemp("", "flydb-put")
40 opts.DirPath = dir
41 opts.DataFileSize = 64 * 1024 * 1024
42 db, err := NewDB(opts)
43 defer destroyDB(db)
44 assert.Nil(t, err)
45 assert.NotNil(t, db)
46
47 // Put a data file normally
48 err = db.Put(randkv.GetTestKey(1), randkv.RandomValue(24))
49 assert.Nil(t, err)
50 val1, err := db.Get(randkv.GetTestKey(1))
51 assert.Nil(t, err)
52 assert.NotNil(t, val1)
53
54 // Put the same data repeatedly
55 err = db.Put(randkv.GetTestKey(1), randkv.RandomValue(24))
56 assert.Nil(t, err)
57 val2, err := db.Get(randkv.GetTestKey(1))
58 assert.Nil(t, err)
59 assert.NotNil(t, val2)
60
61 // The key is empty
62 err = db.Put(nil, randkv.RandomValue(24))
63 assert.Equal(t, _const.ErrKeyIsEmpty, err)
64
65 // value is null
66 err = db.Put(randkv.GetTestKey(22), nil)
67 assert.Nil(t, err)
68 val3, err := db.Get(randkv.GetTestKey(22))
69 assert.Equal(t, 0, len(val3))
70 assert.Nil(t, err)
71
72 // The conversion is performed by writing to the data file
73 for i := 0; i < 1000000; i++ {
74 err := db.Put(randkv.GetTestKey(i), randkv.RandomValue(128))
75 assert.Nil(t, err)
76 }
77 assert.Equal(t, 2, len(db.olderFiles))
78
79 // Restart and Put data again
80 err = db.Close()
81 assert.Nil(t, err)
82
83 // Restart the database
84 db2, err := NewDB(opts)
85 assert.Nil(t, err)
86 assert.NotNil(t, db2)
87 val4 := randkv.RandomValue(128)
88 err = db2.Put(randkv.GetTestKey(55), val4)
89 assert.Nil(t, err)
90 val5, err := db2.Get(randkv.GetTestKey(55))
91 assert.Nil(t, err)
92 assert.Equal(t, val4, val5)
93}
94

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected