docs: fix supported database types

This commit is contained in:
Anna Shaleva 2022-10-05 09:05:36 +03:00
parent 2f5137e9b7
commit 70e59d83c9
8 changed files with 51 additions and 9 deletions

View file

@ -8,6 +8,7 @@ import (
"github.com/nspcc-dev/neo-go/internal/testcli"
"github.com/nspcc-dev/neo-go/pkg/config"
"github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v3"
)
@ -19,7 +20,7 @@ func TestDBRestoreDump(t *testing.T) {
chainPath := filepath.Join(tmpDir, "neogotestchain")
cfg, err := config.LoadFile(filepath.Join("..", "..", "config", "protocol.unit_testnet.yml"))
require.NoError(t, err, "could not load config")
cfg.ApplicationConfiguration.DBConfiguration.Type = "leveldb"
cfg.ApplicationConfiguration.DBConfiguration.Type = dbconfig.LevelDB
cfg.ApplicationConfiguration.DBConfiguration.LevelDBOptions.DataDirectoryPath = chainPath
return cfg
}

View file

@ -13,6 +13,7 @@ import (
"github.com/nspcc-dev/neo-go/cli/server"
"github.com/nspcc-dev/neo-go/internal/testcli"
"github.com/nspcc-dev/neo-go/pkg/config"
"github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v3"
)
@ -25,7 +26,7 @@ func TestServerStart(t *testing.T) {
saveCfg := func(t *testing.T, f func(cfg *config.Config)) string {
cfg := *ptr
chainPath := filepath.Join(t.TempDir(), "neogotestchain")
cfg.ApplicationConfiguration.DBConfiguration.Type = "leveldb"
cfg.ApplicationConfiguration.DBConfiguration.Type = dbconfig.LevelDB
cfg.ApplicationConfiguration.DBConfiguration.LevelDBOptions.DataDirectoryPath = chainPath
f(&cfg)
out, err := yaml.Marshal(cfg)

View file

@ -350,7 +350,7 @@ func TestInitBlockChain(t *testing.T) {
_, err := initBlockChain(config.Config{
ApplicationConfiguration: config.ApplicationConfiguration{
DBConfiguration: dbconfig.DBConfiguration{
Type: "inmemory",
Type: dbconfig.InMemoryDB,
},
},
}, nil)

View file

@ -53,8 +53,8 @@ DBConfiguration:
ReadOnly: false
```
where:
- `Type` is the database type (string value). Supported types: `levelDB` and
`boltDB`.
- `Type` is the database type (string value). Supported types: `leveldb`, `boltdb` and
`inmemory` (not recommended for production usage).
- `LevelDBOptions` are settings for LevelDB. Includes the DB files path and ReadOnly mode toggle.
If ReadOnly mode is on, then an error will be returned on attempt to connect to unexisting or empty
database. Database doesn't allow changes in this mode, a warning will be logged on DB persist attempts.

View file

@ -288,7 +288,7 @@ func TestManagement_StartFromHeight(t *testing.T) {
// Create database to be able to start another chain from the same height later.
ldbDir := t.TempDir()
dbConfig := dbconfig.DBConfiguration{
Type: "leveldb",
Type: dbconfig.LevelDB,
LevelDBOptions: dbconfig.LevelDBOptions{
DataDirectoryPath: ldbDir,
},

View file

@ -0,0 +1,11 @@
package dbconfig
// Available storage types.
const (
// BoltDB represents Bolt DB storage name.
BoltDB = "boltdb"
// LevelDB represents Level DB storage name.
LevelDB = "leveldb"
// InMemoryDB represents in-memory storage name.
InMemoryDB = "inmemory"
)

View file

@ -114,11 +114,11 @@ func NewStore(cfg dbconfig.DBConfiguration) (Store, error) {
var store Store
var err error
switch cfg.Type {
case "leveldb":
case dbconfig.LevelDB:
store, err = NewLevelDBStore(cfg.LevelDBOptions)
case "inmemory":
case dbconfig.InMemoryDB:
store = NewMemoryStore()
case "boltdb":
case dbconfig.BoltDB:
store, err = NewBoltDBStore(cfg.BoltDBOptions)
default:
return nil, fmt.Errorf("unknown storage: %s", cfg.Type)

View file

@ -0,0 +1,29 @@
package storage
import (
"path/filepath"
"testing"
"github.com/nspcc-dev/neo-go/pkg/core/storage/dbconfig"
"github.com/stretchr/testify/require"
)
func TestStorageNames(t *testing.T) {
tmp := t.TempDir()
cfg := dbconfig.DBConfiguration{
LevelDBOptions: dbconfig.LevelDBOptions{
DataDirectoryPath: filepath.Join(tmp, "level"),
},
BoltDBOptions: dbconfig.BoltDBOptions{
FilePath: filepath.Join(tmp, "bolt"),
},
}
for _, name := range []string{dbconfig.BoltDB, dbconfig.LevelDB, dbconfig.InMemoryDB} {
t.Run(name, func(t *testing.T) {
cfg.Type = name
s, err := NewStore(cfg)
require.NoError(t, err)
require.NoError(t, s.Close())
})
}
}