erigon-pulse/kv/memdb/memory_database.go
2021-07-28 10:36:06 +07:00

54 lines
1.4 KiB
Go

// Copyright 2014 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package memdb
import (
"context"
"testing"
"github.com/ledgerwatch/erigon-lib/kv"
"github.com/ledgerwatch/erigon-lib/kv/mdbx"
"github.com/ledgerwatch/erigon-lib/log"
)
func New() kv.RwDB {
logger := log.New() //TODO: move higher
return mdbx.NewMDBX(logger).InMem().MustOpen()
}
func NewTestDB(t testing.TB) kv.RwDB {
db := New()
t.Cleanup(db.Close)
return db
}
func NewTestTx(t testing.TB) (kv.RwDB, kv.RwTx) {
db := New()
t.Cleanup(db.Close)
tx, err := db.BeginRw(context.Background()) //nolint
if err != nil {
t.Fatal(err)
}
switch tt := t.(type) {
case *testing.T:
if tt != nil {
tt.Cleanup(tx.Rollback)
}
}
return db, tx
}