node/db: Support in-memory DB and use in tests
This commit is contained in:
parent
cf29f6c410
commit
03bf786b47
|
@ -83,6 +83,7 @@ func (i *VAAID) EmitterPrefixBytes() []byte {
|
|||
return []byte(fmt.Sprintf("signed/%d/%s", i.EmitterChain, i.EmitterAddress))
|
||||
}
|
||||
|
||||
// TODO: Deprecate in favor of OpenDb
|
||||
func Open(path string) (*Database, error) {
|
||||
db, err := badger.Open(badger.DefaultOptions(path))
|
||||
if err != nil {
|
||||
|
|
|
@ -4,18 +4,30 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/dgraph-io/badger/v3"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func OpenDb(logger *zap.Logger, dataDir *string) *Database {
|
||||
dbPath := path.Join(*dataDir, "db")
|
||||
if err := os.MkdirAll(dbPath, 0700); err != nil {
|
||||
logger.Fatal("failed to create database directory", zap.Error(err))
|
||||
var options badger.Options
|
||||
|
||||
if dataDir != nil {
|
||||
dbPath := path.Join(*dataDir, "db")
|
||||
if err := os.MkdirAll(dbPath, 0700); err != nil {
|
||||
logger.Fatal("failed to create database directory", zap.Error(err))
|
||||
}
|
||||
|
||||
options = badger.DefaultOptions(dbPath)
|
||||
} else {
|
||||
options = badger.DefaultOptions("").WithInMemory(true)
|
||||
}
|
||||
db, err := Open(dbPath)
|
||||
|
||||
db, err := badger.Open(options)
|
||||
if err != nil {
|
||||
logger.Fatal("failed to open database", zap.Error(err))
|
||||
}
|
||||
|
||||
return db
|
||||
return &Database{
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ import (
|
|||
math_rand "math/rand"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -128,9 +127,7 @@ func mockGuardianRunnable(gs []*mockGuardian, mockGuardianIndex uint, obsDb mock
|
|||
logger := supervisor.Logger(ctx)
|
||||
|
||||
// setup db
|
||||
dataDir := fmt.Sprintf("/tmp/test_guardian_%d", mockGuardianIndex)
|
||||
_ = os.RemoveAll(dataDir) // delete any pre-existing data
|
||||
db := db.OpenDb(logger, &dataDir)
|
||||
db := db.OpenDb(logger, nil)
|
||||
defer db.Close()
|
||||
|
||||
// set environment
|
||||
|
@ -174,7 +171,7 @@ func mockGuardianRunnable(gs []*mockGuardian, mockGuardianIndex uint, obsDb mock
|
|||
GuardianOptionP2P(gs[mockGuardianIndex].p2pKey, networkID, bootstrapPeers, nodeName, false, p2pPort, func() string { return "" }),
|
||||
GuardianOptionPublicRpcSocket(publicSocketPath, common.GrpcLogDetailFull),
|
||||
GuardianOptionPublicrpcTcpService(publicRpc, common.GrpcLogDetailFull),
|
||||
GuardianOptionPublicWeb(mockPublicWeb(mockGuardianIndex), publicSocketPath, "", false, path.Join(dataDir, "autocert")),
|
||||
GuardianOptionPublicWeb(mockPublicWeb(mockGuardianIndex), publicSocketPath, "", false, ""),
|
||||
GuardianOptionAdminService(adminSocketPath, nil, nil, rpcMap),
|
||||
GuardianOptionStatusServer(fmt.Sprintf("[::]:%d", mockStatusPort(mockGuardianIndex))),
|
||||
GuardianOptionProcessor(),
|
||||
|
@ -190,10 +187,6 @@ func mockGuardianRunnable(gs []*mockGuardian, mockGuardianIndex uint, obsDb mock
|
|||
}
|
||||
|
||||
<-ctx.Done()
|
||||
|
||||
// cleanup
|
||||
// _ = os.RemoveAll(dataDir) // we don't do this for now since this could run before BadgerDB's flush(), causing an error; Meh
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue