diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a6262a3a3..a6521f6edf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (x/modules) [\#722](https://github.com/line/lbm-sdk/pull/722) Check error for `RegisterQueryHandlerClient` in all modules `RegisterGRPCGatewayRoutes` * (x/bank) [\#716](https://github.com/line/lbm-sdk/pull/716) remove useless DenomMetadata key function * (x/foundation) [\#704](https://github.com/line/lbm-sdk/pull/704) update x/foundation params +* (x/wasm) [\#695](https://github.com/line/lbm-sdk/pull/695) fix to prevent external filesystem dependency of simulation ### Bug Fixes * (x/wasm) [\#453](https://github.com/line/lbm-sdk/pull/453) modify wasm grpc query api path diff --git a/x/wasm/keeper/testdata/reflect.go b/x/wasm/keeper/testdata/reflect.go new file mode 100644 index 0000000000..ad365ce0c2 --- /dev/null +++ b/x/wasm/keeper/testdata/reflect.go @@ -0,0 +1,12 @@ +package testdata + +import ( + _ "embed" +) + +//go:embed reflect.wasm +var reflectContract []byte + +func ReflectContractWasm() []byte { + return reflectContract +} diff --git a/x/wasm/simulation/operations.go b/x/wasm/simulation/operations.go index 6ecc03df3e..cf04af35d3 100644 --- a/x/wasm/simulation/operations.go +++ b/x/wasm/simulation/operations.go @@ -2,7 +2,6 @@ package simulation import ( "math/rand" - "os" "github.com/line/lbm-sdk/baseapp" simappparams "github.com/line/lbm-sdk/simapp/params" @@ -10,6 +9,7 @@ import ( "github.com/line/lbm-sdk/types/module" simtypes "github.com/line/lbm-sdk/types/simulation" "github.com/line/lbm-sdk/x/simulation" + "github.com/line/lbm-sdk/x/wasm/keeper/testdata" "github.com/line/lbm-sdk/x/wasm/types" ) @@ -37,7 +37,6 @@ func WeightedOperations( var ( weightMsgStoreCode int weightMsgInstantiateContract int - wasmContractPath string ) simstate.AppParams.GetOrGenerate(simstate.Cdc, OpWeightMsgStoreCode, &weightMsgStoreCode, nil, @@ -51,17 +50,8 @@ func WeightedOperations( weightMsgInstantiateContract = simappparams.DefaultWeightMsgInstantiateContract }, ) - simstate.AppParams.GetOrGenerate(simstate.Cdc, OpReflectContractPath, &wasmContractPath, nil, - func(_ *rand.Rand) { - // simulations are run from the `app` folder - wasmContractPath = "../x/wasm/keeper/testdata/reflect.wasm" - }, - ) - wasmBz, err := os.ReadFile(wasmContractPath) - if err != nil { - panic(err) - } + wasmBz := testdata.ReflectContractWasm() return simulation.WeightedOperations{ simulation.NewWeightedOperation( diff --git a/x/wasm/simulation/operations_test.go b/x/wasm/simulation/operations_test.go new file mode 100644 index 0000000000..d5e476ed05 --- /dev/null +++ b/x/wasm/simulation/operations_test.go @@ -0,0 +1,73 @@ +package simulation + +import ( + "reflect" + "testing" + + simappparams "github.com/line/lbm-sdk/simapp/params" + "github.com/stretchr/testify/require" + + "github.com/line/lbm-sdk/types/module" + "github.com/line/lbm-sdk/x/simulation" + "github.com/line/lbm-sdk/x/wasm/keeper" + "github.com/line/lbm-sdk/x/wasm/types" +) + +func TestWeightedOperations(t *testing.T) { + type args struct { + simstate *module.SimulationState + ak types.AccountKeeper + bk simulation.BankKeeper + wasmKeeper WasmKeeper + wasmBz []byte + } + + params := args{ + simstate: &module.SimulationState{}, + wasmKeeper: makeKeeper(t).WasmKeeper, + } + + tests := []struct { + name string + args args + want simulation.WeightedOperations + }{ + { + name: "execute success", + args: args{ + simstate: &module.SimulationState{}, + }, + want: simulation.WeightedOperations{ + simulation.NewWeightedOperation( + simappparams.DefaultWeightMsgStoreCode, + SimulateMsgStoreCode(params.ak, params.bk, params.wasmKeeper, params.wasmBz)), + simulation.NewWeightedOperation( + simappparams.DefaultWeightMsgInstantiateContract, + SimulateMsgInstantiateContract(params.ak, params.bk, params.wasmKeeper)), + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := WeightedOperations(tt.args.simstate, tt.args.ak, tt.args.bk, tt.args.wasmKeeper) + for i := range got { + require.Equal(t, tt.want[i].Weight(), got[i].Weight(), "WeightedOperations().Weight()") + + expected := reflect.TypeOf(tt.want[i].Op()).String() + actual := reflect.TypeOf(got[i].Op()).String() + + require.Equal(t, expected, actual, "return value type should be the same") + } + }) + } +} + +// Copy from keeper_test.go +const SupportedFeatures = "iterator,staking,stargate" + +// Copy from keeper_test.go +func makeKeeper(t *testing.T) keeper.TestKeepers { + _, keepers := keeper.CreateTestInput(t, false, SupportedFeatures, nil, nil) + return keepers +}