Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main' into feature/substrate-p…
Browse files Browse the repository at this point in the history
…rocessor-ibcheader
  • Loading branch information
TxCorpi0x committed Oct 7, 2022
2 parents 70d3847 + 25897a2 commit a57733c
Show file tree
Hide file tree
Showing 34 changed files with 1,459 additions and 317 deletions.
46 changes: 44 additions & 2 deletions .github/workflows/ibctest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
${{ runner.os }}-go-
- name: ibctest
run: make ibctest-docker-events
run: make ibctest-events
legacy:
runs-on: self-hosted
steps:
Expand All @@ -48,4 +48,46 @@ jobs:
${{ runner.os }}-go-
- name: ibctest
run: make ibctest-docker-legacy
run: make ibctest-legacy
multiple-paths:
runs-on: self-hosted
steps:
- name: Set up Go 1.18
uses: actions/setup-go@v1
with:
go-version: 1.18
id: go

- name: checkout relayer
uses: actions/checkout@v2

- uses: actions/cache@v1
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: ibctest
run: make ibctest-multiple
path-filter:
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.18
uses: actions/setup-go@v1
with:
go-version: 1.18
id: go

- name: checkout relayer
uses: actions/checkout@v2

- uses: actions/cache@v1
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: ibctest
run: make ibctest-path-filter
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
* [\#467](https://github.com/cosmos/relayer/pull/467) cli: UX cleanup for tx commands
* [\#466](https://github.com/cosmos/relayer/pull/466) Docs cleanup.
* [\#506](https://github.com/cosmos/relayer/pull/506) Fix Timeout Handling on Relayer restart
* [\#940](https://github.com/cosmos/relayer/pull/940) Add min-gas-amount parameter for chain configs, to workaround gas estimation failure.

## v0.9.3

Expand Down
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,18 @@ ibctest-docker-events:
ibctest-docker-legacy:
cd ibctest && go test -race -v -run TestRelayerDockerLegacyProcessor .

ibctest-events:
cd ibctest && go test -race -v -run TestRelayerEventProcessor .

ibctest-legacy:
cd ibctest && go test -race -v -run TestRelayerLegacyProcessor .

ibctest-multiple:
cd ibctest && go test -race -v -run TestRelayerMultiplePathsSingleProcess .

ibctest-path-filter:
cd ibctest && go test -race -v -run TestPathFilter .

coverage:
@echo "viewing test coverage..."
@go tool cover --html=coverage.out
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ Additional information on how IBC works can be found [here](https://ibc.cosmos.n
```shell
$ rly paths list
$ rly start [path]
# Optionally you can omit the `path` argument to start all configured paths
$ rly start
```

You will need to start a separate shell instance for each path you wish to relay over.
Expand Down
90 changes: 50 additions & 40 deletions _test/relayer_chain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,18 @@ const (
func chainTest(t *testing.T, tcs []testChain) {
chains := spinUpTestChains(t, tcs...)

c, err := chains.Gets("ibc-0", "ibc-1")
require.NoError(t, err)

var (
src = chains.MustGet(tcs[0].chainID)
dst = chains.MustGet(tcs[1].chainID)
src = c["ibc-0"]
dst = c["ibc-1"]
testDenom = "samoleans"
testCoin = sdk.NewCoin(testDenom, sdk.NewInt(1000))
twoTestCoin = sdk.NewCoin(testDenom, sdk.NewInt(2000))
)

_, err := genTestPathAndSet(src, dst)
p, err := genTestPathAndSet(src, dst)
require.NoError(t, err)

t.Log("Querying initial balances for later comparison")
Expand Down Expand Up @@ -76,15 +79,15 @@ func chainTest(t *testing.T, tcs []testChain) {
require.NoError(t, eg.Wait())

t.Log("Creating clients")
_, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

timeout, err := src.GetTimeout()
require.NoError(t, err)

t.Log("Creating connections")
_, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
_, _, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
require.NoError(t, err)
testConnectionPair(ctx, t, src, dst)

Expand Down Expand Up @@ -119,8 +122,7 @@ func chainTest(t *testing.T, tcs []testChain) {
require.NoError(t, dst.ChainProvider.WaitForNBlocks(ctx, 1))

t.Log("Starting relayer")
filter := relayer.ChannelFilter{}
_ = relayer.StartRelayer(ctx, log, src, dst, filter, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, "", nil)
_ = relayer.StartRelayer(ctx, log, c, []relayer.NamedPath{{Path: p}}, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, nil)

t.Log("Waiting for relayer messages to reach both chains")
require.NoError(t, src.ChainProvider.WaitForNBlocks(ctx, 2))
Expand Down Expand Up @@ -165,14 +167,14 @@ func TestGaiaReuseIdentifiers(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

_, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

timeout, err := src.GetTimeout()
require.NoError(t, err)

_, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
_, _, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
require.NoError(t, err)
testConnectionPair(ctx, t, src, dst)

Expand All @@ -195,11 +197,11 @@ func TestGaiaReuseIdentifiers(t *testing.T) {
dst.PathEnd.ClientID = ""
dst.PathEnd.ConnectionID = ""

_, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

_, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
_, _, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
require.NoError(t, err)
testConnectionPair(ctx, t, src, dst)

Expand All @@ -217,7 +219,7 @@ func TestGaiaReuseIdentifiers(t *testing.T) {
src.PathEnd.ClientID = ""
dst.PathEnd.ClientID = ""

_, err = src.CreateClients(ctx, dst, true, true, true, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, true, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

Expand All @@ -234,26 +236,29 @@ func TestGaiaMisbehaviourMonitoring(t *testing.T) {
{"testChain1", "ibc-1", 1, gaiaTestConfig, gaiaProviderCfg},
}...)

c, err := chains.Gets("ibc-0", "ibc-1")
require.NoError(t, err)

var (
src = chains.MustGet("ibc-0")
dst = chains.MustGet("ibc-1")
src = c["ibc-0"]
dst = c["ibc-1"]
)

_, err := genTestPathAndSet(src, dst)
p, err := genTestPathAndSet(src, dst)
require.NoError(t, err)

// create path
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

_, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

timeout, err := src.GetTimeout()
require.NoError(t, err)

_, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
_, _, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
require.NoError(t, err)
testConnectionPair(ctx, t, src, dst)

Expand All @@ -269,8 +274,7 @@ func TestGaiaMisbehaviourMonitoring(t *testing.T) {

log := zaptest.NewLogger(t)
// start the relayer process in it's own goroutine
filter := relayer.ChannelFilter{}
_ = relayer.StartRelayer(ctx, log, src, dst, filter, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, "", nil)
_ = relayer.StartRelayer(ctx, log, c, []relayer.NamedPath{{Path: p}}, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, nil)

// Wait for relay message inclusion in both chains
require.NoError(t, src.ChainProvider.WaitForNBlocks(ctx, 1))
Expand Down Expand Up @@ -335,15 +339,18 @@ func TestRelayAllChannelsOnConnection(t *testing.T) {
{"testChain1", "ibc-1", 1, gaiaTestConfig, gaiaProviderCfg},
}...)

c, err := chains.Gets("ibc-0", "ibc-1")
require.NoError(t, err)

var (
src = chains.MustGet("ibc-0")
dst = chains.MustGet("ibc-1")
src = c["ibc-0"]
dst = c["ibc-1"]
testDenom = "samoleans"
testCoin = sdk.NewCoin(testDenom, sdk.NewInt(1000))
twoTestCoin = sdk.NewCoin(testDenom, sdk.NewInt(2000))
)

_, err := genTestPathAndSet(src, dst)
p, err := genTestPathAndSet(src, dst)
require.NoError(t, err)

t.Log("Querying initial balances to compare against at the end")
Expand Down Expand Up @@ -386,15 +393,15 @@ func TestRelayAllChannelsOnConnection(t *testing.T) {
require.NoError(t, eg.Wait())

t.Log("Creating clients")
_, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

timeout, err := src.GetTimeout()
require.NoError(t, err)

t.Log("Creating connections")
_, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
_, _, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
require.NoError(t, err)
testConnectionPair(ctx, t, src, dst)

Expand Down Expand Up @@ -443,8 +450,7 @@ func TestRelayAllChannelsOnConnection(t *testing.T) {
require.NoError(t, dst.ChainProvider.WaitForNBlocks(ctx, 1))

t.Log("Starting relayer")
filter := relayer.ChannelFilter{}
_ = relayer.StartRelayer(ctx, log, src, dst, filter, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, "", nil)
_ = relayer.StartRelayer(ctx, log, c, []relayer.NamedPath{{Path: p}}, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, nil)

t.Log("Waiting for relayer message inclusion in both chains")
require.NoError(t, src.ChainProvider.WaitForNBlocks(ctx, 1))
Expand Down Expand Up @@ -543,14 +549,17 @@ func TestUnorderedChannelBlockHeightTimeout(t *testing.T) {
{"testChain1", "ibc-1", 1, gaiaTestConfig, gaiaProviderCfg},
}...)

c, err := chains.Gets("ibc-0", "ibc-1")
require.NoError(t, err)

var (
src = chains.MustGet("ibc-0")
dst = chains.MustGet("ibc-1")
src = c["ibc-0"]
dst = c["ibc-1"]
testDenom = "samoleans"
twoTestCoin = sdk.NewCoin(testDenom, sdk.NewInt(2000))
)

_, err := genTestPathAndSet(src, dst)
p, err := genTestPathAndSet(src, dst)
require.NoError(t, err)

// query initial balances to compare against at the end
Expand Down Expand Up @@ -583,14 +592,14 @@ func TestUnorderedChannelBlockHeightTimeout(t *testing.T) {
require.NoError(t, eg.Wait())

// create path
_, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

timeout, err := src.GetTimeout()
require.NoError(t, err)

_, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
_, _, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
require.NoError(t, err)
testConnectionPair(ctx, t, src, dst)

Expand Down Expand Up @@ -619,8 +628,7 @@ func TestUnorderedChannelBlockHeightTimeout(t *testing.T) {
require.NoError(t, src.ChainProvider.WaitForNBlocks(ctx, 11))

// start the relayer process in it's own goroutine
filter := relayer.ChannelFilter{}
_ = relayer.StartRelayer(ctx, log, src, dst, filter, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, "", nil)
_ = relayer.StartRelayer(ctx, log, c, []relayer.NamedPath{{Path: p}}, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, nil)

require.NoError(t, src.ChainProvider.WaitForNBlocks(ctx, 5))

Expand All @@ -641,14 +649,17 @@ func TestUnorderedChannelTimestampTimeout(t *testing.T) {
{"testChain1", "ibc-1", 1, gaiaTestConfig, gaiaProviderCfg},
}...)

c, err := chains.Gets("ibc-0", "ibc-1")
require.NoError(t, err)

var (
src = chains.MustGet("ibc-0")
dst = chains.MustGet("ibc-1")
src = c["ibc-0"]
dst = c["ibc-1"]
testDenom = "samoleans"
twoTestCoin = sdk.NewCoin(testDenom, sdk.NewInt(2000))
)

_, err := genTestPathAndSet(src, dst)
p, err := genTestPathAndSet(src, dst)
require.NoError(t, err)

// query initial balances to compare against at the end
Expand Down Expand Up @@ -681,14 +692,14 @@ func TestUnorderedChannelTimestampTimeout(t *testing.T) {
require.NoError(t, eg.Wait())

// create path
_, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
_, _, err = src.CreateClients(ctx, dst, true, true, false, 0, "")
require.NoError(t, err)
testClientPair(ctx, t, src, dst)

timeout, err := src.GetTimeout()
require.NoError(t, err)

_, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
_, _, err = src.CreateOpenConnections(ctx, dst, 3, timeout, "", 0, "")
require.NoError(t, err)
testConnectionPair(ctx, t, src, dst)

Expand Down Expand Up @@ -717,8 +728,7 @@ func TestUnorderedChannelTimestampTimeout(t *testing.T) {
time.Sleep(time.Second * 20)

// start the relayer process in it's own goroutine
filter := relayer.ChannelFilter{}
_ = relayer.StartRelayer(ctx, log, src, dst, filter, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, "", nil)
_ = relayer.StartRelayer(ctx, log, c, []relayer.NamedPath{{Path: p}}, 2*cmd.MB, 5, "", relayer.ProcessorEvents, 20, nil)

time.Sleep(time.Second * 10)

Expand Down
Loading

0 comments on commit a57733c

Please sign in to comment.