From 8574f923e8fd5e0b3d3eb39aabe3834f9ee20537 Mon Sep 17 00:00:00 2001 From: Adrian Brink Date: Wed, 28 Mar 2018 14:33:48 +0200 Subject: [PATCH 1/5] Mount every single store with its own DB --- baseapp/baseapp.go | 8 +++++--- examples/basecoin/app/app.go | 24 ++++++++++++++++++++++-- examples/kvstore/main.go | 2 +- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index 3dad0483a3..dd0c35eaa8 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -54,6 +54,7 @@ type BaseApp struct { var _ abci.Application = (*BaseApp)(nil) // Create and name new BaseApp +// NOTE: The db is used to store the version number for now. func NewBaseApp(name string, logger log.Logger, db dbm.DB) *BaseApp { return &BaseApp{ Logger: logger, @@ -70,15 +71,16 @@ func (app *BaseApp) Name() string { } // Mount a store to the provided key in the BaseApp multistore +// Broken until #532 is implemented. func (app *BaseApp) MountStoresIAVL(keys ...*sdk.KVStoreKey) { for _, key := range keys { - app.MountStore(key, sdk.StoreTypeIAVL) + app.MountStore(key, sdk.StoreTypeIAVL, app.db) } } // Mount a store to the provided key in the BaseApp multistore -func (app *BaseApp) MountStore(key sdk.StoreKey, typ sdk.StoreType) { - app.cms.MountStoreWithDB(key, typ, app.db) +func (app *BaseApp) MountStore(key sdk.StoreKey, typ sdk.StoreType, db dbm.DB) { + app.cms.MountStoreWithDB(key, typ, db) } // nolint - Set functions diff --git a/examples/basecoin/app/app.go b/examples/basecoin/app/app.go index e5235bd667..4595d1bfb4 100644 --- a/examples/basecoin/app/app.go +++ b/examples/basecoin/app/app.go @@ -2,6 +2,8 @@ package app import ( "encoding/json" + "os" + "path/filepath" abci "github.com/tendermint/abci/types" oldwire "github.com/tendermint/go-wire" @@ -66,12 +68,30 @@ func NewBasecoinApp(logger log.Logger, db dbm.DB) *BasecoinApp { AddRoute("ibc", ibc.NewHandler(ibcMapper, coinKeeper)). AddRoute("staking", staking.NewHandler(stakeKeeper)) + rootDir := os.ExpandEnv("$HOME/.basecoind") + dbMain, err := dbm.NewGoLevelDB("basecoin-main", filepath.Join(rootDir, "data")) + if err != nil { + cmn.Exit(err.Error()) + } + dbIBC, err := dbm.NewGoLevelDB("basecoin-ibc", filepath.Join(rootDir, "data")) + if err != nil { + cmn.Exit(err.Error()) + } + dbStaking, err := dbm.NewGoLevelDB("basecoin-staking", filepath.Join(rootDir, "data")) + if err != nil { + cmn.Exit(err.Error()) + } + // initialize BaseApp app.SetTxDecoder(app.txDecoder) app.SetInitChainer(app.initChainer) - app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore) + app.MountStore(app.capKeyMainStore, sdk.StoreTypeIAVL, dbMain) + app.MountStore(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbIBC) + app.MountStore(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbStaking) + // NOTE: Broken until #532 lands + //app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore) app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper)) - err := app.LoadLatestVersion(app.capKeyMainStore) + err = app.LoadLatestVersion(app.capKeyMainStore) if err != nil { cmn.Exit(err.Error()) } diff --git a/examples/kvstore/main.go b/examples/kvstore/main.go index 5ffe590f1a..538235bf4d 100644 --- a/examples/kvstore/main.go +++ b/examples/kvstore/main.go @@ -30,7 +30,7 @@ func main() { var baseApp = bam.NewBaseApp("kvstore", logger, db) // Set mounts for BaseApp's MultiStore. - baseApp.MountStore(capKeyMainStore, sdk.StoreTypeIAVL) + baseApp.MountStoresIAVL(capKeyMainStore) // Set Tx decoder baseApp.SetTxDecoder(decodeTx) From 243564c2331725edfa7386d80a126b7fab8ccb75 Mon Sep 17 00:00:00 2001 From: Adrian Brink Date: Wed, 28 Mar 2018 15:08:59 +0200 Subject: [PATCH 2/5] Tests can never be proven to be non-deterministic Our tests are at best probabilistic deterministic. --- client/lcd/lcd_test.go | 2 +- examples/basecoin/app/app.go | 25 ++++++------------------- examples/basecoin/app/app_test.go | 11 ++++++----- examples/basecoin/cmd/basecoind/main.go | 16 ++++++++++++++-- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/client/lcd/lcd_test.go b/client/lcd/lcd_test.go index 285cf4d6d7..c21884d056 100644 --- a/client/lcd/lcd_test.go +++ b/client/lcd/lcd_test.go @@ -315,7 +315,7 @@ func startTMAndLCD() (*nm.Node, net.Listener, error) { logger = log.NewFilter(logger, log.AllowError()) privValidatorFile := config.PrivValidatorFile() privVal := tmtypes.LoadOrGenPrivValidatorFS(privValidatorFile) - app := bapp.NewBasecoinApp(logger, dbm.NewMemDB()) + app := bapp.NewBasecoinApp(logger, dbm.NewMemDB(), dbm.NewMemDB(), dbm.NewMemDB(), dbm.NewMemDB()) genesisFile := config.GenesisFile() genDoc, err := tmtypes.GenesisDocFromFile(genesisFile) diff --git a/examples/basecoin/app/app.go b/examples/basecoin/app/app.go index 4595d1bfb4..8bdab890ff 100644 --- a/examples/basecoin/app/app.go +++ b/examples/basecoin/app/app.go @@ -2,8 +2,6 @@ package app import ( "encoding/json" - "os" - "path/filepath" abci "github.com/tendermint/abci/types" oldwire "github.com/tendermint/go-wire" @@ -34,6 +32,7 @@ type BasecoinApp struct { // keys to access the substores capKeyMainStore *sdk.KVStoreKey + capKeyAccountStore *sdk.KVStoreKey capKeyIBCStore *sdk.KVStoreKey capKeyStakingStore *sdk.KVStoreKey @@ -41,12 +40,13 @@ type BasecoinApp struct { accountMapper sdk.AccountMapper } -func NewBasecoinApp(logger log.Logger, db dbm.DB) *BasecoinApp { +func NewBasecoinApp(logger log.Logger, dbMain, dbAcc, dbIBC, dbStaking dbm.DB) *BasecoinApp { // create your application object var app = &BasecoinApp{ - BaseApp: bam.NewBaseApp(appName, logger, db), + BaseApp: bam.NewBaseApp(appName, logger, dbMain), cdc: MakeCodec(), capKeyMainStore: sdk.NewKVStoreKey("main"), + capKeyAccountStore: sdk.NewKVStoreKey("acc"), capKeyIBCStore: sdk.NewKVStoreKey("ibc"), capKeyStakingStore: sdk.NewKVStoreKey("staking"), } @@ -68,30 +68,17 @@ func NewBasecoinApp(logger log.Logger, db dbm.DB) *BasecoinApp { AddRoute("ibc", ibc.NewHandler(ibcMapper, coinKeeper)). AddRoute("staking", staking.NewHandler(stakeKeeper)) - rootDir := os.ExpandEnv("$HOME/.basecoind") - dbMain, err := dbm.NewGoLevelDB("basecoin-main", filepath.Join(rootDir, "data")) - if err != nil { - cmn.Exit(err.Error()) - } - dbIBC, err := dbm.NewGoLevelDB("basecoin-ibc", filepath.Join(rootDir, "data")) - if err != nil { - cmn.Exit(err.Error()) - } - dbStaking, err := dbm.NewGoLevelDB("basecoin-staking", filepath.Join(rootDir, "data")) - if err != nil { - cmn.Exit(err.Error()) - } - // initialize BaseApp app.SetTxDecoder(app.txDecoder) app.SetInitChainer(app.initChainer) app.MountStore(app.capKeyMainStore, sdk.StoreTypeIAVL, dbMain) + app.MountStore(app.capKeyAccountStore, sdk.StoreTypeIAVL, dbAcc) app.MountStore(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbIBC) app.MountStore(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbStaking) // NOTE: Broken until #532 lands //app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore) app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper)) - err = app.LoadLatestVersion(app.capKeyMainStore) + err := app.LoadLatestVersion(app.capKeyMainStore) if err != nil { cmn.Exit(err.Error()) } diff --git a/examples/basecoin/app/app_test.go b/examples/basecoin/app/app_test.go index b1a1c4cade..3767dcc392 100644 --- a/examples/basecoin/app/app_test.go +++ b/examples/basecoin/app/app_test.go @@ -68,8 +68,11 @@ var ( func newBasecoinApp() *BasecoinApp { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "sdk/app") - db := dbm.NewMemDB() - return NewBasecoinApp(logger, db) + dbMain := dbm.NewMemDB() + dbAcc := dbm.NewMemDB() + dbIBC := dbm.NewMemDB() + dbStaking := dbm.NewMemDB() + return NewBasecoinApp(logger, dbMain, dbAcc, dbIBC, dbStaking) } //_______________________________________________________________________ @@ -112,9 +115,7 @@ func TestMsgs(t *testing.T) { } func TestGenesis(t *testing.T) { - logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "sdk/app") - db := dbm.NewMemDB() - bapp := NewBasecoinApp(logger, db) + bapp := newBasecoinApp() // Construct some genesis bytes to reflect basecoin/types/AppAccount pk := crypto.GenPrivKeyEd25519().PubKey() diff --git a/examples/basecoin/cmd/basecoind/main.go b/examples/basecoin/cmd/basecoind/main.go index b25847358d..2c1fe851f0 100644 --- a/examples/basecoin/cmd/basecoind/main.go +++ b/examples/basecoin/cmd/basecoind/main.go @@ -51,11 +51,23 @@ func defaultOptions(args []string) (json.RawMessage, error) { } func generateApp(rootDir string, logger log.Logger) (abci.Application, error) { - db, err := dbm.NewGoLevelDB("basecoin", filepath.Join(rootDir, "data")) + dbMain, err := dbm.NewGoLevelDB("basecoin", filepath.Join(rootDir, "data")) if err != nil { return nil, err } - bapp := app.NewBasecoinApp(logger, db) + dbAcc, err := dbm.NewGoLevelDB("basecoin-acc", filepath.Join(rootDir, "data")) + if err != nil { + return nil, err + } + dbIBC, err := dbm.NewGoLevelDB("basecoin-ibc", filepath.Join(rootDir, "data")) + if err != nil { + return nil, err + } + dbStaking, err := dbm.NewGoLevelDB("basecoin-staking", filepath.Join(rootDir, "data")) + if err != nil { + return nil, err + } + bapp := app.NewBasecoinApp(logger, dbMain, dbAcc, dbIBC, dbStaking) return bapp, nil } From fcc8a9a415907483bbe25cac3eb3c74b3ded37eb Mon Sep 17 00:00:00 2001 From: Adrian Brink Date: Thu, 29 Mar 2018 20:44:56 +0200 Subject: [PATCH 3/5] Address comments I hope this is correct. I'm feely pretty dizzy right now from the fish food. --- baseapp/baseapp.go | 9 +++++++-- baseapp/baseapp_test.go | 23 +++++++++++++---------- examples/basecoin/app/app.go | 8 ++++---- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index dd0c35eaa8..fefad88718 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -74,15 +74,20 @@ func (app *BaseApp) Name() string { // Broken until #532 is implemented. func (app *BaseApp) MountStoresIAVL(keys ...*sdk.KVStoreKey) { for _, key := range keys { - app.MountStore(key, sdk.StoreTypeIAVL, app.db) + app.MountStore(key, sdk.StoreTypeIAVL) } } // Mount a store to the provided key in the BaseApp multistore -func (app *BaseApp) MountStore(key sdk.StoreKey, typ sdk.StoreType, db dbm.DB) { +func (app *BaseApp) MountStoreWithDB(key sdk.StoreKey, typ sdk.StoreType, db dbm.DB) { app.cms.MountStoreWithDB(key, typ, db) } +// Mount a store to the provided key in the BaseApp multistore +func (app *BaseApp) MountStore(key sdk.StoreKey, typ sdk.StoreType) { + app.cms.MountStoreWithDB(key, typ, app.db) +} + // nolint - Set functions func (app *BaseApp) SetTxDecoder(txDecoder sdk.TxDecoder) { app.txDecoder = txDecoder diff --git a/baseapp/baseapp_test.go b/baseapp/baseapp_test.go index de9a0253c5..c04631b415 100644 --- a/baseapp/baseapp_test.go +++ b/baseapp/baseapp_test.go @@ -35,12 +35,15 @@ func TestMountStores(t *testing.T) { // make some cap keys capKey1 := sdk.NewKVStoreKey("key1") + db1 := dbm.NewMemDB() capKey2 := sdk.NewKVStoreKey("key2") + db2 := dbm.NewMemDB() // no stores are mounted assert.Panics(t, func() { app.LoadLatestVersion(capKey1) }) - app.MountStoresIAVL(capKey1, capKey2) + app.MountStoreWithDB(capKey1, sdk.StoreTypeIAVL, db1) + app.MountStoreWithDB(capKey2, sdk.StoreTypeIAVL, db2) // stores are mounted err := app.LoadLatestVersion(capKey1) @@ -126,7 +129,6 @@ func TestTxDecoder(t *testing.T) { // Test that Info returns the latest committed state. func TestInfo(t *testing.T) { - app := newBaseApp(t.Name()) // ----- test an empty response ------- @@ -145,17 +147,19 @@ func TestInfo(t *testing.T) { } func TestInitChainer(t *testing.T) { - logger := defaultLogger() - db := dbm.NewMemDB() name := t.Name() + db := dbm.NewMemDB() + logger := defaultLogger() app := NewBaseApp(name, logger, db) - // make cap keys and mount the stores // NOTE/TODO: mounting multiple stores is broken // see https://github.com/cosmos/cosmos-sdk/issues/532 capKey := sdk.NewKVStoreKey("main") - // capKey2 := sdk.NewKVStoreKey("key2") - app.MountStoresIAVL(capKey) // , capKey2) + db1 := dbm.NewMemDB() + capKey2 := sdk.NewKVStoreKey("key2") + db2 := dbm.NewMemDB() + app.MountStoreWithDB(capKey, sdk.StoreTypeIAVL, db1) + app.MountStoreWithDB(capKey2, sdk.StoreTypeIAVL, db2) err := app.LoadLatestVersion(capKey) // needed to make stores non-nil assert.Nil(t, err) @@ -187,9 +191,8 @@ func TestInitChainer(t *testing.T) { // reload app app = NewBaseApp(name, logger, db) - capKey = sdk.NewKVStoreKey("main") - // capKey2 = sdk.NewKVStoreKey("key2") // TODO - app.MountStoresIAVL(capKey) //, capKey2) + app.MountStoreWithDB(capKey, sdk.StoreTypeIAVL, db1) + app.MountStoreWithDB(capKey2, sdk.StoreTypeIAVL, db2) err = app.LoadLatestVersion(capKey) // needed to make stores non-nil assert.Nil(t, err) app.SetInitChainer(initChainer) diff --git a/examples/basecoin/app/app.go b/examples/basecoin/app/app.go index 8bdab890ff..ca235fb70f 100644 --- a/examples/basecoin/app/app.go +++ b/examples/basecoin/app/app.go @@ -71,10 +71,10 @@ func NewBasecoinApp(logger log.Logger, dbMain, dbAcc, dbIBC, dbStaking dbm.DB) * // initialize BaseApp app.SetTxDecoder(app.txDecoder) app.SetInitChainer(app.initChainer) - app.MountStore(app.capKeyMainStore, sdk.StoreTypeIAVL, dbMain) - app.MountStore(app.capKeyAccountStore, sdk.StoreTypeIAVL, dbAcc) - app.MountStore(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbIBC) - app.MountStore(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbStaking) + app.MountStoreWithDB(app.capKeyMainStore, sdk.StoreTypeIAVL, dbMain) + app.MountStoreWithDB(app.capKeyAccountStore, sdk.StoreTypeIAVL, dbAcc) + app.MountStoreWithDB(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbIBC) + app.MountStoreWithDB(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbStaking) // NOTE: Broken until #532 lands //app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore) app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper)) From 0789a5eed071762dea6a8b9f18056cd8d48c1c03 Mon Sep 17 00:00:00 2001 From: Adrian Brink Date: Fri, 30 Mar 2018 12:18:12 +0200 Subject: [PATCH 4/5] NewBasecoinApp takes a map of databases NewBasecoinApp takes a map[string]dbm.DB . This stabilises the API, since it allows us to add more stores without a breaking change. The convention is that the keys of the dbs correspond to the names of the capKeys. --- client/lcd/lcd_test.go | 8 +++++++- examples/basecoin/app/app.go | 12 ++++++------ examples/basecoin/app/app_test.go | 12 +++++++----- examples/basecoin/cmd/basecoind/main.go | 8 +++++++- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/client/lcd/lcd_test.go b/client/lcd/lcd_test.go index c21884d056..609a3b0641 100644 --- a/client/lcd/lcd_test.go +++ b/client/lcd/lcd_test.go @@ -315,7 +315,13 @@ func startTMAndLCD() (*nm.Node, net.Listener, error) { logger = log.NewFilter(logger, log.AllowError()) privValidatorFile := config.PrivValidatorFile() privVal := tmtypes.LoadOrGenPrivValidatorFS(privValidatorFile) - app := bapp.NewBasecoinApp(logger, dbm.NewMemDB(), dbm.NewMemDB(), dbm.NewMemDB(), dbm.NewMemDB()) + dbs := map[string]dbm.DB{ + "main": dbm.NewMemDB(), + "acc": dbm.NewMemDB(), + "ibc": dbm.NewMemDB(), + "staking": dbm.NewMemDB(), + } + app := bapp.NewBasecoinApp(logger, dbs) genesisFile := config.GenesisFile() genDoc, err := tmtypes.GenesisDocFromFile(genesisFile) diff --git a/examples/basecoin/app/app.go b/examples/basecoin/app/app.go index ca235fb70f..36d140e8a4 100644 --- a/examples/basecoin/app/app.go +++ b/examples/basecoin/app/app.go @@ -40,10 +40,10 @@ type BasecoinApp struct { accountMapper sdk.AccountMapper } -func NewBasecoinApp(logger log.Logger, dbMain, dbAcc, dbIBC, dbStaking dbm.DB) *BasecoinApp { +func NewBasecoinApp(logger log.Logger, dbs map[string]dbm.DB) *BasecoinApp { // create your application object var app = &BasecoinApp{ - BaseApp: bam.NewBaseApp(appName, logger, dbMain), + BaseApp: bam.NewBaseApp(appName, logger, dbs["main"]), cdc: MakeCodec(), capKeyMainStore: sdk.NewKVStoreKey("main"), capKeyAccountStore: sdk.NewKVStoreKey("acc"), @@ -71,10 +71,10 @@ func NewBasecoinApp(logger log.Logger, dbMain, dbAcc, dbIBC, dbStaking dbm.DB) * // initialize BaseApp app.SetTxDecoder(app.txDecoder) app.SetInitChainer(app.initChainer) - app.MountStoreWithDB(app.capKeyMainStore, sdk.StoreTypeIAVL, dbMain) - app.MountStoreWithDB(app.capKeyAccountStore, sdk.StoreTypeIAVL, dbAcc) - app.MountStoreWithDB(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbIBC) - app.MountStoreWithDB(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbStaking) + app.MountStoreWithDB(app.capKeyMainStore, sdk.StoreTypeIAVL, dbs["main"]) + app.MountStoreWithDB(app.capKeyAccountStore, sdk.StoreTypeIAVL, dbs["acc"]) + app.MountStoreWithDB(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbs["ibc"]) + app.MountStoreWithDB(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbs["staking"]) // NOTE: Broken until #532 lands //app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore) app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper)) diff --git a/examples/basecoin/app/app_test.go b/examples/basecoin/app/app_test.go index 3767dcc392..f80836744e 100644 --- a/examples/basecoin/app/app_test.go +++ b/examples/basecoin/app/app_test.go @@ -68,11 +68,13 @@ var ( func newBasecoinApp() *BasecoinApp { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "sdk/app") - dbMain := dbm.NewMemDB() - dbAcc := dbm.NewMemDB() - dbIBC := dbm.NewMemDB() - dbStaking := dbm.NewMemDB() - return NewBasecoinApp(logger, dbMain, dbAcc, dbIBC, dbStaking) + dbs := map[string]dbm.DB{ + "main": dbm.NewMemDB(), + "acc": dbm.NewMemDB(), + "ibc": dbm.NewMemDB(), + "staking": dbm.NewMemDB(), + } + return NewBasecoinApp(logger, dbs) } //_______________________________________________________________________ diff --git a/examples/basecoin/cmd/basecoind/main.go b/examples/basecoin/cmd/basecoind/main.go index 2c1fe851f0..8315456a35 100644 --- a/examples/basecoin/cmd/basecoind/main.go +++ b/examples/basecoin/cmd/basecoind/main.go @@ -67,7 +67,13 @@ func generateApp(rootDir string, logger log.Logger) (abci.Application, error) { if err != nil { return nil, err } - bapp := app.NewBasecoinApp(logger, dbMain, dbAcc, dbIBC, dbStaking) + dbs := map[string]dbm.DB{ + "main": dbMain, + "acc": dbAcc, + "ibc": dbIBC, + "staking": dbStaking, + } + bapp := app.NewBasecoinApp(logger, dbs) return bapp, nil } From 55e72781ceb16e481565fed65f3b6e25023386a6 Mon Sep 17 00:00:00 2001 From: Ethan Buchman Date: Fri, 30 Mar 2018 13:40:04 +0300 Subject: [PATCH 5/5] basecoin: uncomment test --- examples/basecoin/app/app_test.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/examples/basecoin/app/app_test.go b/examples/basecoin/app/app_test.go index f80836744e..58a0d1f411 100644 --- a/examples/basecoin/app/app_test.go +++ b/examples/basecoin/app/app_test.go @@ -66,7 +66,7 @@ var ( } ) -func newBasecoinApp() *BasecoinApp { +func loggerAndDBs() (log.Logger, map[string]dbm.DB) { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "sdk/app") dbs := map[string]dbm.DB{ "main": dbm.NewMemDB(), @@ -74,6 +74,11 @@ func newBasecoinApp() *BasecoinApp { "ibc": dbm.NewMemDB(), "staking": dbm.NewMemDB(), } + return logger, dbs +} + +func newBasecoinApp() *BasecoinApp { + logger, dbs := loggerAndDBs() return NewBasecoinApp(logger, dbs) } @@ -117,7 +122,8 @@ func TestMsgs(t *testing.T) { } func TestGenesis(t *testing.T) { - bapp := newBasecoinApp() + logger, dbs := loggerAndDBs() + bapp := NewBasecoinApp(logger, dbs) // Construct some genesis bytes to reflect basecoin/types/AppAccount pk := crypto.GenPrivKeyEd25519().PubKey() @@ -145,13 +151,12 @@ func TestGenesis(t *testing.T) { ctx := bapp.BaseApp.NewContext(true, abci.Header{}) res1 := bapp.accountMapper.GetAccount(ctx, baseAcc.Address) assert.Equal(t, acc, res1) - /* - // reload app and ensure the account is still there - bapp = NewBasecoinApp(logger, db) - ctx = bapp.BaseApp.NewContext(true, abci.Header{}) - res1 = bapp.accountMapper.GetAccount(ctx, baseAcc.Address) - assert.Equal(t, acc, res1) - */ + + // reload app and ensure the account is still there + bapp = NewBasecoinApp(logger, dbs) + ctx = bapp.BaseApp.NewContext(true, abci.Header{}) + res1 = bapp.accountMapper.GetAccount(ctx, baseAcc.Address) + assert.Equal(t, acc, res1) } func TestSendMsgWithAccounts(t *testing.T) {