github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/db/goleveldb/go_level_db_test.go (about) 1 package goleveldb 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/gnolang/gno/tm2/pkg/db" 8 "github.com/gnolang/gno/tm2/pkg/db/internal" 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 "github.com/syndtr/goleveldb/leveldb/opt" 12 ) 13 14 func TestGoLevelDBNewGoLevelDB(t *testing.T) { 15 t.Parallel() 16 17 dir := t.TempDir() 18 name := fmt.Sprintf("test_%x", internal.RandStr(12)) 19 20 // Test we can't open the db twice for writing 21 wr1, err := NewGoLevelDB(name, dir) 22 require.Nil(t, err) 23 _, err = NewGoLevelDB(name, dir) 24 require.NotNil(t, err) 25 wr1.Close() // Close the db to release the lock 26 27 // Test we can open the db twice for reading only 28 ro1, err := NewGoLevelDBWithOpts(name, dir, &opt.Options{ReadOnly: true}) 29 require.Nil(t, err) 30 defer ro1.Close() 31 ro2, err := NewGoLevelDBWithOpts(name, dir, &opt.Options{ReadOnly: true}) 32 require.Nil(t, err) 33 defer ro2.Close() 34 } 35 36 func TestGoLevelDBBackend(t *testing.T) { 37 t.Parallel() 38 39 name := fmt.Sprintf("test_%x", internal.RandStr(12)) 40 db, err := db.NewDB(name, db.GoLevelDBBackend, t.TempDir()) 41 require.NoError(t, err) 42 43 _, ok := db.(*GoLevelDB) 44 assert.True(t, ok) 45 } 46 47 func BenchmarkGoLevelDBRandomReadsWrites(b *testing.B) { 48 name := fmt.Sprintf("test_%x", internal.RandStr(12)) 49 db, err := NewGoLevelDB(name, b.TempDir()) 50 if err != nil { 51 b.Fatal(err) 52 } 53 defer db.Close() 54 55 internal.BenchmarkRandomReadsWrites(b, db) 56 }