64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package rocksdb
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
dbm "github.com/cosmos/cosmos-sdk/db"
|
|
"github.com/cosmos/cosmos-sdk/db/dbtest"
|
|
)
|
|
|
|
func load(t *testing.T, dir string) dbm.DBConnection {
|
|
db, err := NewDB(dir)
|
|
require.NoError(t, err)
|
|
return db
|
|
}
|
|
|
|
func TestGetSetHasDelete(t *testing.T) {
|
|
dbtest.DoTestGetSetHasDelete(t, load)
|
|
}
|
|
|
|
func TestIterators(t *testing.T) {
|
|
dbtest.DoTestIterators(t, load)
|
|
}
|
|
|
|
func TestTransactions(t *testing.T) {
|
|
dbtest.DoTestTransactions(t, load, true)
|
|
}
|
|
|
|
func TestVersioning(t *testing.T) {
|
|
dbtest.DoTestVersioning(t, load)
|
|
}
|
|
|
|
func TestRevert(t *testing.T) {
|
|
dbtest.DoTestRevert(t, load, false)
|
|
dbtest.DoTestRevert(t, load, true)
|
|
}
|
|
|
|
func TestReloadDB(t *testing.T) {
|
|
dbtest.DoTestReloadDB(t, load)
|
|
}
|
|
|
|
// Test that the DB can be reloaded after a failed Revert
|
|
func TestRevertRecovery(t *testing.T) {
|
|
dir := t.TempDir()
|
|
db, err := NewDB(dir)
|
|
require.NoError(t, err)
|
|
_, err = db.SaveNextVersion()
|
|
require.NoError(t, err)
|
|
txn := db.Writer()
|
|
require.NoError(t, txn.Set([]byte{1}, []byte{1}))
|
|
require.NoError(t, txn.Set([]byte{2}, []byte{2}))
|
|
require.NoError(t, txn.Commit())
|
|
|
|
// make checkpoints dir temporarily unreadable to trigger an error
|
|
require.NoError(t, os.Chmod(db.checkpointsDir(), 0000))
|
|
require.Error(t, db.Revert())
|
|
|
|
require.NoError(t, os.Chmod(db.checkpointsDir(), 0755))
|
|
db, err = NewDB(dir)
|
|
require.NoError(t, err)
|
|
}
|