diff --git a/e2e/relayer/relayer.go b/e2e/relayer/relayer.go index afa0385fb7c..3e4cb2163aa 100644 --- a/e2e/relayer/relayer.go +++ b/e2e/relayer/relayer.go @@ -15,8 +15,10 @@ const ( Rly = "rly" Hermes = "hermes" - cosmosRelayerRepository = "damiannolan/rly" //"ghcr.io/cosmos/relayer" - cosmosRelayerUser = "100:1000" // docker run -it --rm --entrypoint echo ghcr.io/cosmos/relayer "$(id -u):$(id -g)" + hermesRelayerRepository = "ghcr.io/informalsystems/hermes" + hermesRelayerUser = "1000:1000" + rlyRelayerRepository = "damiannolan/rly" //"ghcr.io/cosmos/relayer" + rlyRelayerUser = "100:1000" // docker run -it --rm --entrypoint echo ghcr.io/cosmos/relayer "$(id -u):$(id -g)" ) // Config holds configuration values for the relayer used in the tests. @@ -35,7 +37,7 @@ func New(t *testing.T, cfg Config, logger *zap.Logger, dockerClient *dockerclien case Rly: return newCosmosRelayer(t, cfg.Tag, logger, dockerClient, network) case Hermes: - return newHermesRelayer() + return newHermesRelayer(t, cfg.Tag, logger, dockerClient, network) default: panic(fmt.Sprintf("unknown relayer specified: %s", cfg.Type)) } @@ -44,7 +46,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 { - customImageOption := relayer.CustomDockerImage(cosmosRelayerRepository, tag, cosmosRelayerUser) + customImageOption := relayer.CustomDockerImage(rlyRelayerRepository, tag, rlyRelayerUser) relayerProcessingOption := relayer.StartupFlags("-p", "events") // relayer processes via events relayerFactory := interchaintest.NewBuiltinRelayerFactory(ibc.CosmosRly, logger, customImageOption, relayerProcessingOption) @@ -55,8 +57,13 @@ func newCosmosRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient } // newHermesRelayer returns an instance of the hermes relayer. -func newHermesRelayer() ibc.Relayer { - panic("hermes relayer not yet implemented for interchaintest") +func newHermesRelayer(t *testing.T, tag string, logger *zap.Logger, dockerClient *dockerclient.Client, network string) ibc.Relayer { + customImageOption := relayer.CustomDockerImage(hermesRelayerRepository, tag, hermesRelayerUser) + relayerFactory := interchaintest.NewBuiltinRelayerFactory(ibc.Hermes, logger, customImageOption) + + return relayerFactory.Build( + t, dockerClient, network, + ) } // RelayerMap is a mapping from test names to a relayer set for that test. diff --git a/e2e/testconfig/testconfig.go b/e2e/testconfig/testconfig.go index f5b015ab7f1..f933f2d9da8 100644 --- a/e2e/testconfig/testconfig.go +++ b/e2e/testconfig/testconfig.go @@ -51,6 +51,8 @@ const ( // defaultRlyTag is the tag that will be used if no relayer tag is specified. // all images are here https://github.com/cosmos/relayer/pkgs/container/relayer/versions defaultRlyTag = "latest" // "andrew-tendermint_v0.37" // "v2.2.0" + // defaultHermesTag is the tag that will be used if no relayer tag is specified for hermes. + defaultHermesTag = "v1.4.0" // defaultChainTag is the tag that will be used for the chains if none is specified. defaultChainTag = "main" // defaultRelayerType is the default relayer that will be used if none is specified. @@ -286,7 +288,7 @@ func getRelayerConfigFromEnv() relayer.Config { rlyTag = defaultRlyTag } if relayerType == relayer.Hermes { - // TODO: set default hermes version + rlyTag = defaultHermesTag } } return relayer.Config{ diff --git a/e2e/testsuite/testsuite.go b/e2e/testsuite/testsuite.go index 29c21ab6680..30fb9e96d18 100644 --- a/e2e/testsuite/testsuite.go +++ b/e2e/testsuite/testsuite.go @@ -4,13 +4,13 @@ import ( "context" "fmt" "strings" - "time" dockerclient "github.com/docker/docker/client" interchaintest "github.com/strangelove-ventures/interchaintest/v7" "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" "github.com/strangelove-ventures/interchaintest/v7/ibc" "github.com/strangelove-ventures/interchaintest/v7/testreporter" + test "github.com/strangelove-ventures/interchaintest/v7/testutil" "github.com/stretchr/testify/suite" "go.uber.org/zap" "go.uber.org/zap/zaptest" @@ -128,7 +128,7 @@ func (s *E2ETestSuite) SetupChainsRelayerAndChannel(ctx context.Context, channel } }) // wait for relayer to start. - time.Sleep(time.Second * 10) + s.Require().NoError(test.WaitForBlocks(ctx, 10, chainA, chainB), "failed to wait for blocks") } s.InitGRPCClients(chainA)