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))
|
return []byte(fmt.Sprintf("signed/%d/%s", i.EmitterChain, i.EmitterAddress))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Deprecate in favor of OpenDb
|
||||||
func Open(path string) (*Database, error) {
|
func Open(path string) (*Database, error) {
|
||||||
db, err := badger.Open(badger.DefaultOptions(path))
|
db, err := badger.Open(badger.DefaultOptions(path))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -4,18 +4,30 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
|
"github.com/dgraph-io/badger/v3"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
func OpenDb(logger *zap.Logger, dataDir *string) *Database {
|
func OpenDb(logger *zap.Logger, dataDir *string) *Database {
|
||||||
|
var options badger.Options
|
||||||
|
|
||||||
|
if dataDir != nil {
|
||||||
dbPath := path.Join(*dataDir, "db")
|
dbPath := path.Join(*dataDir, "db")
|
||||||
if err := os.MkdirAll(dbPath, 0700); err != nil {
|
if err := os.MkdirAll(dbPath, 0700); err != nil {
|
||||||
logger.Fatal("failed to create database directory", zap.Error(err))
|
logger.Fatal("failed to create database directory", zap.Error(err))
|
||||||
}
|
}
|
||||||
db, err := Open(dbPath)
|
|
||||||
|
options = badger.DefaultOptions(dbPath)
|
||||||
|
} else {
|
||||||
|
options = badger.DefaultOptions("").WithInMemory(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
db, err := badger.Open(options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal("failed to open database", zap.Error(err))
|
logger.Fatal("failed to open database", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
return db
|
return &Database{
|
||||||
|
db: db,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ import (
|
||||||
math_rand "math/rand"
|
math_rand "math/rand"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -128,9 +127,7 @@ func mockGuardianRunnable(gs []*mockGuardian, mockGuardianIndex uint, obsDb mock
|
||||||
logger := supervisor.Logger(ctx)
|
logger := supervisor.Logger(ctx)
|
||||||
|
|
||||||
// setup db
|
// setup db
|
||||||
dataDir := fmt.Sprintf("/tmp/test_guardian_%d", mockGuardianIndex)
|
db := db.OpenDb(logger, nil)
|
||||||
_ = os.RemoveAll(dataDir) // delete any pre-existing data
|
|
||||||
db := db.OpenDb(logger, &dataDir)
|
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
// set environment
|
// 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 "" }),
|
GuardianOptionP2P(gs[mockGuardianIndex].p2pKey, networkID, bootstrapPeers, nodeName, false, p2pPort, func() string { return "" }),
|
||||||
GuardianOptionPublicRpcSocket(publicSocketPath, common.GrpcLogDetailFull),
|
GuardianOptionPublicRpcSocket(publicSocketPath, common.GrpcLogDetailFull),
|
||||||
GuardianOptionPublicrpcTcpService(publicRpc, 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),
|
GuardianOptionAdminService(adminSocketPath, nil, nil, rpcMap),
|
||||||
GuardianOptionStatusServer(fmt.Sprintf("[::]:%d", mockStatusPort(mockGuardianIndex))),
|
GuardianOptionStatusServer(fmt.Sprintf("[::]:%d", mockStatusPort(mockGuardianIndex))),
|
||||||
GuardianOptionProcessor(),
|
GuardianOptionProcessor(),
|
||||||
|
@ -190,10 +187,6 @@ func mockGuardianRunnable(gs []*mockGuardian, mockGuardianIndex uint, obsDb mock
|
||||||
}
|
}
|
||||||
|
|
||||||
<-ctx.Done()
|
<-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
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue