github.com/evdatsion/aphelion-dpos-bft@v0.32.1/libs/db/go_level_db_test.go (about) 1 package db 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 "github.com/syndtr/goleveldb/leveldb/opt" 9 10 cmn "github.com/evdatsion/aphelion-dpos-bft/libs/common" 11 ) 12 13 func TestGoLevelDBNewGoLevelDB(t *testing.T) { 14 name := fmt.Sprintf("test_%x", cmn.RandStr(12)) 15 defer cleanupDBDir("", name) 16 17 // Test we can't open the db twice for writing 18 wr1, err := NewGoLevelDB(name, "") 19 require.Nil(t, err) 20 _, err = NewGoLevelDB(name, "") 21 require.NotNil(t, err) 22 wr1.Close() // Close the db to release the lock 23 24 // Test we can open the db twice for reading only 25 ro1, err := NewGoLevelDBWithOpts(name, "", &opt.Options{ReadOnly: true}) 26 defer ro1.Close() 27 require.Nil(t, err) 28 ro2, err := NewGoLevelDBWithOpts(name, "", &opt.Options{ReadOnly: true}) 29 defer ro2.Close() 30 require.Nil(t, err) 31 } 32 33 func BenchmarkGoLevelDBRandomReadsWrites(b *testing.B) { 34 name := fmt.Sprintf("test_%x", cmn.RandStr(12)) 35 db, err := NewGoLevelDB(name, "") 36 if err != nil { 37 b.Fatal(err) 38 } 39 defer func() { 40 db.Close() 41 cleanupDBDir("", name) 42 }() 43 44 benchmarkRandomReadsWrites(b, db) 45 }