fix: add simulation tests for new param change (#14728)
This commit is contained in:
+43
-16
@@ -17,9 +17,6 @@ type AppModuleSimulation interface {
|
||||
// randomized genesis states
|
||||
GenerateGenesisState(input *SimulationState)
|
||||
|
||||
// content functions used to simulate governance proposals
|
||||
ProposalContents(simState SimulationState) []simulation.WeightedProposalContent
|
||||
|
||||
// register a func to decode the each module's defined types from their corresponding store key
|
||||
RegisterStoreDecoder(simulation.StoreDecoderRegistry)
|
||||
|
||||
@@ -27,6 +24,18 @@ type AppModuleSimulation interface {
|
||||
WeightedOperations(simState SimulationState) []simulation.WeightedOperation
|
||||
}
|
||||
|
||||
// HasProposalMsgs defines the messages that can be used to simulate governance (v1) proposals
|
||||
type HasProposalMsgs interface {
|
||||
// msg functions used to simulate governance proposals
|
||||
ProposalMsgs(simState SimulationState) []simulation.WeightedProposalMsg
|
||||
}
|
||||
|
||||
// HasProposalContents defines the contents that can be used to simulate legacy governance (v1beta1) proposals
|
||||
type HasProposalContents interface {
|
||||
// content functions used to simulate governance proposals
|
||||
ProposalContents(simState SimulationState) []simulation.WeightedProposalContent //nolint:staticcheck
|
||||
}
|
||||
|
||||
// SimulationManager defines a simulation manager that provides the high level utility
|
||||
// for managing and executing simulation functionalities for a group of modules
|
||||
type SimulationManager struct {
|
||||
@@ -76,12 +85,28 @@ func NewSimulationManagerFromAppModules(modules map[string]interface{}, override
|
||||
return NewSimulationManager(simModules...)
|
||||
}
|
||||
|
||||
// Deprecated: Use GetProposalMsgs instead.
|
||||
// GetProposalContents returns each module's proposal content generator function
|
||||
// with their default operation weight and key.
|
||||
func (sm *SimulationManager) GetProposalContents(simState SimulationState) []simulation.WeightedProposalContent {
|
||||
wContents := make([]simulation.WeightedProposalContent, 0, len(sm.Modules))
|
||||
for _, module := range sm.Modules {
|
||||
wContents = append(wContents, module.ProposalContents(simState)...)
|
||||
if module, ok := module.(HasProposalContents); ok {
|
||||
wContents = append(wContents, module.ProposalContents(simState)...)
|
||||
}
|
||||
}
|
||||
|
||||
return wContents
|
||||
}
|
||||
|
||||
// GetProposalMsgs returns each module's proposal msg generator function
|
||||
// with their default operation weight and key.
|
||||
func (sm *SimulationManager) GetProposalMsgs(simState SimulationState) []simulation.WeightedProposalMsg {
|
||||
wContents := make([]simulation.WeightedProposalMsg, 0, len(sm.Modules))
|
||||
for _, module := range sm.Modules {
|
||||
if module, ok := module.(HasProposalMsgs); ok {
|
||||
wContents = append(wContents, module.ProposalMsgs(simState)...)
|
||||
}
|
||||
}
|
||||
|
||||
return wContents
|
||||
@@ -115,16 +140,18 @@ func (sm *SimulationManager) WeightedOperations(simState SimulationState) []simu
|
||||
// SimulationState is the input parameters used on each of the module's randomized
|
||||
// GenesisState generator function
|
||||
type SimulationState struct {
|
||||
AppParams simulation.AppParams
|
||||
Cdc codec.JSONCodec // application codec
|
||||
Rand *rand.Rand // random number
|
||||
GenState map[string]json.RawMessage // genesis state
|
||||
Accounts []simulation.Account // simulation accounts
|
||||
InitialStake sdkmath.Int // initial coins per account
|
||||
NumBonded int64 // number of initially bonded accounts
|
||||
BondDenom string // denom to be used as default
|
||||
GenTimestamp time.Time // genesis timestamp
|
||||
UnbondTime time.Duration // staking unbond time stored to use it as the slashing maximum evidence duration
|
||||
ParamChanges []simulation.ParamChange // simulated parameter changes from modules
|
||||
Contents []simulation.WeightedProposalContent // proposal content generator functions with their default weight and app sim key
|
||||
AppParams simulation.AppParams
|
||||
Cdc codec.JSONCodec // application codec
|
||||
Rand *rand.Rand // random number
|
||||
GenState map[string]json.RawMessage // genesis state
|
||||
Accounts []simulation.Account // simulation accounts
|
||||
InitialStake sdkmath.Int // initial coins per account
|
||||
NumBonded int64 // number of initially bonded accounts
|
||||
BondDenom string // denom to be used as default
|
||||
GenTimestamp time.Time // genesis timestamp
|
||||
UnbondTime time.Duration // staking unbond time stored to use it as the slashing maximum evidence duration
|
||||
LegacyParamChange []simulation.LegacyParamChange // simulated parameter changes from modules
|
||||
//nolint:staticcheck
|
||||
LegacyProposalContents []simulation.WeightedProposalContent // proposal content generator functions with their default weight and app sim key
|
||||
ProposalMsgs []simulation.WeightedProposalMsg // proposal msg generator functions with their default weight and app sim key
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user