forked from TrueCloudLab/neoneo-go
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package storage
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig"
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/syndtr/goleveldb/leveldb"
|
|
)
|
|
|
|
func newLevelDBForTesting(t testing.TB) Store {
|
|
ldbDir := t.TempDir()
|
|
opts := dbconfig.LevelDBOptions{
|
|
DataDirectoryPath: ldbDir,
|
|
}
|
|
newLevelStore, err := NewLevelDBStore(opts)
|
|
require.Nil(t, err, "NewLevelDBStore error")
|
|
return newLevelStore
|
|
}
|
|
|
|
func TestROLevelDB(t *testing.T) {
|
|
ldbDir := t.TempDir()
|
|
opts := dbconfig.LevelDBOptions{
|
|
DataDirectoryPath: ldbDir,
|
|
ReadOnly: true,
|
|
}
|
|
|
|
// If DB doesn't exist, then error should be returned.
|
|
_, err := NewLevelDBStore(opts)
|
|
require.Error(t, err)
|
|
|
|
// Create the DB and try to open it in RO mode.
|
|
opts.ReadOnly = false
|
|
store, err := NewLevelDBStore(opts)
|
|
require.NoError(t, err)
|
|
require.NoError(t, store.Close())
|
|
opts.ReadOnly = true
|
|
|
|
store, err = NewLevelDBStore(opts)
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() { require.NoError(t, store.Close()) })
|
|
// Changes must be prohibited.
|
|
putErr := store.PutChangeSet(map[string][]byte{"one": []byte("one")}, nil)
|
|
require.ErrorIs(t, putErr, leveldb.ErrReadOnly)
|
|
}
|