From 5729cef862fa20f775b77d7a88191835e1cb1360 Mon Sep 17 00:00:00 2001 From: srdtrk <59252793+srdtrk@users.noreply.github.com> Date: Thu, 24 Aug 2023 14:04:21 +0300 Subject: [PATCH 1/2] test(callbacks): checking that expected events are emitted (#4400) * feat(callbacks_test): added 'GetExpectedEvent' function * imp(callbacks_test): implemented event testing for SendPacket * style: ran golangci-lint * imp(callbacks_test): implemented event checking in every callback function * style: simplified the event tests * docs(callbacks_test): added godocs to a test helper function * imp(callbacks_test): implemented review item --- modules/apps/callbacks/callbacks_test.go | 25 +++ modules/apps/callbacks/ibc_middleware_test.go | 50 +++++- modules/apps/callbacks/types/events_test.go | 148 +++++++----------- 3 files changed, 133 insertions(+), 90 deletions(-) diff --git a/modules/apps/callbacks/callbacks_test.go b/modules/apps/callbacks/callbacks_test.go index 5f63170e47f..ab52fa157ec 100644 --- a/modules/apps/callbacks/callbacks_test.go +++ b/modules/apps/callbacks/callbacks_test.go @@ -14,6 +14,7 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" dbm "github.com/cometbft/cometbft-db" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/libs/log" simapp "github.com/cosmos/ibc-go/modules/apps/callbacks/testing/simapp" @@ -22,6 +23,7 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" feetypes "github.com/cosmos/ibc-go/v7/modules/apps/29-fee/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" ibcmock "github.com/cosmos/ibc-go/v7/testing/mock" ) @@ -289,3 +291,26 @@ func (s *CallbacksTestSuite) AssertHasExecutedExpectedCallbackWithFee( } s.AssertHasExecutedExpectedCallback(callbackType, isSuccessful) } + +// GetExpectedEvent returns the expected event for a callback. +func GetExpectedEvent( + packetDataUnmarshaler porttypes.PacketDataUnmarshaler, remainingGas uint64, data []byte, srcPortID, + eventPortID, eventChannelID string, seq uint64, callbackType types.CallbackType, expError error, +) (abci.Event, bool) { + var ( + callbackData types.CallbackData + err error + ) + if callbackType == types.CallbackTypeReceivePacket { + callbackData, err = types.GetDestCallbackData(packetDataUnmarshaler, data, srcPortID, remainingGas, maxCallbackGas) + } else { + callbackData, err = types.GetSourceCallbackData(packetDataUnmarshaler, data, srcPortID, remainingGas, maxCallbackGas) + } + if err != nil { + return abci.Event{}, false + } + + newCtx := sdk.Context{}.WithEventManager(sdk.NewEventManager()) + types.EmitCallbackEvent(newCtx, eventPortID, eventChannelID, seq, callbackType, callbackData, expError) + return newCtx.EventManager().Events().ToABCIEvents()[0], true +} diff --git a/modules/apps/callbacks/ibc_middleware_test.go b/modules/apps/callbacks/ibc_middleware_test.go index 85376695c58..d77fb0e73ea 100644 --- a/modules/apps/callbacks/ibc_middleware_test.go +++ b/modules/apps/callbacks/ibc_middleware_test.go @@ -164,12 +164,15 @@ func (s *CallbacksTestSuite) TestSendPacket() { tc.malleate() + ctx := s.chainA.GetContext() + gasLimit := ctx.GasMeter().Limit() + var ( seq uint64 err error ) sendPacket := func() { - seq, err = transferStack.(porttypes.Middleware).SendPacket(s.chainA.GetContext(), chanCap, s.path.EndpointA.ChannelConfig.PortID, s.path.EndpointA.ChannelID, s.chainB.GetTimeoutHeight(), 0, packetData.GetBytes()) + seq, err = transferStack.(porttypes.Middleware).SendPacket(ctx, chanCap, s.path.EndpointA.ChannelConfig.PortID, s.path.EndpointA.ChannelID, s.chainB.GetTimeoutHeight(), 0, packetData.GetBytes()) } expPass := tc.expValue == nil @@ -178,8 +181,18 @@ func (s *CallbacksTestSuite) TestSendPacket() { sendPacket() s.Require().Nil(err) s.Require().Equal(uint64(1), seq) + + expEvent, exists := GetExpectedEvent( + transferStack.(porttypes.PacketDataUnmarshaler), gasLimit, packetData.GetBytes(), s.path.EndpointA.ChannelConfig.PortID, + s.path.EndpointA.ChannelConfig.PortID, s.path.EndpointA.ChannelID, seq, types.CallbackTypeSendPacket, nil, + ) + if exists { + s.Require().Contains(ctx.EventManager().Events().ToABCIEvents(), expEvent) + } + case tc.expPanic: s.Require().PanicsWithValue(tc.expValue, sendPacket) + default: sendPacket() s.Require().ErrorIs(tc.expValue.(error), err) @@ -293,7 +306,9 @@ func (s *CallbacksTestSuite) TestOnAcknowledgementPacket() { } ack = channeltypes.NewResultAcknowledgement([]byte{1}).Acknowledgement() + ctx = s.chainA.GetContext() + gasLimit := ctx.GasMeter().Limit() tc.malleate() @@ -340,6 +355,12 @@ func (s *CallbacksTestSuite) TestOnAcknowledgementPacket() { s.Require().Equal(1, sourceCounters[types.CallbackTypeAcknowledgementPacket]) s.Require().Equal(uint8(1), sourceStatefulCounter) + expEvent, exists := GetExpectedEvent( + transferStack.(porttypes.PacketDataUnmarshaler), gasLimit, packet.Data, packet.SourcePort, + packet.SourcePort, packet.SourceChannel, packet.Sequence, types.CallbackTypeAcknowledgementPacket, nil, + ) + s.Require().True(exists) + s.Require().Contains(ctx.EventManager().Events().ToABCIEvents(), expEvent) } }) } @@ -450,6 +471,7 @@ func (s *CallbacksTestSuite) TestOnTimeoutPacket() { s.Require().NoError(err) ctx = s.chainA.GetContext() + gasLimit := ctx.GasMeter().Limit() tc.malleate() @@ -494,6 +516,13 @@ func (s *CallbacksTestSuite) TestOnTimeoutPacket() { s.Require().Equal(1, sourceCounters[types.CallbackTypeTimeoutPacket]) s.Require().Equal(1, sourceCounters[types.CallbackTypeSendPacket]) s.Require().Equal(uint8(2), sourceStatefulCounter) + + expEvent, exists := GetExpectedEvent( + transferStack.(porttypes.PacketDataUnmarshaler), gasLimit, packet.Data, packet.SourcePort, + packet.SourcePort, packet.SourceChannel, packet.Sequence, types.CallbackTypeTimeoutPacket, nil, + ) + s.Require().True(exists) + s.Require().Contains(ctx.EventManager().Events().ToABCIEvents(), expEvent) } }) } @@ -602,6 +631,7 @@ func (s *CallbacksTestSuite) TestOnRecvPacket() { } ctx = s.chainB.GetContext() + gasLimit := ctx.GasMeter().Limit() tc.malleate() @@ -647,6 +677,14 @@ func (s *CallbacksTestSuite) TestOnRecvPacket() { s.Require().Len(destCounters, 1) s.Require().Equal(1, destCounters[types.CallbackTypeReceivePacket]) s.Require().Equal(uint8(1), destStatefulCounter) + + expEvent, exists := GetExpectedEvent( + transferStack.(porttypes.PacketDataUnmarshaler), gasLimit, packet.Data, packet.SourcePort, + packet.DestinationPort, packet.DestinationChannel, packet.Sequence, types.CallbackTypeReceivePacket, nil, + ) + s.Require().True(exists) + s.Require().Contains(ctx.EventManager().Events().ToABCIEvents(), expEvent) + } }) } @@ -718,6 +756,7 @@ func (s *CallbacksTestSuite) TestWriteAcknowledgement() { } ctx = s.chainB.GetContext() + gasLimit := ctx.GasMeter().Limit() chanCap := s.chainB.GetChannelCapability(s.path.EndpointB.ChannelConfig.PortID, s.path.EndpointB.ChannelID) @@ -734,6 +773,15 @@ func (s *CallbacksTestSuite) TestWriteAcknowledgement() { if expPass { s.Require().NoError(err) + + expEvent, exists := GetExpectedEvent( + transferStack.(porttypes.PacketDataUnmarshaler), gasLimit, packet.Data, packet.SourcePort, + packet.DestinationPort, packet.DestinationChannel, packet.Sequence, types.CallbackTypeReceivePacket, nil, + ) + if exists { + s.Require().Contains(ctx.EventManager().Events().ToABCIEvents(), expEvent) + } + } else { s.Require().ErrorIs(tc.expError, err) } diff --git a/modules/apps/callbacks/types/events_test.go b/modules/apps/callbacks/types/events_test.go index ffc99b94454..3f6084c9555 100644 --- a/modules/apps/callbacks/types/events_test.go +++ b/modules/apps/callbacks/types/events_test.go @@ -10,13 +10,41 @@ import ( ) func (s *CallbacksTypesTestSuite) TestEvents() { + constEvents := func() ibctesting.EventsMap { + return ibctesting.EventsMap{ + types.EventTypeSourceCallback: { + sdk.AttributeKeyModule: types.ModuleName, + types.AttributeKeyCallbackType: string(types.CallbackTypeAcknowledgementPacket), + types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, + types.AttributeKeyCallbackGasLimit: "100000", + types.AttributeKeyCallbackCommitGasLimit: "200000", + types.AttributeKeyCallbackSourcePortID: ibctesting.MockPort, + types.AttributeKeyCallbackSourceChannelID: ibctesting.FirstChannelID, + types.AttributeKeyCallbackSequence: "1", + types.AttributeKeyCallbackResult: types.AttributeValueCallbackSuccess, + }, + types.EventTypeDestinationCallback: { + sdk.AttributeKeyModule: types.ModuleName, + types.AttributeKeyCallbackType: string(types.CallbackTypeReceivePacket), + types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, + types.AttributeKeyCallbackGasLimit: "100000", + types.AttributeKeyCallbackCommitGasLimit: "200000", + types.AttributeKeyCallbackDestPortID: ibctesting.MockFeePort, + types.AttributeKeyCallbackDestChannelID: ibctesting.InvalidID, + types.AttributeKeyCallbackSequence: "1", + types.AttributeKeyCallbackResult: types.AttributeValueCallbackSuccess, + }, + } + } + + var expEvents ibctesting.EventsMap testCases := []struct { name string packet channeltypes.Packet callbackType types.CallbackType callbackData types.CallbackData callbackError error - expEvents ibctesting.EventsMap + malleate func() }{ { "success: ack callback", @@ -27,23 +55,11 @@ func (s *CallbacksTypesTestSuite) TestEvents() { types.CallbackTypeAcknowledgementPacket, types.CallbackData{ CallbackAddress: ibctesting.TestAccAddress, - ExecutionGasLimit: 100000, - CommitGasLimit: 200000, + ExecutionGasLimit: 100_000, + CommitGasLimit: 200_000, }, nil, - ibctesting.EventsMap{ - types.EventTypeSourceCallback: { - sdk.AttributeKeyModule: types.ModuleName, - types.AttributeKeyCallbackType: string(types.CallbackTypeAcknowledgementPacket), - types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, - types.AttributeKeyCallbackGasLimit: "100000", - types.AttributeKeyCallbackCommitGasLimit: "200000", - types.AttributeKeyCallbackSourcePortID: ibctesting.MockPort, - types.AttributeKeyCallbackSourceChannelID: ibctesting.FirstChannelID, - types.AttributeKeyCallbackSequence: "1", - types.AttributeKeyCallbackResult: types.AttributeValueCallbackSuccess, - }, - }, + func() {}, }, { "success: send packet callback", @@ -54,22 +70,12 @@ func (s *CallbacksTypesTestSuite) TestEvents() { types.CallbackTypeSendPacket, types.CallbackData{ CallbackAddress: ibctesting.TestAccAddress, - ExecutionGasLimit: 100000, - CommitGasLimit: 200000, + ExecutionGasLimit: 100_000, + CommitGasLimit: 200_000, }, nil, - ibctesting.EventsMap{ - types.EventTypeSourceCallback: { - sdk.AttributeKeyModule: types.ModuleName, - types.AttributeKeyCallbackType: string(types.CallbackTypeSendPacket), - types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, - types.AttributeKeyCallbackGasLimit: "100000", - types.AttributeKeyCallbackCommitGasLimit: "200000", - types.AttributeKeyCallbackSourcePortID: ibctesting.MockPort, - types.AttributeKeyCallbackSourceChannelID: ibctesting.FirstChannelID, - types.AttributeKeyCallbackSequence: "1", - types.AttributeKeyCallbackResult: types.AttributeValueCallbackSuccess, - }, + func() { + expEvents[types.EventTypeSourceCallback][types.AttributeKeyCallbackType] = string(types.CallbackTypeSendPacket) }, }, { @@ -81,22 +87,12 @@ func (s *CallbacksTypesTestSuite) TestEvents() { types.CallbackTypeTimeoutPacket, types.CallbackData{ CallbackAddress: ibctesting.TestAccAddress, - ExecutionGasLimit: 100000, - CommitGasLimit: 200000, + ExecutionGasLimit: 100_000, + CommitGasLimit: 200_000, }, nil, - ibctesting.EventsMap{ - types.EventTypeSourceCallback: { - sdk.AttributeKeyModule: types.ModuleName, - types.AttributeKeyCallbackType: string(types.CallbackTypeTimeoutPacket), - types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, - types.AttributeKeyCallbackGasLimit: "100000", - types.AttributeKeyCallbackCommitGasLimit: "200000", - types.AttributeKeyCallbackSourcePortID: ibctesting.MockPort, - types.AttributeKeyCallbackSourceChannelID: ibctesting.FirstChannelID, - types.AttributeKeyCallbackSequence: "1", - types.AttributeKeyCallbackResult: types.AttributeValueCallbackSuccess, - }, + func() { + expEvents[types.EventTypeSourceCallback][types.AttributeKeyCallbackType] = string(types.CallbackTypeTimeoutPacket) }, }, { @@ -108,23 +104,11 @@ func (s *CallbacksTypesTestSuite) TestEvents() { types.CallbackTypeReceivePacket, types.CallbackData{ CallbackAddress: ibctesting.TestAccAddress, - ExecutionGasLimit: 100000, - CommitGasLimit: 200000, + ExecutionGasLimit: 100_000, + CommitGasLimit: 200_000, }, nil, - ibctesting.EventsMap{ - types.EventTypeDestinationCallback: { - sdk.AttributeKeyModule: types.ModuleName, - types.AttributeKeyCallbackType: string(types.CallbackTypeReceivePacket), - types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, - types.AttributeKeyCallbackGasLimit: "100000", - types.AttributeKeyCallbackCommitGasLimit: "200000", - types.AttributeKeyCallbackDestPortID: ibctesting.MockFeePort, - types.AttributeKeyCallbackDestChannelID: ibctesting.InvalidID, - types.AttributeKeyCallbackSequence: "1", - types.AttributeKeyCallbackResult: types.AttributeValueCallbackSuccess, - }, - }, + func() {}, }, { "success: unknown callback", @@ -135,22 +119,12 @@ func (s *CallbacksTypesTestSuite) TestEvents() { "something", types.CallbackData{ CallbackAddress: ibctesting.TestAccAddress, - ExecutionGasLimit: 100000, - CommitGasLimit: 200000, + ExecutionGasLimit: 100_000, + CommitGasLimit: 200_000, }, nil, - ibctesting.EventsMap{ - types.EventTypeSourceCallback: { - sdk.AttributeKeyModule: types.ModuleName, - types.AttributeKeyCallbackType: "something", - types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, - types.AttributeKeyCallbackGasLimit: "100000", - types.AttributeKeyCallbackCommitGasLimit: "200000", - types.AttributeKeyCallbackSourcePortID: ibctesting.MockPort, - types.AttributeKeyCallbackSourceChannelID: ibctesting.FirstChannelID, - types.AttributeKeyCallbackSequence: "1", - types.AttributeKeyCallbackResult: types.AttributeValueCallbackSuccess, - }, + func() { + expEvents[types.EventTypeSourceCallback][types.AttributeKeyCallbackType] = "something" }, }, { @@ -162,23 +136,13 @@ func (s *CallbacksTypesTestSuite) TestEvents() { types.CallbackTypeAcknowledgementPacket, types.CallbackData{ CallbackAddress: ibctesting.TestAccAddress, - ExecutionGasLimit: 100000, - CommitGasLimit: 200000, + ExecutionGasLimit: 100_000, + CommitGasLimit: 200_000, }, types.ErrNotPacketDataProvider, - ibctesting.EventsMap{ - types.EventTypeSourceCallback: { - sdk.AttributeKeyModule: types.ModuleName, - types.AttributeKeyCallbackType: string(types.CallbackTypeAcknowledgementPacket), - types.AttributeKeyCallbackAddress: ibctesting.TestAccAddress, - types.AttributeKeyCallbackGasLimit: "100000", - types.AttributeKeyCallbackCommitGasLimit: "200000", - types.AttributeKeyCallbackSourcePortID: ibctesting.MockPort, - types.AttributeKeyCallbackSourceChannelID: ibctesting.FirstChannelID, - types.AttributeKeyCallbackSequence: "1", - types.AttributeKeyCallbackResult: types.AttributeValueCallbackFailure, - types.AttributeKeyCallbackError: types.ErrNotPacketDataProvider.Error(), - }, + func() { + expEvents[types.EventTypeSourceCallback][types.AttributeKeyCallbackResult] = types.AttributeValueCallbackFailure + expEvents[types.EventTypeSourceCallback][types.AttributeKeyCallbackError] = types.ErrNotPacketDataProvider.Error() }, }, } @@ -186,22 +150,28 @@ func (s *CallbacksTypesTestSuite) TestEvents() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { + expEvents = constEvents() + tc.malleate() newCtx := sdk.Context{}.WithEventManager(sdk.NewEventManager()) switch tc.callbackType { case types.CallbackTypeReceivePacket: + delete(expEvents, types.EventTypeSourceCallback) types.EmitCallbackEvent( newCtx, tc.packet.GetDestPort(), tc.packet.GetDestChannel(), tc.packet.GetSequence(), tc.callbackType, tc.callbackData, tc.callbackError, ) + default: + delete(expEvents, types.EventTypeDestinationCallback) types.EmitCallbackEvent( newCtx, tc.packet.GetSourcePort(), tc.packet.GetSourceChannel(), tc.packet.GetSequence(), tc.callbackType, tc.callbackData, tc.callbackError, ) } + events := newCtx.EventManager().Events().ToABCIEvents() - ibctesting.AssertEvents(&s.Suite, tc.expEvents, events) + ibctesting.AssertEvents(&s.Suite, expEvents, events) }) } } From cef7ee23a5948c2eb659dacd252dccc397700de5 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Thu, 24 Aug 2023 19:37:58 +0800 Subject: [PATCH 2/2] chore: lint e2e (#4423) * linter autofixes for e2e * lint e2e fully --------- Co-authored-by: Jim Fasarakis-Hilliard --- e2e/dockerutil/dockerutil.go | 2 +- e2e/relayer/relayer.go | 11 +++-- e2e/tests/core/02-client/client_test.go | 4 +- .../core/03-connection/connection_test.go | 5 +- e2e/tests/interchain_accounts/base_test.go | 2 +- e2e/tests/interchain_accounts/gov_test.go | 2 +- e2e/tests/interchain_accounts/groups_test.go | 2 +- .../interchain_accounts/incentivized_test.go | 2 +- .../intertx_incentivized_test.go | 2 +- e2e/tests/interchain_accounts/intertx_test.go | 2 +- .../interchain_accounts/localhost_test.go | 2 +- e2e/tests/interchain_accounts/params_test.go | 2 +- e2e/tests/transfer/authz_test.go | 3 ++ e2e/tests/transfer/incentivized_test.go | 22 ++++----- e2e/tests/upgrades/upgrade_test.go | 13 ----- e2e/testsuite/diagnostics/diagnostics.go | 2 +- e2e/testsuite/grpc_query.go | 10 ++-- e2e/testsuite/testsuite.go | 48 +++++++++---------- e2e/testvalues/values.go | 2 +- 19 files changed, 66 insertions(+), 72 deletions(-) diff --git a/e2e/dockerutil/dockerutil.go b/e2e/dockerutil/dockerutil.go index 4d75f685f5e..bd5a561323d 100644 --- a/e2e/dockerutil/dockerutil.go +++ b/e2e/dockerutil/dockerutil.go @@ -16,7 +16,7 @@ import ( const testLabel = "ibc-test" // GetTestContainers returns all docker containers that have been created by interchain test. -func GetTestContainers(t *testing.T, ctx context.Context, dc *dockerclient.Client) ([]dockertypes.Container, error) { +func GetTestContainers(ctx context.Context, t *testing.T, dc *dockerclient.Client) ([]dockertypes.Container, error) { t.Helper() testContainers, err := dc.ContainerList(ctx, dockertypes.ContainerListOptions{ diff --git a/e2e/relayer/relayer.go b/e2e/relayer/relayer.go index 0ca78a34327..0b0d1421dab 100644 --- a/e2e/relayer/relayer.go +++ b/e2e/relayer/relayer.go @@ -33,6 +33,7 @@ type Config struct { // New returns an implementation of ibc.Relayer depending on the provided RelayerType. func New(t *testing.T, cfg Config, logger *zap.Logger, dockerClient *dockerclient.Client, network string) ibc.Relayer { + t.Helper() switch cfg.Type { case Rly: return newCosmosRelayer(t, cfg.Tag, logger, dockerClient, network) @@ -46,6 +47,7 @@ func New(t *testing.T, cfg Config, logger *zap.Logger, dockerClient *dockerclien // newCosmosRelayer returns an instance of the go relayer. // Options are used to allow for relayer version selection and specifying the default processing option. func newCosmosRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient *dockerclient.Client, network string) ibc.Relayer { + t.Helper() customImageOption := relayer.CustomDockerImage(rlyRelayerRepository, tag, rlyRelayerUser) relayerProcessingOption := relayer.StartupFlags("-p", "events") // relayer processes via events @@ -58,6 +60,7 @@ func newCosmosRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient // newHermesRelayer returns an instance of the hermes relayer. func newHermesRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient *dockerclient.Client, network string) ibc.Relayer { + t.Helper() customImageOption := relayer.CustomDockerImage(hermesRelayerRepository, tag, hermesRelayerUser) relayerFactory := interchaintest.NewBuiltinRelayerFactory(ibc.Hermes, logger, customImageOption) @@ -67,18 +70,18 @@ func newHermesRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient } // RelayerMap is a mapping from test names to a relayer set for that test. -type RelayerMap map[string]map[ibc.Wallet]bool +type Map map[string]map[ibc.Wallet]bool // AddRelayer adds the given relayer to the relayer set for the given test name. -func (r RelayerMap) AddRelayer(testName string, relayer ibc.Wallet) { +func (r Map) AddRelayer(testName string, ibcrelayer ibc.Wallet) { if _, ok := r[testName]; !ok { r[testName] = make(map[ibc.Wallet]bool) } - r[testName][relayer] = true + r[testName][ibcrelayer] = true } // containsRelayer returns true if the given relayer is in the relayer set for the given test name. -func (r RelayerMap) ContainsRelayer(testName string, wallet ibc.Wallet) bool { +func (r Map) ContainsRelayer(testName string, wallet ibc.Wallet) bool { if relayerSet, ok := r[testName]; ok { return relayerSet[wallet] } diff --git a/e2e/tests/core/02-client/client_test.go b/e2e/tests/core/02-client/client_test.go index 53a9d3659f4..c48f4311a11 100644 --- a/e2e/tests/core/02-client/client_test.go +++ b/e2e/tests/core/02-client/client_test.go @@ -81,7 +81,7 @@ func (s *ClientTestSuite) TestClientUpdateProposal_Succeeds() { subjectClientID string substituteClientID string // set the trusting period to a value which will still be valid upon client creation, but invalid before the first update - badTrustingPeriod = time.Duration(time.Second * 10) + badTrustingPeriod = time.Second * 10 ) t.Run("create substitute client with correct trusting period", func(t *testing.T) { @@ -314,7 +314,7 @@ func (s *ClientTestSuite) TestAllowedClientsParam() { // extractChainPrivateKeys returns a slice of tmtypes.PrivValidator which hold the private keys for all validator // nodes for a given chain. func (s *ClientTestSuite) extractChainPrivateKeys(ctx context.Context, chain *cosmos.CosmosChain) []tmtypes.PrivValidator { - testContainers, err := dockerutil.GetTestContainers(s.T(), ctx, s.DockerClient) + testContainers, err := dockerutil.GetTestContainers(ctx, s.T(), s.DockerClient) s.Require().NoError(err) var filePvs []privval.FilePVKey diff --git a/e2e/tests/core/03-connection/connection_test.go b/e2e/tests/core/03-connection/connection_test.go index eb0ac6aee56..151e7b27e9d 100644 --- a/e2e/tests/core/03-connection/connection_test.go +++ b/e2e/tests/core/03-connection/connection_test.go @@ -48,10 +48,11 @@ func (s *ConnectionTestSuite) QueryMaxExpectedTimePerBlockParam(ctx context.Cont // removing additional strings that are used for amino delay := strings.ReplaceAll(res.Param.Value, "\"", "") - time, err := strconv.ParseUint(delay, 10, 64) + // convert to uint64 + uinttime, err := strconv.ParseUint(delay, 10, 64) s.Require().NoError(err) - return time + return uinttime } // TestMaxExpectedTimePerBlockParam tests changing the MaxExpectedTimePerBlock param using a governance proposal diff --git a/e2e/tests/interchain_accounts/base_test.go b/e2e/tests/interchain_accounts/base_test.go index 7059685f6e9..74b503c586a 100644 --- a/e2e/tests/interchain_accounts/base_test.go +++ b/e2e/tests/interchain_accounts/base_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/interchain_accounts/gov_test.go b/e2e/tests/interchain_accounts/gov_test.go index b43001ef9a0..353286e3ca1 100644 --- a/e2e/tests/interchain_accounts/gov_test.go +++ b/e2e/tests/interchain_accounts/gov_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/interchain_accounts/groups_test.go b/e2e/tests/interchain_accounts/groups_test.go index 9d2af1e4b5e..b2b15788bd1 100644 --- a/e2e/tests/interchain_accounts/groups_test.go +++ b/e2e/tests/interchain_accounts/groups_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/interchain_accounts/incentivized_test.go b/e2e/tests/interchain_accounts/incentivized_test.go index fb4d7055f52..ea9ab20ee37 100644 --- a/e2e/tests/interchain_accounts/incentivized_test.go +++ b/e2e/tests/interchain_accounts/incentivized_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/interchain_accounts/intertx_incentivized_test.go b/e2e/tests/interchain_accounts/intertx_incentivized_test.go index c59d25d3985..55e47f7c0ba 100644 --- a/e2e/tests/interchain_accounts/intertx_incentivized_test.go +++ b/e2e/tests/interchain_accounts/intertx_incentivized_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/interchain_accounts/intertx_test.go b/e2e/tests/interchain_accounts/intertx_test.go index f3712a5d912..e9c7b8cb343 100644 --- a/e2e/tests/interchain_accounts/intertx_test.go +++ b/e2e/tests/interchain_accounts/intertx_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/interchain_accounts/localhost_test.go b/e2e/tests/interchain_accounts/localhost_test.go index e601c9526b1..efffe6b0976 100644 --- a/e2e/tests/interchain_accounts/localhost_test.go +++ b/e2e/tests/interchain_accounts/localhost_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/interchain_accounts/params_test.go b/e2e/tests/interchain_accounts/params_test.go index f538582b1c5..4821e1b543c 100644 --- a/e2e/tests/interchain_accounts/params_test.go +++ b/e2e/tests/interchain_accounts/params_test.go @@ -1,4 +1,4 @@ -package interchain_accounts +package interchainaccounts import ( "context" diff --git a/e2e/tests/transfer/authz_test.go b/e2e/tests/transfer/authz_test.go index 59bd05827fe..cc66a35e35f 100644 --- a/e2e/tests/transfer/authz_test.go +++ b/e2e/tests/transfer/authz_test.go @@ -52,6 +52,7 @@ func (suite *AuthzTransferTestSuite) TestAuthz_MsgTransfer_Succeeds() { // createMsgGrantFn initializes a TransferAuthorization and broadcasts a MsgGrant message. createMsgGrantFn := func(t *testing.T) { + t.Helper() transferAuth := transfertypes.TransferAuthorization{ Allocations: []transfertypes.Allocation{ { @@ -83,7 +84,9 @@ func (suite *AuthzTransferTestSuite) TestAuthz_MsgTransfer_Succeeds() { // verifyGrantFn returns a test function which asserts chainA has a grant authorization // with the given spend limit. verifyGrantFn := func(expectedLimit int64) func(t *testing.T) { + t.Helper() return func(t *testing.T) { + t.Helper() grantAuths, err := suite.QueryGranterGrants(ctx, chainA, granterAddress) suite.Require().NoError(err) diff --git a/e2e/tests/transfer/incentivized_test.go b/e2e/tests/transfer/incentivized_test.go index 408f02e76fa..ad9fd571a5f 100644 --- a/e2e/tests/transfer/incentivized_test.go +++ b/e2e/tests/transfer/incentivized_test.go @@ -95,11 +95,11 @@ func (s *IncentivizedTransferTestSuite) TestMsgPayPacketFee_AsyncSingleSender_Su s.Require().Empty(packets) }) - packetId := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) + packetID := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) packetFee := feetypes.NewPacketFee(testFee, chainAWallet.FormattedAddress(), nil) t.Run("should succeed", func(t *testing.T) { - payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetId, packetFee) + payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetID, packetFee) s.AssertTxSuccess(payPacketFeeTxResp) }) @@ -208,11 +208,11 @@ func (s *IncentivizedTransferTestSuite) TestMsgPayPacketFee_InvalidReceiverAccou s.Require().Empty(packets) }) - packetId := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, 1) + packetID := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, 1) packetFee := feetypes.NewPacketFee(testFee, chainAWallet.FormattedAddress(), nil) t.Run("should succeed", func(t *testing.T) { - payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetId, packetFee) + payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetID, packetFee) s.AssertTxSuccess(payPacketFeeTxResp) }) @@ -424,7 +424,7 @@ func (s *IncentivizedTransferTestSuite) TestMsgPayPacketFee_SingleSender_TimesOu }) t.Run("pay packet fee", func(t *testing.T) { - packetId := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) + packetID := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) packetFee := feetypes.NewPacketFee(testFee, chainAWallet.FormattedAddress(), nil) t.Run("no incentivized packets", func(t *testing.T) { @@ -434,7 +434,7 @@ func (s *IncentivizedTransferTestSuite) TestMsgPayPacketFee_SingleSender_TimesOu }) t.Run("should succeed", func(t *testing.T) { - payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetId, packetFee) + payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetID, packetFee) s.AssertTxSuccess(payPacketFeeTxResp) }) @@ -527,11 +527,11 @@ func (s *IncentivizedTransferTestSuite) TestPayPacketFeeAsync_SingleSender_NoCou s.Require().Empty(packets) }) - packetId := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) + packetID := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) packetFee := feetypes.NewPacketFee(testFee, chainAWallet.FormattedAddress(), nil) t.Run("should succeed", func(t *testing.T) { - payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetId, packetFee) + payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet, packetID, packetFee) s.AssertTxSuccess(payPacketFeeTxResp) }) @@ -644,16 +644,16 @@ func (s *IncentivizedTransferTestSuite) TestMsgPayPacketFee_AsyncMultipleSenders s.Require().Empty(packets) }) - packetId := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) + packetID := channeltypes.NewPacketID(channelA.PortID, channelA.ChannelID, chainATx.Packet.Sequence) packetFee1 := feetypes.NewPacketFee(testFee, chainAWallet1.FormattedAddress(), nil) packetFee2 := feetypes.NewPacketFee(testFee, chainAWallet2.FormattedAddress(), nil) t.Run("paying packetFee1 should succeed", func(t *testing.T) { - payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet1, packetId, packetFee1) + payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet1, packetID, packetFee1) s.AssertTxSuccess(payPacketFeeTxResp) }) t.Run("paying packetFee2 should succeed", func(t *testing.T) { - payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet2, packetId, packetFee2) + payPacketFeeTxResp = s.PayPacketFeeAsync(ctx, chainA, chainAWallet2, packetID, packetFee2) s.AssertTxSuccess(payPacketFeeTxResp) }) diff --git a/e2e/tests/upgrades/upgrade_test.go b/e2e/tests/upgrades/upgrade_test.go index 5ff34552b81..dde4af68987 100644 --- a/e2e/tests/upgrades/upgrade_test.go +++ b/e2e/tests/upgrades/upgrade_test.go @@ -20,7 +20,6 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/cosmos/ibc-go/e2e/semverutil" "github.com/cosmos/ibc-go/e2e/testsuite" "github.com/cosmos/ibc-go/e2e/testvalues" controllertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" @@ -680,18 +679,6 @@ func (s *UpgradeTestSuite) RegisterInterchainAccount(ctx context.Context, chain s.AssertTxSuccess(txResp) } -// getICAVersion returns the version which should be used in the MsgRegisterAccount broadcast from the -// controller chain. -func getICAVersion(chainAVersion, chainBVersion string) string { - chainBIsGreaterThanOrEqualToChainA := semverutil.GTE(chainBVersion, chainAVersion) - if chainBIsGreaterThanOrEqualToChainA { - // allow version to be specified by the controller chain - return "" - } - // explicitly set the version string because the host chain might not yet support incentivized channels. - return icatypes.NewDefaultMetadataString(ibctesting.FirstConnectionID, ibctesting.FirstConnectionID) -} - // ClientState queries the current ClientState by clientID func (s *UpgradeTestSuite) ClientState(ctx context.Context, chain ibc.Chain, clientID string) (*clienttypes.QueryClientStateResponse, error) { queryClient := s.GetChainGRCPClients(chain).ClientQueryClient diff --git a/e2e/testsuite/diagnostics/diagnostics.go b/e2e/testsuite/diagnostics/diagnostics.go index 1f83d76265c..7e1b406ec29 100644 --- a/e2e/testsuite/diagnostics/diagnostics.go +++ b/e2e/testsuite/diagnostics/diagnostics.go @@ -50,7 +50,7 @@ func Collect(t *testing.T, dc *dockerclient.Client, debugModeEnabled bool, chain return } - testContainers, err := dockerutil.GetTestContainers(t, ctx, dc) + testContainers, err := dockerutil.GetTestContainers(ctx, t, dc) if err != nil { t.Logf("failed listing containers test cleanup: %s", err) return diff --git a/e2e/testsuite/grpc_query.go b/e2e/testsuite/grpc_query.go index 9b670ee5edc..00949804f74 100644 --- a/e2e/testsuite/grpc_query.go +++ b/e2e/testsuite/grpc_query.go @@ -217,13 +217,13 @@ func (s *E2ETestSuite) QueryInterchainAccountLegacy(ctx context.Context, chain i func (s *E2ETestSuite) QueryIncentivizedPacketsForChannel( ctx context.Context, chain *cosmos.CosmosChain, - portId, - channelId string, + portID, + channelID string, ) ([]*feetypes.IdentifiedPacketFees, error) { queryClient := s.GetChainGRCPClients(chain).FeeQueryClient res, err := queryClient.IncentivizedPacketsForChannel(ctx, &feetypes.QueryIncentivizedPacketsForChannelRequest{ - PortId: portId, - ChannelId: channelId, + PortId: portID, + ChannelId: channelID, }) if err != nil { return nil, err @@ -285,7 +285,7 @@ func (s *E2ETestSuite) GetBlockHeaderByHeight(ctx context.Context, chain ibc.Cha if res.SdkBlock != nil { return &res.SdkBlock.Header, nil } - return &res.Block.Header, nil + return &res.SdkBlock.Header, nil } // GetValidatorSetByHeight returns the validators of the given chain at the specified height. The returned validators diff --git a/e2e/testsuite/testsuite.go b/e2e/testsuite/testsuite.go index e9e96f81f75..b158d002977 100644 --- a/e2e/testsuite/testsuite.go +++ b/e2e/testsuite/testsuite.go @@ -36,7 +36,7 @@ type E2ETestSuite struct { grpcClients map[string]GRPCClients paths map[string]pathPair - relayers relayer.RelayerMap + relayers relayer.Map logger *zap.Logger DockerClient *dockerclient.Client network string @@ -73,7 +73,7 @@ func (s *E2ETestSuite) GetRelayerUsers(ctx context.Context, chainOpts ...ChainOp chainBRelayerUser := cosmos.NewWallet(ChainBRelayerName, chainBAccountBytes, "", chainB.Config()) if s.relayers == nil { - s.relayers = make(relayer.RelayerMap) + s.relayers = make(relayer.Map) } s.relayers.AddRelayer(s.T().Name(), chainARelayerUser) s.relayers.AddRelayer(s.T().Name(), chainBRelayerUser) @@ -176,29 +176,29 @@ func (s *E2ETestSuite) GetPathName(idx int64) string { } // generatePath generates the path name using the test suites name -func (s *E2ETestSuite) generatePath(ctx context.Context, relayer ibc.Relayer) string { +func (s *E2ETestSuite) generatePath(ctx context.Context, ibcrelayer ibc.Relayer) string { chainA, chainB := s.GetChains() chainAID := chainA.Config().ChainID chainBID := chainB.Config().ChainID pathName := s.generatePathName() - err := relayer.GeneratePath(ctx, s.GetRelayerExecReporter(), chainAID, chainBID, pathName) + err := ibcrelayer.GeneratePath(ctx, s.GetRelayerExecReporter(), chainAID, chainBID, pathName) s.Require().NoError(err) return pathName } // SetupClients creates clients on chainA and chainB using the provided create client options -func (s *E2ETestSuite) SetupClients(ctx context.Context, relayer ibc.Relayer, opts ibc.CreateClientOptions) { - pathName := s.generatePath(ctx, relayer) - err := relayer.CreateClients(ctx, s.GetRelayerExecReporter(), pathName, opts) +func (s *E2ETestSuite) SetupClients(ctx context.Context, ibcrelayer ibc.Relayer, opts ibc.CreateClientOptions) { + pathName := s.generatePath(ctx, ibcrelayer) + err := ibcrelayer.CreateClients(ctx, s.GetRelayerExecReporter(), pathName, opts) s.Require().NoError(err) } // UpdateClients updates clients on chainA and chainB -func (s *E2ETestSuite) UpdateClients(ctx context.Context, relayer ibc.Relayer, pathName string) { - err := relayer.UpdateClients(ctx, s.GetRelayerExecReporter(), pathName) +func (s *E2ETestSuite) UpdateClients(ctx context.Context, ibcrelayer ibc.Relayer, pathName string) { + err := ibcrelayer.UpdateClients(ctx, s.GetRelayerExecReporter(), pathName) s.Require().NoError(err) } @@ -226,25 +226,25 @@ func (s *E2ETestSuite) GetChains(chainOpts ...ChainOptionConfiguration) (*cosmos return path.chainA, path.chainB } -// GetRelayerWallets returns the relayer wallets associated with the chains. -func (s *E2ETestSuite) GetRelayerWallets(relayer ibc.Relayer) (ibc.Wallet, ibc.Wallet, error) { +// GetRelayerWallets returns the ibcrelayer wallets associated with the chains. +func (s *E2ETestSuite) GetRelayerWallets(ibcrelayer ibc.Relayer) (ibc.Wallet, ibc.Wallet, error) { chainA, chainB := s.GetChains() - chainARelayerWallet, ok := relayer.GetWallet(chainA.Config().ChainID) + chainARelayerWallet, ok := ibcrelayer.GetWallet(chainA.Config().ChainID) if !ok { return nil, nil, fmt.Errorf("unable to find chain A relayer wallet") } - chainBRelayerWallet, ok := relayer.GetWallet(chainB.Config().ChainID) + chainBRelayerWallet, ok := ibcrelayer.GetWallet(chainB.Config().ChainID) if !ok { return nil, nil, fmt.Errorf("unable to find chain B relayer wallet") } return chainARelayerWallet, chainBRelayerWallet, nil } -// RecoverRelayerWallets adds the corresponding relayer address to the keychain of the chain. +// RecoverRelayerWallets adds the corresponding ibcrelayer address to the keychain of the chain. // This is useful if commands executed on the chains expect the relayer information to present in the keychain. -func (s *E2ETestSuite) RecoverRelayerWallets(ctx context.Context, relayer ibc.Relayer) error { - chainARelayerWallet, chainBRelayerWallet, err := s.GetRelayerWallets(relayer) +func (s *E2ETestSuite) RecoverRelayerWallets(ctx context.Context, ibcrelayer ibc.Relayer) error { + chainARelayerWallet, chainBRelayerWallet, err := s.GetRelayerWallets(ibcrelayer) if err != nil { return err } @@ -260,18 +260,18 @@ func (s *E2ETestSuite) RecoverRelayerWallets(ctx context.Context, relayer ibc.Re return nil } -// StartRelayer starts the given relayer. -func (s *E2ETestSuite) StartRelayer(relayer ibc.Relayer) { +// StartRelayer starts the given ibcrelayer. +func (s *E2ETestSuite) StartRelayer(ibcrelayer ibc.Relayer) { if s.startRelayerFn == nil { panic("cannot start relayer before it is created!") } - s.startRelayerFn(relayer) + s.startRelayerFn(ibcrelayer) } -// StopRelayer stops the given relayer. -func (s *E2ETestSuite) StopRelayer(ctx context.Context, relayer ibc.Relayer) { - err := relayer.StopRelayer(ctx, s.GetRelayerExecReporter()) +// StopRelayer stops the given ibcrelayer. +func (s *E2ETestSuite) StopRelayer(ctx context.Context, ibcrelayer ibc.Relayer) { + err := ibcrelayer.StopRelayer(ctx, s.GetRelayerExecReporter()) s.Require().NoError(err) } @@ -350,7 +350,7 @@ func (s *E2ETestSuite) GetRelayerExecReporter() *testreporter.RelayerExecReporte } // TransferChannelOptions configures both of the chains to have non-incentivized transfer channels. -func (s *E2ETestSuite) TransferChannelOptions() func(options *ibc.CreateChannelOptions) { +func (*E2ETestSuite) TransferChannelOptions() func(options *ibc.CreateChannelOptions) { return func(opts *ibc.CreateChannelOptions) { opts.Version = transfertypes.Version opts.SourcePortName = transfertypes.PortID @@ -363,7 +363,7 @@ func (s *E2ETestSuite) TransferChannelOptions() func(options *ibc.CreateChannelO func (s *E2ETestSuite) GetTimeoutHeight(ctx context.Context, chain *cosmos.CosmosChain) clienttypes.Height { height, err := chain.Height(ctx) s.Require().NoError(err) - return clienttypes.NewHeight(clienttypes.ParseChainID(chain.Config().ChainID), uint64(height)+1000) + return clienttypes.NewHeight(clienttypes.ParseChainID(chain.Config().ChainID), height+1000) } // GetNativeChainBalance returns the balance of a specific user on a chain using the native denom. diff --git a/e2e/testvalues/values.go b/e2e/testvalues/values.go index 4351afdf720..24913b0c8b0 100644 --- a/e2e/testvalues/values.go +++ b/e2e/testvalues/values.go @@ -74,7 +74,7 @@ var SimdNewGenesisCommandsFeatureReleases = semverutil.FeatureReleases{ MajorVersion: "v8", } -// TransferSelfParamsFeatureReleases represents the releases the transfer module started managing its own params. +// SelfParamsFeatureReleases represents the releases the transfer module started managing its own params. var SelfParamsFeatureReleases = semverutil.FeatureReleases{ MajorVersion: "v8", }