* [10948]: Add changelog entry. * [10948]: Deprecate the types.DBBackend variable and the NewLevelDB function. Create a NewDB function to replace them. * [10948]: Add a DBBackend string to the simulation config and a flag for setting it. Update the simulation setup to use that instead of the compile-time DBBackend variable. * [10948]: Update the mock app creator to use the NewDB function. Not sure what to do about the db backend in that case though. * [10948]: Update changelog to reflect new db-backend field name. * [10948]: Use the tendermint db-backend type for the snapshot db. * [10948]: Update the last use of NewLevelDB by adding a parameter to openDB and uppdating calls to that to provide the db type to use. * [10948]: Upddate the NewDB function to also have a default db backend type if an empty string is provided there. * [10948]: Remove the new TODO in mock.NewApp. After looking through it's uses, there doesn't seem to be any desire to change it, and there's no easy way to communicate it. * [10948]: Enhance the NewDB defer function to also add info to any err that is being returned. * [10948]: Add some unit tests for NewDB. * [10948]: Lint fixes. * [10948]: Add a changelog entry to the deprecated section. * [10948]: Update the makefile to no longer set the types.DBBackend value. * [10948]: Use memdb for the mock app instead of goleveldb. I know it was a goleveldb before, but for a mock app, a memdb feels like a better choice (assuming 'mock' and 'mem' mean what I assume they mean). * [10948]: Fix the store benchmark tests (had some index-out-of-range issues). * [10948]: Fix cachekv store bench test calling iter.Key() before checking iter.Valid(). * [10948]: Remove the panic recovery from types.NewDB since dbm.NewDB returns an error now (it didn't originally, when NewLevelDB was first written). * [10948]: Add changlog entry indicationg an API breaking change due to the DBBackend change. * [10948]: Get rid of the types.NewDB function in favor of just using the tm-db version of it. * [10948]: Fix Update the codeql-analysis github action to use go v1.17. * [10948]: Add config file option for the app db backend type. * [10948]: Adjust the comment on the app-db-backend config entry to clarify fallback behavior. * [10948]: Add a default of GoLevelDBBackend to GetAppDBBackend. The old DBBackend variable defaulted to that, and some unit tests assume that behavior still exists. * [10948]: Add the missing quotes around the app-db-backend value. * [10948]: Small tweak to the changelog's deprecated entry. * Add the go version declaration back into the codeql-analysis github action. * [10948]: Update new use of openDB. * [10948]: Put a brief delay after closing the test network. Hopefully that helps with address-in-use and non-empty directory errors. Co-authored-by: Marko <marbar3778@yahoo.com>
79 lines
3.7 KiB
Go
79 lines
3.7 KiB
Go
package simapp
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"github.com/cosmos/cosmos-sdk/types/simulation"
|
|
)
|
|
|
|
// List of available flags for the simulator
|
|
var (
|
|
FlagGenesisFileValue string
|
|
FlagParamsFileValue string
|
|
FlagExportParamsPathValue string
|
|
FlagExportParamsHeightValue int
|
|
FlagExportStatePathValue string
|
|
FlagExportStatsPathValue string
|
|
FlagSeedValue int64
|
|
FlagInitialBlockHeightValue int
|
|
FlagNumBlocksValue int
|
|
FlagBlockSizeValue int
|
|
FlagLeanValue bool
|
|
FlagCommitValue bool
|
|
FlagOnOperationValue bool // TODO: Remove in favor of binary search for invariant violation
|
|
FlagAllInvariantsValue bool
|
|
FlagDBBackendValue string
|
|
|
|
FlagEnabledValue bool
|
|
FlagVerboseValue bool
|
|
FlagPeriodValue uint
|
|
FlagGenesisTimeValue int64
|
|
)
|
|
|
|
// GetSimulatorFlags gets the values of all the available simulation flags
|
|
func GetSimulatorFlags() {
|
|
// config fields
|
|
flag.StringVar(&FlagGenesisFileValue, "Genesis", "", "custom simulation genesis file; cannot be used with params file")
|
|
flag.StringVar(&FlagParamsFileValue, "Params", "", "custom simulation params file which overrides any random params; cannot be used with genesis")
|
|
flag.StringVar(&FlagExportParamsPathValue, "ExportParamsPath", "", "custom file path to save the exported params JSON")
|
|
flag.IntVar(&FlagExportParamsHeightValue, "ExportParamsHeight", 0, "height to which export the randomly generated params")
|
|
flag.StringVar(&FlagExportStatePathValue, "ExportStatePath", "", "custom file path to save the exported app state JSON")
|
|
flag.StringVar(&FlagExportStatsPathValue, "ExportStatsPath", "", "custom file path to save the exported simulation statistics JSON")
|
|
flag.Int64Var(&FlagSeedValue, "Seed", 42, "simulation random seed")
|
|
flag.IntVar(&FlagInitialBlockHeightValue, "InitialBlockHeight", 1, "initial block to start the simulation")
|
|
flag.IntVar(&FlagNumBlocksValue, "NumBlocks", 500, "number of new blocks to simulate from the initial block height")
|
|
flag.IntVar(&FlagBlockSizeValue, "BlockSize", 200, "operations per block")
|
|
flag.BoolVar(&FlagLeanValue, "Lean", false, "lean simulation log output")
|
|
flag.BoolVar(&FlagCommitValue, "Commit", false, "have the simulation commit")
|
|
flag.BoolVar(&FlagOnOperationValue, "SimulateEveryOperation", false, "run slow invariants every operation")
|
|
flag.BoolVar(&FlagAllInvariantsValue, "PrintAllInvariants", false, "print all invariants if a broken invariant is found")
|
|
flag.StringVar(&FlagDBBackendValue, "DBBackend", "goleveldb", "custom db backend type")
|
|
|
|
// simulation flags
|
|
flag.BoolVar(&FlagEnabledValue, "Enabled", false, "enable the simulation")
|
|
flag.BoolVar(&FlagVerboseValue, "Verbose", false, "verbose log output")
|
|
flag.UintVar(&FlagPeriodValue, "Period", 0, "run slow invariants only once every period assertions")
|
|
flag.Int64Var(&FlagGenesisTimeValue, "GenesisTime", 0, "override genesis UNIX time instead of using a random UNIX time")
|
|
}
|
|
|
|
// NewConfigFromFlags creates a simulation from the retrieved values of the flags.
|
|
func NewConfigFromFlags() simulation.Config {
|
|
return simulation.Config{
|
|
GenesisFile: FlagGenesisFileValue,
|
|
ParamsFile: FlagParamsFileValue,
|
|
ExportParamsPath: FlagExportParamsPathValue,
|
|
ExportParamsHeight: FlagExportParamsHeightValue,
|
|
ExportStatePath: FlagExportStatePathValue,
|
|
ExportStatsPath: FlagExportStatsPathValue,
|
|
Seed: FlagSeedValue,
|
|
InitialBlockHeight: FlagInitialBlockHeightValue,
|
|
NumBlocks: FlagNumBlocksValue,
|
|
BlockSize: FlagBlockSizeValue,
|
|
Lean: FlagLeanValue,
|
|
Commit: FlagCommitValue,
|
|
OnOperation: FlagOnOperationValue,
|
|
AllInvariants: FlagAllInvariantsValue,
|
|
DBBackend: FlagDBBackendValue,
|
|
}
|
|
}
|