From 68bc3c175a1425ae44744a9c86d14a44ccdfd648 Mon Sep 17 00:00:00 2001 From: Charly Date: Fri, 25 Aug 2023 17:56:57 +0200 Subject: [PATCH 1/9] add proposal simulator and tests --- .../simulation/proposals.go | 41 +++++++++++++++++++ .../simulation/proposals_test.go | 41 +++++++++++++++++++ .../core/02-client/simulation/proposals.go | 41 +++++++++++++++++++ .../02-client/simulation/proposals_test.go | 41 +++++++++++++++++++ 4 files changed, 164 insertions(+) create mode 100644 modules/apps/27-interchain-accounts/simulation/proposals.go create mode 100644 modules/apps/27-interchain-accounts/simulation/proposals_test.go create mode 100644 modules/core/02-client/simulation/proposals.go create mode 100644 modules/core/02-client/simulation/proposals_test.go diff --git a/modules/apps/27-interchain-accounts/simulation/proposals.go b/modules/apps/27-interchain-accounts/simulation/proposals.go new file mode 100644 index 00000000000..d54ce29d83b --- /dev/null +++ b/modules/apps/27-interchain-accounts/simulation/proposals.go @@ -0,0 +1,41 @@ +package simulation + +import ( + "math/rand" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" +) + +// Simulation operation weights constants +const ( + DefaultWeightMsgUpdateParams int = 100 + + OpWeightMsgUpdateParams = "op_weight_msg_update_params" +) + +// ProposalMsgs defines the module weighted proposals' contents +func ProposalMsgs() []simtypes.WeightedProposalMsg { + return []simtypes.WeightedProposalMsg{ + simulation.NewWeightedProposalMsg( + OpWeightMsgUpdateParams, + DefaultWeightMsgUpdateParams, + SimulateMsgUpdateParams, + ), + } +} + +// SimulateMsgUpdateParams returns a random MsgUpdateParams +func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { + var authority sdk.AccAddress = address.Module("gov") + params := types.DefaultParams() + params.HostEnabled = false + + return &types.MsgUpdateParams{ + Authority: authority.String(), + Params: params, + } +} diff --git a/modules/apps/27-interchain-accounts/simulation/proposals_test.go b/modules/apps/27-interchain-accounts/simulation/proposals_test.go new file mode 100644 index 00000000000..bec34630612 --- /dev/null +++ b/modules/apps/27-interchain-accounts/simulation/proposals_test.go @@ -0,0 +1,41 @@ +package simulation_test + +import ( + "math/rand" + "testing" + + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + "gotest.tools/v3/assert" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" + "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/simulation" +) + +func TestProposalMsgs(t *testing.T) { + // initialize parameters + s := rand.NewSource(1) + r := rand.New(s) + + ctx := sdk.NewContext(nil, cmtproto.Header{}, true, nil) + accounts := simtypes.RandomAccounts(r, 3) + + // execute ProposalMsgs function + weightedProposalMsgs := simulation.ProposalMsgs() + assert.Assert(t, len(weightedProposalMsgs) == 1) + + w0 := weightedProposalMsgs[0] + + // tests w0 interface: + assert.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey()) + assert.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) + + msg := w0.MsgSimulatorFn()(r, ctx, accounts) + msgUpdateParams, ok := msg.(*types.MsgUpdateParams) + assert.Assert(t, ok) + + assert.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + assert.Equal(t, msgUpdateParams.Params.HostEnabled, false) +} diff --git a/modules/core/02-client/simulation/proposals.go b/modules/core/02-client/simulation/proposals.go new file mode 100644 index 00000000000..50f9c539a55 --- /dev/null +++ b/modules/core/02-client/simulation/proposals.go @@ -0,0 +1,41 @@ +package simulation + +import ( + "math/rand" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" +) + +// Simulation operation weights constants +const ( + DefaultWeightMsgUpdateParams int = 100 + + OpWeightMsgUpdateParams = "op_weight_msg_update_params" +) + +// ProposalMsgs defines the module weighted proposals' contents +func ProposalMsgs() []simtypes.WeightedProposalMsg { + return []simtypes.WeightedProposalMsg{ + simulation.NewWeightedProposalMsg( + OpWeightMsgUpdateParams, + DefaultWeightMsgUpdateParams, + SimulateMsgUpdateParams, + ), + } +} + +// SimulateMsgUpdateParams returns a random MsgUpdateParams +func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { + var authority sdk.AccAddress = address.Module("gov") + params := types.DefaultParams() + params.AllowedClients = []string{"06-solomachine", "07-tendermint"} + + return &types.MsgUpdateParams{ + Authority: authority.String(), + Params: params, + } +} diff --git a/modules/core/02-client/simulation/proposals_test.go b/modules/core/02-client/simulation/proposals_test.go new file mode 100644 index 00000000000..00df2d15e51 --- /dev/null +++ b/modules/core/02-client/simulation/proposals_test.go @@ -0,0 +1,41 @@ +package simulation_test + +import ( + "math/rand" + "testing" + + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + "gotest.tools/v3/assert" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/ibc-go/v7/modules/core/02-client/simulation" + "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" +) + +func TestProposalMsgs(t *testing.T) { + // initialize parameters + s := rand.NewSource(1) + r := rand.New(s) + + ctx := sdk.NewContext(nil, cmtproto.Header{}, true, nil) + accounts := simtypes.RandomAccounts(r, 3) + + // execute ProposalMsgs function + weightedProposalMsgs := simulation.ProposalMsgs() + assert.Assert(t, len(weightedProposalMsgs) == 1) + + w0 := weightedProposalMsgs[0] + + // tests w0 interface: + assert.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey()) + assert.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) + + msg := w0.MsgSimulatorFn()(r, ctx, accounts) + msgUpdateParams, ok := msg.(*types.MsgUpdateParams) + assert.Assert(t, ok) + + assert.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + assert.DeepEqual(t, msgUpdateParams.Params.AllowedClients, []string{"06-solomachine", "07-tendermint"}) +} From 5c1c65546ef00cd2fe780b9d14e57d99526dc0c5 Mon Sep 17 00:00:00 2001 From: Charly Date: Sat, 26 Aug 2023 13:49:01 +0200 Subject: [PATCH 2/9] linter --- .../simulation/proposals.go | 3 ++- .../simulation/proposals_test.go | 19 ++++++++++--------- .../core/02-client/simulation/proposals.go | 3 ++- .../02-client/simulation/proposals_test.go | 18 ++++++++++-------- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/modules/apps/27-interchain-accounts/simulation/proposals.go b/modules/apps/27-interchain-accounts/simulation/proposals.go index d54ce29d83b..38b43386992 100644 --- a/modules/apps/27-interchain-accounts/simulation/proposals.go +++ b/modules/apps/27-interchain-accounts/simulation/proposals.go @@ -7,6 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" + "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" ) @@ -14,7 +15,7 @@ import ( const ( DefaultWeightMsgUpdateParams int = 100 - OpWeightMsgUpdateParams = "op_weight_msg_update_params" + OpWeightMsgUpdateParams = "op_weight_msg_update_params" // #nosec ) // ProposalMsgs defines the module weighted proposals' contents diff --git a/modules/apps/27-interchain-accounts/simulation/proposals_test.go b/modules/apps/27-interchain-accounts/simulation/proposals_test.go index bec34630612..9f7e93fcc0a 100644 --- a/modules/apps/27-interchain-accounts/simulation/proposals_test.go +++ b/modules/apps/27-interchain-accounts/simulation/proposals_test.go @@ -4,12 +4,14 @@ import ( "math/rand" "testing" - cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" - "gotest.tools/v3/assert" + "github.com/stretchr/testify/require" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/simulation" ) @@ -24,18 +26,17 @@ func TestProposalMsgs(t *testing.T) { // execute ProposalMsgs function weightedProposalMsgs := simulation.ProposalMsgs() - assert.Assert(t, len(weightedProposalMsgs) == 1) - + require.Equal(t, len(weightedProposalMsgs), 1) w0 := weightedProposalMsgs[0] // tests w0 interface: - assert.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey()) - assert.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) + require.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey()) + require.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) msg := w0.MsgSimulatorFn()(r, ctx, accounts) msgUpdateParams, ok := msg.(*types.MsgUpdateParams) - assert.Assert(t, ok) + require.True(t, ok) - assert.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) - assert.Equal(t, msgUpdateParams.Params.HostEnabled, false) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + require.Equal(t, msgUpdateParams.Params.HostEnabled, false) } diff --git a/modules/core/02-client/simulation/proposals.go b/modules/core/02-client/simulation/proposals.go index 50f9c539a55..2009f71c33e 100644 --- a/modules/core/02-client/simulation/proposals.go +++ b/modules/core/02-client/simulation/proposals.go @@ -7,6 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" + "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" ) @@ -14,7 +15,7 @@ import ( const ( DefaultWeightMsgUpdateParams int = 100 - OpWeightMsgUpdateParams = "op_weight_msg_update_params" + OpWeightMsgUpdateParams = "op_weight_msg_update_params" // #nosec ) // ProposalMsgs defines the module weighted proposals' contents diff --git a/modules/core/02-client/simulation/proposals_test.go b/modules/core/02-client/simulation/proposals_test.go index 00df2d15e51..d8456e01a98 100644 --- a/modules/core/02-client/simulation/proposals_test.go +++ b/modules/core/02-client/simulation/proposals_test.go @@ -4,12 +4,14 @@ import ( "math/rand" "testing" - cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" - "gotest.tools/v3/assert" + "github.com/stretchr/testify/require" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + "github.com/cosmos/ibc-go/v7/modules/core/02-client/simulation" "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" ) @@ -24,18 +26,18 @@ func TestProposalMsgs(t *testing.T) { // execute ProposalMsgs function weightedProposalMsgs := simulation.ProposalMsgs() - assert.Assert(t, len(weightedProposalMsgs) == 1) + require.Equal(t, len(weightedProposalMsgs), 1) w0 := weightedProposalMsgs[0] // tests w0 interface: - assert.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey()) - assert.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) + require.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey()) + require.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) msg := w0.MsgSimulatorFn()(r, ctx, accounts) msgUpdateParams, ok := msg.(*types.MsgUpdateParams) - assert.Assert(t, ok) + require.True(t, ok) - assert.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) - assert.DeepEqual(t, msgUpdateParams.Params.AllowedClients, []string{"06-solomachine", "07-tendermint"}) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + require.EqualValues(t, msgUpdateParams.Params.AllowedClients, []string{"06-solomachine", "07-tendermint"}) } From 3aac9c1db7a309215b45945008aaee4c682ce11f Mon Sep 17 00:00:00 2001 From: Charly Date: Fri, 1 Sep 2023 13:41:44 +0200 Subject: [PATCH 3/9] call proposal sim function from appmodule --- modules/apps/27-interchain-accounts/module.go | 5 +++++ modules/core/module.go | 5 +++++ modules/core/{02-client => }/simulation/proposals.go | 0 modules/core/{02-client => }/simulation/proposals_test.go | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) rename modules/core/{02-client => }/simulation/proposals.go (100%) rename modules/core/{02-client => }/simulation/proposals_test.go (95%) diff --git a/modules/apps/27-interchain-accounts/module.go b/modules/apps/27-interchain-accounts/module.go index 1dceea8aa15..c1052b38b24 100644 --- a/modules/apps/27-interchain-accounts/module.go +++ b/modules/apps/27-interchain-accounts/module.go @@ -218,6 +218,11 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } +// ProposalMsgs returns msgs used for governance proposals for simulations. +func (AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg { + return simulation.ProposalMsgs() +} + // WeightedOperations is unimplemented. func (AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { return nil diff --git a/modules/core/module.go b/modules/core/module.go index 5369c955bc1..ada1054a472 100644 --- a/modules/core/module.go +++ b/modules/core/module.go @@ -190,6 +190,11 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } +// ProposalMsgs returns msgs used for governance proposals for simulations. +func (AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg { + return simulation.ProposalMsgs() +} + // RegisterStoreDecoder registers a decoder for ibc module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[exported.StoreKey] = simulation.NewDecodeStore(*am.keeper) diff --git a/modules/core/02-client/simulation/proposals.go b/modules/core/simulation/proposals.go similarity index 100% rename from modules/core/02-client/simulation/proposals.go rename to modules/core/simulation/proposals.go diff --git a/modules/core/02-client/simulation/proposals_test.go b/modules/core/simulation/proposals_test.go similarity index 95% rename from modules/core/02-client/simulation/proposals_test.go rename to modules/core/simulation/proposals_test.go index d8456e01a98..7cbbd71c7f6 100644 --- a/modules/core/02-client/simulation/proposals_test.go +++ b/modules/core/simulation/proposals_test.go @@ -12,8 +12,8 @@ import ( cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" - "github.com/cosmos/ibc-go/v7/modules/core/02-client/simulation" "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + "github.com/cosmos/ibc-go/v7/modules/core/simulation" ) func TestProposalMsgs(t *testing.T) { From 771e4380af5a21b87bfdb0caf2a09d2e639412ef Mon Sep 17 00:00:00 2001 From: Charly Date: Tue, 5 Sep 2023 10:53:29 +0200 Subject: [PATCH 4/9] add transfer sim proposal --- modules/apps/transfer/module.go | 5 +++ modules/apps/transfer/simulation/proposals.go | 42 ++++++++++++++++++ .../transfer/simulation/proposals_test.go | 43 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 modules/apps/transfer/simulation/proposals.go create mode 100644 modules/apps/transfer/simulation/proposals_test.go diff --git a/modules/apps/transfer/module.go b/modules/apps/transfer/module.go index ad9c4e39b39..bd0ffc74104 100644 --- a/modules/apps/transfer/module.go +++ b/modules/apps/transfer/module.go @@ -154,6 +154,11 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { simulation.RandomizedGenState(simState) } +// ProposalMsgs returns msgs used for governance proposals for simulations. +func (AppModule) ProposalMsgs(simState module.SimulationState) []simtypes.WeightedProposalMsg { + return simulation.ProposalMsgs() +} + // RegisterStoreDecoder registers a decoder for transfer module's types func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { sdr[types.StoreKey] = simulation.NewDecodeStore(am.keeper) diff --git a/modules/apps/transfer/simulation/proposals.go b/modules/apps/transfer/simulation/proposals.go new file mode 100644 index 00000000000..22eaff2a207 --- /dev/null +++ b/modules/apps/transfer/simulation/proposals.go @@ -0,0 +1,42 @@ +package simulation + +import ( + "math/rand" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + + "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" +) + +// Simulation operation weights constants +const ( + DefaultWeightMsgUpdateParams int = 100 + + OpWeightMsgUpdateParams = "op_weight_msg_update_params" // #nosec +) + +// ProposalMsgs defines the module weighted proposals' contents +func ProposalMsgs() []simtypes.WeightedProposalMsg { + return []simtypes.WeightedProposalMsg{ + simulation.NewWeightedProposalMsg( + OpWeightMsgUpdateParams, + DefaultWeightMsgUpdateParams, + SimulateMsgUpdateParams, + ), + } +} + +// SimulateMsgUpdateParams returns a random MsgUpdateParams +func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { + var authority sdk.AccAddress = address.Module("gov") + params := types.DefaultParams() + params.SendEnabled = false + + return &types.MsgUpdateParams{ + Authority: authority.String(), + Params: params, + } +} diff --git a/modules/apps/transfer/simulation/proposals_test.go b/modules/apps/transfer/simulation/proposals_test.go new file mode 100644 index 00000000000..f5d9081edb5 --- /dev/null +++ b/modules/apps/transfer/simulation/proposals_test.go @@ -0,0 +1,43 @@ +package simulation_test + +import ( + "math/rand" + "testing" + + "github.com/stretchr/testify/require" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + + "github.com/cosmos/ibc-go/v7/modules/apps/transfer/simulation" + "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" +) + +func TestProposalMsgs(t *testing.T) { + // initialize parameters + s := rand.NewSource(1) + r := rand.New(s) + + ctx := sdk.NewContext(nil, cmtproto.Header{}, true, nil) + accounts := simtypes.RandomAccounts(r, 3) + + // execute ProposalMsgs function + weightedProposalMsgs := simulation.ProposalMsgs() + require.Equal(t, len(weightedProposalMsgs), 1) + + w0 := weightedProposalMsgs[0] + + // tests w0 interface: + require.Equal(t, simulation.OpWeightMsgUpdateParams, w0.AppParamsKey()) + require.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) + + msg := w0.MsgSimulatorFn()(r, ctx, accounts) + msgUpdateParams, ok := msg.(*types.MsgUpdateParams) + require.True(t, ok) + + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + require.EqualValues(t, msgUpdateParams.Params.SendEnabled, false) +} From 75d6a17a83c5ecee6df9231c8f044fa195fe5764 Mon Sep 17 00:00:00 2001 From: Charly Date: Thu, 7 Sep 2023 14:20:11 +0200 Subject: [PATCH 5/9] update per pr comments --- .../simulation/proposals.go | 24 ++++++++++++++++--- .../simulation/proposals_test.go | 22 +++++++++++++---- modules/core/simulation/proposals.go | 24 ++++++++++++++++--- modules/core/simulation/proposals_test.go | 18 ++++++++++++-- 4 files changed, 76 insertions(+), 12 deletions(-) diff --git a/modules/apps/27-interchain-accounts/simulation/proposals.go b/modules/apps/27-interchain-accounts/simulation/proposals.go index 38b43386992..fdc84e7f8f9 100644 --- a/modules/apps/27-interchain-accounts/simulation/proposals.go +++ b/modules/apps/27-interchain-accounts/simulation/proposals.go @@ -9,6 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/simulation" "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" + controllertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" ) // Simulation operation weights constants @@ -24,13 +25,18 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg { simulation.NewWeightedProposalMsg( OpWeightMsgUpdateParams, DefaultWeightMsgUpdateParams, - SimulateMsgUpdateParams, + SimulateHostMsgUpdateParams, + ), + simulation.NewWeightedProposalMsg( + OpWeightMsgUpdateParams, + DefaultWeightMsgUpdateParams, + SimulateControllerMsgUpdateParams, ), } } -// SimulateMsgUpdateParams returns a random MsgUpdateParams -func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { +// SimulateHostMsgUpdateParams returns a random MsgUpdateParams for the host module +func SimulateHostMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { var authority sdk.AccAddress = address.Module("gov") params := types.DefaultParams() params.HostEnabled = false @@ -40,3 +46,15 @@ func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) Params: params, } } + +// SimulateControllerMsgUpdateParams returns a random MsgUpdateParams for the controller module +func SimulateControllerMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { + var authority sdk.AccAddress = address.Module("gov") + params := controllertypes.DefaultParams() + params.ControllerEnabled = false + + return &controllertypes.MsgUpdateParams{ + Authority: authority.String(), + Params: params, + } +} diff --git a/modules/apps/27-interchain-accounts/simulation/proposals_test.go b/modules/apps/27-interchain-accounts/simulation/proposals_test.go index 9f7e93fcc0a..f19a31eaaf4 100644 --- a/modules/apps/27-interchain-accounts/simulation/proposals_test.go +++ b/modules/apps/27-interchain-accounts/simulation/proposals_test.go @@ -12,6 +12,7 @@ import ( cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + controllertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/simulation" ) @@ -26,7 +27,7 @@ func TestProposalMsgs(t *testing.T) { // execute ProposalMsgs function weightedProposalMsgs := simulation.ProposalMsgs() - require.Equal(t, len(weightedProposalMsgs), 1) + require.Equal(t, 2, len(weightedProposalMsgs)) w0 := weightedProposalMsgs[0] // tests w0 interface: @@ -34,9 +35,22 @@ func TestProposalMsgs(t *testing.T) { require.Equal(t, simulation.DefaultWeightMsgUpdateParams, w0.DefaultWeight()) msg := w0.MsgSimulatorFn()(r, ctx, accounts) - msgUpdateParams, ok := msg.(*types.MsgUpdateParams) + msgUpdateHostParams, ok := msg.(*types.MsgUpdateParams) require.True(t, ok) - require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) - require.Equal(t, msgUpdateParams.Params.HostEnabled, false) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateHostParams.Authority) + require.Equal(t, msgUpdateHostParams.Params.HostEnabled, false) + + w1 := weightedProposalMsgs[1] + + // tests w1 interface: + require.Equal(t, simulation.OpWeightMsgUpdateParams, w1.AppParamsKey()) + require.Equal(t, simulation.DefaultWeightMsgUpdateParams, w1.DefaultWeight()) + + msg1 := w1.MsgSimulatorFn()(r, ctx, accounts) + msgUpdateControllerParams, ok := msg1.(*controllertypes.MsgUpdateParams) + require.True(t, ok) + + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateControllerParams.Authority) + require.Equal(t, msgUpdateControllerParams.Params.ControllerEnabled, false) } diff --git a/modules/core/simulation/proposals.go b/modules/core/simulation/proposals.go index 2009f71c33e..e3a983151e2 100644 --- a/modules/core/simulation/proposals.go +++ b/modules/core/simulation/proposals.go @@ -9,6 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/simulation" "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" ) // Simulation operation weights constants @@ -24,13 +25,18 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg { simulation.NewWeightedProposalMsg( OpWeightMsgUpdateParams, DefaultWeightMsgUpdateParams, - SimulateMsgUpdateParams, + SimulateClientMsgUpdateParams, + ), + simulation.NewWeightedProposalMsg( + OpWeightMsgUpdateParams, + DefaultWeightMsgUpdateParams, + SimulateConnectionMsgUpdateParams, ), } } -// SimulateMsgUpdateParams returns a random MsgUpdateParams -func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { +// SimulateClientMsgUpdateParams returns a random MsgUpdateParams for 02-client +func SimulateClientMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { var authority sdk.AccAddress = address.Module("gov") params := types.DefaultParams() params.AllowedClients = []string{"06-solomachine", "07-tendermint"} @@ -40,3 +46,15 @@ func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) Params: params, } } + +// SimulateConnectionMsgUpdateParams returns a random MsgUpdateParams 03-connection +func SimulateConnectionMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { + var authority sdk.AccAddress = address.Module("gov") + params := connectiontypes.DefaultParams() + params.MaxExpectedTimePerBlock = uint64(100) + + return &connectiontypes.MsgUpdateParams{ + Authority: authority.String(), + Params: params, + } +} diff --git a/modules/core/simulation/proposals_test.go b/modules/core/simulation/proposals_test.go index 7cbbd71c7f6..fd6b969ea3d 100644 --- a/modules/core/simulation/proposals_test.go +++ b/modules/core/simulation/proposals_test.go @@ -13,6 +13,7 @@ import ( cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" "github.com/cosmos/ibc-go/v7/modules/core/simulation" ) @@ -26,7 +27,7 @@ func TestProposalMsgs(t *testing.T) { // execute ProposalMsgs function weightedProposalMsgs := simulation.ProposalMsgs() - require.Equal(t, len(weightedProposalMsgs), 1) + require.Equal(t, 2, len(weightedProposalMsgs)) w0 := weightedProposalMsgs[0] @@ -39,5 +40,18 @@ func TestProposalMsgs(t *testing.T) { require.True(t, ok) require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) - require.EqualValues(t, msgUpdateParams.Params.AllowedClients, []string{"06-solomachine", "07-tendermint"}) + require.EqualValues(t, []string{"06-solomachine", "07-tendermint"}, msgUpdateParams.Params.AllowedClients) + + w1 := weightedProposalMsgs[1] + + // tests w1 interface: + require.Equal(t, simulation.OpWeightMsgUpdateParams, w1.AppParamsKey()) + require.Equal(t, simulation.DefaultWeightMsgUpdateParams, w1.DefaultWeight()) + + msg1 := w1.MsgSimulatorFn()(r, ctx, accounts) + msgUpdateConnectionParams, ok := msg1.(*connectiontypes.MsgUpdateParams) + require.True(t, ok) + + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + require.EqualValues(t, uint64(100), msgUpdateConnectionParams.Params.MaxExpectedTimePerBlock) } From 9c44bdfae406442327541c7f9e52af6e2460cf6b Mon Sep 17 00:00:00 2001 From: Charly Date: Thu, 7 Sep 2023 14:34:47 +0200 Subject: [PATCH 6/9] update authority -> signer --- .../27-interchain-accounts/simulation/proposals.go | 14 +++++++------- .../simulation/proposals_test.go | 4 ++-- modules/apps/transfer/simulation/proposals.go | 4 ++-- modules/apps/transfer/simulation/proposals_test.go | 2 +- modules/core/simulation/proposals.go | 8 ++++---- modules/core/simulation/proposals_test.go | 4 ++-- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/modules/apps/27-interchain-accounts/simulation/proposals.go b/modules/apps/27-interchain-accounts/simulation/proposals.go index fdc84e7f8f9..a4850a81fe3 100644 --- a/modules/apps/27-interchain-accounts/simulation/proposals.go +++ b/modules/apps/27-interchain-accounts/simulation/proposals.go @@ -8,8 +8,8 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" controllertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" + "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" ) // Simulation operation weights constants @@ -37,24 +37,24 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg { // SimulateHostMsgUpdateParams returns a random MsgUpdateParams for the host module func SimulateHostMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { - var authority sdk.AccAddress = address.Module("gov") + var signer sdk.AccAddress = address.Module("gov") params := types.DefaultParams() params.HostEnabled = false return &types.MsgUpdateParams{ - Authority: authority.String(), - Params: params, + Signer: signer.String(), + Params: params, } } // SimulateControllerMsgUpdateParams returns a random MsgUpdateParams for the controller module func SimulateControllerMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { - var authority sdk.AccAddress = address.Module("gov") + var signer sdk.AccAddress = address.Module("gov") params := controllertypes.DefaultParams() params.ControllerEnabled = false return &controllertypes.MsgUpdateParams{ - Authority: authority.String(), - Params: params, + Signer: signer.String(), + Params: params, } } diff --git a/modules/apps/27-interchain-accounts/simulation/proposals_test.go b/modules/apps/27-interchain-accounts/simulation/proposals_test.go index f19a31eaaf4..7d301845965 100644 --- a/modules/apps/27-interchain-accounts/simulation/proposals_test.go +++ b/modules/apps/27-interchain-accounts/simulation/proposals_test.go @@ -38,7 +38,7 @@ func TestProposalMsgs(t *testing.T) { msgUpdateHostParams, ok := msg.(*types.MsgUpdateParams) require.True(t, ok) - require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateHostParams.Authority) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateHostParams.Signer) require.Equal(t, msgUpdateHostParams.Params.HostEnabled, false) w1 := weightedProposalMsgs[1] @@ -51,6 +51,6 @@ func TestProposalMsgs(t *testing.T) { msgUpdateControllerParams, ok := msg1.(*controllertypes.MsgUpdateParams) require.True(t, ok) - require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateControllerParams.Authority) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateControllerParams.Signer) require.Equal(t, msgUpdateControllerParams.Params.ControllerEnabled, false) } diff --git a/modules/apps/transfer/simulation/proposals.go b/modules/apps/transfer/simulation/proposals.go index 22eaff2a207..b58de863ded 100644 --- a/modules/apps/transfer/simulation/proposals.go +++ b/modules/apps/transfer/simulation/proposals.go @@ -31,12 +31,12 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg { // SimulateMsgUpdateParams returns a random MsgUpdateParams func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { - var authority sdk.AccAddress = address.Module("gov") + var signer sdk.AccAddress = address.Module("gov") params := types.DefaultParams() params.SendEnabled = false return &types.MsgUpdateParams{ - Authority: authority.String(), + Signer: signer.String(), Params: params, } } diff --git a/modules/apps/transfer/simulation/proposals_test.go b/modules/apps/transfer/simulation/proposals_test.go index f5d9081edb5..c70c2016ed3 100644 --- a/modules/apps/transfer/simulation/proposals_test.go +++ b/modules/apps/transfer/simulation/proposals_test.go @@ -38,6 +38,6 @@ func TestProposalMsgs(t *testing.T) { msgUpdateParams, ok := msg.(*types.MsgUpdateParams) require.True(t, ok) - require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Signer) require.EqualValues(t, msgUpdateParams.Params.SendEnabled, false) } diff --git a/modules/core/simulation/proposals.go b/modules/core/simulation/proposals.go index e3a983151e2..c4bc92abbc9 100644 --- a/modules/core/simulation/proposals.go +++ b/modules/core/simulation/proposals.go @@ -37,24 +37,24 @@ func ProposalMsgs() []simtypes.WeightedProposalMsg { // SimulateClientMsgUpdateParams returns a random MsgUpdateParams for 02-client func SimulateClientMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { - var authority sdk.AccAddress = address.Module("gov") + var signer sdk.AccAddress = address.Module("gov") params := types.DefaultParams() params.AllowedClients = []string{"06-solomachine", "07-tendermint"} return &types.MsgUpdateParams{ - Authority: authority.String(), + Signer: signer.String(), Params: params, } } // SimulateConnectionMsgUpdateParams returns a random MsgUpdateParams 03-connection func SimulateConnectionMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) sdk.Msg { - var authority sdk.AccAddress = address.Module("gov") + var signer sdk.AccAddress = address.Module("gov") params := connectiontypes.DefaultParams() params.MaxExpectedTimePerBlock = uint64(100) return &connectiontypes.MsgUpdateParams{ - Authority: authority.String(), + Signer: signer.String(), Params: params, } } diff --git a/modules/core/simulation/proposals_test.go b/modules/core/simulation/proposals_test.go index fd6b969ea3d..18df7281cb6 100644 --- a/modules/core/simulation/proposals_test.go +++ b/modules/core/simulation/proposals_test.go @@ -39,7 +39,7 @@ func TestProposalMsgs(t *testing.T) { msgUpdateParams, ok := msg.(*types.MsgUpdateParams) require.True(t, ok) - require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Signer) require.EqualValues(t, []string{"06-solomachine", "07-tendermint"}, msgUpdateParams.Params.AllowedClients) w1 := weightedProposalMsgs[1] @@ -52,6 +52,6 @@ func TestProposalMsgs(t *testing.T) { msgUpdateConnectionParams, ok := msg1.(*connectiontypes.MsgUpdateParams) require.True(t, ok) - require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Authority) + require.Equal(t, sdk.AccAddress(address.Module("gov")).String(), msgUpdateParams.Signer) require.EqualValues(t, uint64(100), msgUpdateConnectionParams.Params.MaxExpectedTimePerBlock) } From e8fd92e1a1467e7d0c2b6427cb6e0c8cadc61487 Mon Sep 17 00:00:00 2001 From: Charly Date: Thu, 7 Sep 2023 14:37:33 +0200 Subject: [PATCH 7/9] linter --- modules/apps/transfer/simulation/proposals.go | 2 +- modules/core/simulation/proposals.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/apps/transfer/simulation/proposals.go b/modules/apps/transfer/simulation/proposals.go index b58de863ded..f97fcb9b33d 100644 --- a/modules/apps/transfer/simulation/proposals.go +++ b/modules/apps/transfer/simulation/proposals.go @@ -37,6 +37,6 @@ func SimulateMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Account) return &types.MsgUpdateParams{ Signer: signer.String(), - Params: params, + Params: params, } } diff --git a/modules/core/simulation/proposals.go b/modules/core/simulation/proposals.go index c4bc92abbc9..68546c716a8 100644 --- a/modules/core/simulation/proposals.go +++ b/modules/core/simulation/proposals.go @@ -43,7 +43,7 @@ func SimulateClientMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes.Acc return &types.MsgUpdateParams{ Signer: signer.String(), - Params: params, + Params: params, } } @@ -55,6 +55,6 @@ func SimulateConnectionMsgUpdateParams(r *rand.Rand, _ sdk.Context, _ []simtypes return &connectiontypes.MsgUpdateParams{ Signer: signer.String(), - Params: params, + Params: params, } } From 5eac14cfe6a98eabbf0333149bf1769d56c0f659 Mon Sep 17 00:00:00 2001 From: colin axner <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Sep 2023 16:18:01 +0200 Subject: [PATCH 8/9] chore: add compiler assertions for module.HasProposalMsgs --- modules/apps/27-interchain-accounts/module.go | 1 + modules/apps/transfer/module.go | 9 +++++---- modules/core/module.go | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/apps/27-interchain-accounts/module.go b/modules/apps/27-interchain-accounts/module.go index 860d18096d3..14e75076cf2 100644 --- a/modules/apps/27-interchain-accounts/module.go +++ b/modules/apps/27-interchain-accounts/module.go @@ -36,6 +36,7 @@ var ( _ module.AppModule = (*AppModule)(nil) _ module.AppModuleBasic = (*AppModuleBasic)(nil) _ module.AppModuleSimulation = (*AppModule)(nil) + _ module.HasProposalMsgs = (*AppModule)(nil) _ appmodule.AppModule = (*AppModule)(nil) _ porttypes.IBCModule = (*host.IBCModule)(nil) diff --git a/modules/apps/transfer/module.go b/modules/apps/transfer/module.go index 0405c00e678..1dc0e2d7bfb 100644 --- a/modules/apps/transfer/module.go +++ b/modules/apps/transfer/module.go @@ -27,10 +27,11 @@ import ( ) var ( - _ module.AppModule = (*AppModule)(nil) - _ module.AppModuleBasic = (*AppModuleBasic)(nil) - _ appmodule.AppModule = (*AppModule)(nil) - _ porttypes.IBCModule = (*IBCModule)(nil) + _ module.AppModule = (*AppModule)(nil) + _ module.AppModuleBasic = (*AppModuleBasic)(nil) + _ module.HasProposalMsgs = (*AppModuleBasic)(nil) + _ appmodule.AppModule = (*AppModule)(nil) + _ porttypes.IBCModule = (*IBCModule)(nil) ) // AppModuleBasic is the IBC Transfer AppModuleBasic diff --git a/modules/core/module.go b/modules/core/module.go index ebef3f82985..244a25a39ed 100644 --- a/modules/core/module.go +++ b/modules/core/module.go @@ -36,6 +36,7 @@ var ( _ module.AppModule = (*AppModule)(nil) _ module.AppModuleBasic = (*AppModuleBasic)(nil) _ module.AppModuleSimulation = (*AppModule)(nil) + _ module.HasProposalMsgs = (*AppModule)(nil) _ appmodule.AppModule = (*AppModule)(nil) ) From 1c2fae1e197e29ab95aa57497d360a8bbb003a2f Mon Sep 17 00:00:00 2001 From: colin axner <25233464+colin-axner@users.noreply.github.com> Date: Thu, 7 Sep 2023 16:33:32 +0200 Subject: [PATCH 9/9] fix: correct compiler assertion for HasProposalMsgs --- modules/apps/27-interchain-accounts/module.go | 2 +- modules/apps/transfer/module.go | 2 +- modules/core/module.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/apps/27-interchain-accounts/module.go b/modules/apps/27-interchain-accounts/module.go index 14e75076cf2..346bed3b162 100644 --- a/modules/apps/27-interchain-accounts/module.go +++ b/modules/apps/27-interchain-accounts/module.go @@ -36,7 +36,7 @@ var ( _ module.AppModule = (*AppModule)(nil) _ module.AppModuleBasic = (*AppModuleBasic)(nil) _ module.AppModuleSimulation = (*AppModule)(nil) - _ module.HasProposalMsgs = (*AppModule)(nil) + _ module.HasProposalMsgs = AppModule{} _ appmodule.AppModule = (*AppModule)(nil) _ porttypes.IBCModule = (*host.IBCModule)(nil) diff --git a/modules/apps/transfer/module.go b/modules/apps/transfer/module.go index 1dc0e2d7bfb..1d85d406c76 100644 --- a/modules/apps/transfer/module.go +++ b/modules/apps/transfer/module.go @@ -29,7 +29,7 @@ import ( var ( _ module.AppModule = (*AppModule)(nil) _ module.AppModuleBasic = (*AppModuleBasic)(nil) - _ module.HasProposalMsgs = (*AppModuleBasic)(nil) + _ module.HasProposalMsgs = AppModule{} _ appmodule.AppModule = (*AppModule)(nil) _ porttypes.IBCModule = (*IBCModule)(nil) ) diff --git a/modules/core/module.go b/modules/core/module.go index 244a25a39ed..b21e6397f5a 100644 --- a/modules/core/module.go +++ b/modules/core/module.go @@ -36,7 +36,7 @@ var ( _ module.AppModule = (*AppModule)(nil) _ module.AppModuleBasic = (*AppModuleBasic)(nil) _ module.AppModuleSimulation = (*AppModule)(nil) - _ module.HasProposalMsgs = (*AppModule)(nil) + _ module.HasProposalMsgs = AppModule{} _ appmodule.AppModule = (*AppModule)(nil) )