Add db package

Add own db (storage) package with db.Storage interface, with Memory & Leveldb
implementations, and with tests.

Adapted with several changes from
https://github.com/iden3/go-iden3-core/tree/v0.0.8/db
This commit is contained in:
arnaucube
2020-07-14 22:37:56 +02:00
parent 3d1b7886ea
commit 716a0ede91
9 changed files with 676 additions and 13 deletions

View File

@@ -0,0 +1,57 @@
package leveldb
import (
"io/ioutil"
"os"
"testing"
"github.com/iden3/go-merkletree/db"
"github.com/iden3/go-merkletree/db/test"
"github.com/stretchr/testify/require"
)
var rmDirs []string
func levelDbStorage(t *testing.T) db.Storage {
dir, err := ioutil.TempDir("", "db")
rmDirs = append(rmDirs, dir)
if err != nil {
t.Fatal(err)
return nil
}
sto, err := NewLevelDbStorage(dir, false)
if err != nil {
t.Fatal(err)
return nil
}
return sto
}
func TestLevelDb(t *testing.T) {
test.TestReturnKnownErrIfNotExists(t, levelDbStorage(t))
test.TestStorageInsertGet(t, levelDbStorage(t))
test.TestStorageWithPrefix(t, levelDbStorage(t))
test.TestConcatTx(t, levelDbStorage(t))
test.TestList(t, levelDbStorage(t))
test.TestIterate(t, levelDbStorage(t))
}
func TestLevelDbInterface(t *testing.T) {
var db db.Storage //nolint:gosimple
dir, err := ioutil.TempDir("", "db")
require.Nil(t, err)
rmDirs = append(rmDirs, dir)
sto, err := NewLevelDbStorage(dir, false)
require.Nil(t, err)
db = sto
require.NotNil(t, db)
}
func TestMain(m *testing.M) {
result := m.Run()
for _, dir := range rmDirs {
os.RemoveAll(dir)
}
os.Exit(result)
}