github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/core/storage/leveldb_store_test.go (about) 1 package storage 2 3 import ( 4 "testing" 5 6 "github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig" 7 "github.com/stretchr/testify/require" 8 "github.com/syndtr/goleveldb/leveldb" 9 ) 10 11 func newLevelDBForTesting(t testing.TB) Store { 12 ldbDir := t.TempDir() 13 opts := dbconfig.LevelDBOptions{ 14 DataDirectoryPath: ldbDir, 15 } 16 newLevelStore, err := NewLevelDBStore(opts) 17 require.Nil(t, err, "NewLevelDBStore error") 18 return newLevelStore 19 } 20 21 func TestROLevelDB(t *testing.T) { 22 ldbDir := t.TempDir() 23 opts := dbconfig.LevelDBOptions{ 24 DataDirectoryPath: ldbDir, 25 ReadOnly: true, 26 } 27 28 // If DB doesn't exist, then error should be returned. 29 _, err := NewLevelDBStore(opts) 30 require.Error(t, err) 31 32 // Create the DB and try to open it in RO mode. 33 opts.ReadOnly = false 34 store, err := NewLevelDBStore(opts) 35 require.NoError(t, err) 36 require.NoError(t, store.Close()) 37 opts.ReadOnly = true 38 39 store, err = NewLevelDBStore(opts) 40 require.NoError(t, err) 41 t.Cleanup(func() { require.NoError(t, store.Close()) }) 42 // Changes must be prohibited. 43 putErr := store.PutChangeSet(map[string][]byte{"one": []byte("one")}, nil) 44 require.ErrorIs(t, putErr, leveldb.ErrReadOnly) 45 }