Skip to content

Commit

Permalink
fix: fix to prevent external filesystem dependency of simulations (#695)
Browse files Browse the repository at this point in the history
* fix: use go:embed

* fix: remove unnecessary part

* docs: update CHANGELOG.md

* test: add test of WeightedOperations

* fix: fix format

* fix: delete wasmContractPath
  • Loading branch information
da1suk8 authored Oct 18, 2022
1 parent f856957 commit d4635de
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 12 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 12 additions & 0 deletions x/wasm/keeper/testdata/reflect.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package testdata

import (
_ "embed"
)

//go:embed reflect.wasm
var reflectContract []byte

func ReflectContractWasm() []byte {
return reflectContract
}
14 changes: 2 additions & 12 deletions x/wasm/simulation/operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package simulation

import (
"math/rand"
"os"

"github.com/line/lbm-sdk/baseapp"
simappparams "github.com/line/lbm-sdk/simapp/params"
sdk "github.com/line/lbm-sdk/types"
"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"
)

Expand Down Expand Up @@ -37,7 +37,6 @@ func WeightedOperations(
var (
weightMsgStoreCode int
weightMsgInstantiateContract int
wasmContractPath string
)

simstate.AppParams.GetOrGenerate(simstate.Cdc, OpWeightMsgStoreCode, &weightMsgStoreCode, nil,
Expand All @@ -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(
Expand Down
73 changes: 73 additions & 0 deletions x/wasm/simulation/operations_test.go
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit d4635de

Please sign in to comment.