Skip to content

Fix wasm simulations #870

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
May 31, 2022
28 changes: 7 additions & 21 deletions x/wasm/keeper/reflect_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,7 @@ func TestReflectContractSend(t *testing.T) {
_, _, bob := keyPubAddr()

// upload reflect code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
reflectID, err := keeper.Create(ctx, creator, reflectCode, nil)
reflectID, err := keeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), reflectID)

Expand Down Expand Up @@ -129,9 +127,7 @@ func TestReflectCustomMsg(t *testing.T) {
_, _, fred := keyPubAddr()

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
codeID, err := keeper.Create(ctx, creator, reflectCode, nil)
codeID, err := keeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), codeID)

Expand Down Expand Up @@ -220,9 +216,7 @@ func TestMaskReflectCustomQuery(t *testing.T) {
creator := keepers.Faucet.NewFundedAccount(ctx, deposit...)

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), codeID)

Expand Down Expand Up @@ -272,9 +266,7 @@ func TestReflectStargateQuery(t *testing.T) {
creator := keepers.Faucet.NewFundedAccount(ctx, funds...)

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), codeID)

Expand Down Expand Up @@ -316,9 +308,7 @@ func TestReflectInvalidStargateQuery(t *testing.T) {
creator := keepers.Faucet.NewFundedAccount(ctx, funds...)

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), codeID)

Expand Down Expand Up @@ -396,9 +386,7 @@ func TestMaskReflectWasmQueries(t *testing.T) {
creator := keepers.Faucet.NewFundedAccount(ctx, deposit...)

// upload reflect code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
reflectID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
reflectID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), reflectID)

Expand Down Expand Up @@ -468,9 +456,7 @@ func TestWasmRawQueryWithNil(t *testing.T) {
creator := keepers.Faucet.NewFundedAccount(ctx, deposit...)

// upload reflect code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
reflectID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
reflectID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), reflectID)

Expand Down
4 changes: 1 addition & 3 deletions x/wasm/keeper/staking_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -447,9 +447,7 @@ func TestQueryStakingInfo(t *testing.T) {
creator := initInfo.faucet.NewFundedAccount(ctx, deposit...)

// upload mask code
maskCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
maskID, err := initInfo.contractKeeper.Create(ctx, creator, maskCode, nil)
maskID, err := initInfo.contractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(2), maskID)

Expand Down
16 changes: 4 additions & 12 deletions x/wasm/keeper/submsg_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@ func TestDispatchSubMsgSuccessCase(t *testing.T) {
_, _, fred := keyPubAddr()

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
require.Equal(t, uint64(1), codeID)

Expand Down Expand Up @@ -122,9 +120,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) {
uploader := keepers.Faucet.NewFundedAccount(ctx, contractStart.Add(contractStart...)...)

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
reflectID, err := keepers.ContractKeeper.Create(ctx, uploader, reflectCode, nil)
reflectID, err := keepers.ContractKeeper.Create(ctx, uploader, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)

// create hackatom contract for testing (for infinite loop)
Expand Down Expand Up @@ -381,9 +377,7 @@ func TestDispatchSubMsgEncodeToNoSdkMsg(t *testing.T) {
_, _, fred := keyPubAddr()

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)

// creator instantiates a contract and gives it tokens
Expand Down Expand Up @@ -449,9 +443,7 @@ func TestDispatchSubMsgConditionalReplyOn(t *testing.T) {
_, _, fred := keyPubAddr()

// upload code
reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil)
codeID, err := keepers.ContractKeeper.Create(ctx, creator, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)

// creator instantiates a contract and gives it tokens
Expand Down
7 changes: 3 additions & 4 deletions x/wasm/keeper/test_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"testing"
"time"

"github.com/CosmWasm/wasmd/x/wasm/keeper/testdata"

"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/std"
Expand Down Expand Up @@ -545,11 +547,8 @@ func StoreIBCReflectContract(t testing.TB, ctx sdk.Context, keepers TestKeepers)
}

func StoreReflectContract(t testing.TB, ctx sdk.Context, keepers TestKeepers) uint64 {
wasmCode, err := ioutil.ReadFile("./testdata/reflect.wasm")
require.NoError(t, err)

_, _, creatorAddr := keyPubAddr()
codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, wasmCode, nil)
codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, testdata.ReflectContractWasm(), nil)
require.NoError(t, err)
return codeID
}
Expand Down
9 changes: 9 additions & 0 deletions x/wasm/keeper/testdata/reflect.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
package testdata

import (
_ "embed"

typwasmvmtypes "github.com/CosmWasm/wasmvm/types"
"github.com/cosmos/cosmos-sdk/types"
)

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

func ReflectContractWasm() []byte {
return reflectContract
}

// ReflectHandleMsg is used to encode handle messages
type ReflectHandleMsg struct {
Reflect *ReflectPayload `json:"reflect_msg,omitempty"`
Expand Down
4 changes: 3 additions & 1 deletion x/wasm/module_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"io/ioutil"
"testing"

"github.com/CosmWasm/wasmd/x/wasm/keeper/testdata"

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
Expand Down Expand Up @@ -66,7 +68,7 @@ var (
_, _, addrAcc1 = keyPubAddr()
addr1 = addrAcc1.String()
testContract = mustLoad("./keeper/testdata/hackatom.wasm")
maskContract = mustLoad("./keeper/testdata/reflect.wasm")
maskContract = testdata.ReflectContractWasm()
oldContract = mustLoad("./testdata/escrow_0.7.wasm")
)

Expand Down
16 changes: 11 additions & 5 deletions x/wasm/simulation/operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,19 @@ func WeightedOperations(
)
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"
wasmContractPath = ""
},
)
wasmBz, err := ioutil.ReadFile(wasmContractPath)
if err != nil {
panic(err)

var wasmBz []byte
if wasmContractPath == "" {
wasmBz = testdata.ReflectContractWasm()
} else {
var err error
wasmBz, err = ioutil.ReadFile(wasmContractPath)
if err != nil {
panic(err)
}
}

return simulation.WeightedOperations{
Expand Down