package db
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/syndtr/goleveldb/leveldb/opt"
|
|
|
|
cmn "github.com/tendermint/tendermint/libs/common"
|
|
)
|
|
|
|
func TestGoLevelDBNewGoLevelDB(t *testing.T) {
|
|
name := fmt.Sprintf("test_%x", cmn.RandStr(12))
|
|
defer cleanupDBDir("", name)
|
|
|
|
// Test we can't open the db twice for writing
|
|
wr1, err := NewGoLevelDB(name, "")
|
|
require.Nil(t, err)
|
|
_, err = NewGoLevelDB(name, "")
|
|
require.NotNil(t, err)
|
|
wr1.Close() // Close the db to release the lock
|
|
|
|
// Test we can open the db twice for reading only
|
|
ro1, err := NewGoLevelDBWithOpts(name, "", &opt.Options{ReadOnly: true})
|
|
defer ro1.Close()
|
|
require.Nil(t, err)
|
|
ro2, err := NewGoLevelDBWithOpts(name, "", &opt.Options{ReadOnly: true})
|
|
defer ro2.Close()
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
func BenchmarkGoLevelDBRandomReadsWrites(b *testing.B) {
|
|
name := fmt.Sprintf("test_%x", cmn.RandStr(12))
|
|
db, err := NewGoLevelDB(name, "")
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
defer func() {
|
|
db.Close()
|
|
cleanupDBDir("", name)
|
|
}()
|
|
|
|
benchmarkRandomReadsWrites(b, db)
|
|
}
|