Skip to content

Commit

Permalink
ci: test against go-relayer
Browse files Browse the repository at this point in the history
- currently, tests were only run using the hermes relayer. now, we test both hermes and go-relayer in CI
  • Loading branch information
0xpatrickdev committed Oct 2, 2024
1 parent 928616e commit aae61c3
Show file tree
Hide file tree
Showing 4 changed files with 228 additions and 79 deletions.
93 changes: 93 additions & 0 deletions .github/workflows/multichain-e2e-template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: Multichain E2E Workflow Template

on:
workflow_call:
inputs:
config:
required: true
type: string
relayer-type:
required: true
type: string

jobs:
multichain-e2e:
runs-on: ubuntu-latest-16core

steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
path: ./agoric-sdk
- uses: ./agoric-sdk/.github/actions/restore-node
with:
node-version: 18.x
path: ./agoric-sdk

- name: yarn link
run: |
yarn link-cli ~/bin/agoric
echo "/home/runner/bin" >> $GITHUB_PATH
working-directory: ./agoric-sdk

- name: Enable Corepack
run: corepack enable
working-directory: ./agoric-sdk/multichain-testing

- name: Install @agoric/multichain-testing deps
run: yarn install
working-directory: ./agoric-sdk/multichain-testing

- name: Lint @agoric/multichain-testing
run: yarn lint
working-directory: ./agoric-sdk/multichain-testing

- name: Setup Starship Infrastructure
id: starship-infra
uses: cosmology-tech/[email protected]
with:
# uses ghcr.io/agoric/agoric-sdk:dev image (latest master)
values: ./agoric-sdk/multichain-testing/${{ inputs.config }}
port-forward: true
version: 0.2.10
timeout: 30m
namespace: agoric-multichain-${{ inputs.relayer-type }}

- name: Fund Provision Pool
run: |
kubectl config set-context --current --namespace=agoric-multichain-${{ inputs.relayer-type }}
kubectl get pods
make fund-provision-pool
working-directory: ./agoric-sdk/multichain-testing

- name: Ensure ports are forwarded
run: |
curl --fail --retry 3 --retry-delay 10 http://localhost:26657/status || (echo "agoriclocal node is available")
curl --fail --retry 3 --retry-delay 10 http://localhost:8081/chains/agoriclocal || (echo "agoriclocal URL check failed")
curl --fail --retry 3 --retry-delay 10 http://localhost:8081/chains/osmosislocal || (echo "osmosislocal URL check failed")
curl --fail --retry 3 --retry-delay 10 http://localhost:8081/chains/gaialocal || (echo "gaialocal URL check failed")
- name: Override Chain Registry
run: make override-chain-registry
working-directory: ./agoric-sdk/multichain-testing

- name: Run @agoric/multichain-testing E2E Tests
run: yarn test
working-directory: ./agoric-sdk/multichain-testing
env:
RELAYER_TYPE: ${{ inputs.relayer-type }}

- name: Capture and print agoric validator logs
if: always()
run: kubectl logs agoriclocal-genesis-0 --container=validator || true
working-directory: ./agoric-sdk/multichain-testing

- name: Capture and print agoric-osmosis relayer logs
if: always()
run: kubectl logs ${{ inputs.relayer-type }}-agoric-osmosis-0 --container=relayer || true
working-directory: ./agoric-sdk/multichain-testing

- name: Capture and print agoric-cosmos relayer logs
if: always()
run: kubectl logs ${{ inputs.relayer-type }}-agoric-gaia-0 --container=relayer || true
working-directory: ./agoric-sdk/multichain-testing
92 changes: 13 additions & 79 deletions .github/workflows/multichain-e2e.yml
Original file line number Diff line number Diff line change
@@ -1,85 +1,19 @@
name: Multichain E2E Tests

on:
workflow_dispatch:
workflow_call:

jobs:
multichain-e2e:
runs-on: ubuntu-latest-16core

steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
path: ./agoric-sdk
- uses: ./agoric-sdk/.github/actions/restore-node
with:
node-version: 18.x
path: ./agoric-sdk

- name: yarn link
run: |
yarn link-cli ~/bin/agoric
echo "/home/runner/bin" >> $GITHUB_PATH
working-directory: ./agoric-sdk

- name: Enable Corepack
run: corepack enable
working-directory: ./agoric-sdk/multichain-testing

- name: Install @agoric/multichain-testing deps
run: yarn install
working-directory: ./agoric-sdk/multichain-testing

- name: Lint @agoric/multichain-testing
run: yarn lint
working-directory: ./agoric-sdk/multichain-testing

- name: Setup Starship Infrastructure
id: starship-infra
uses: cosmology-tech/[email protected]
with:
# uses ghcr.io/agoric/agoric-sdk:dev image (latest master)
values: ./agoric-sdk/multichain-testing/config.yaml
port-forward: true
version: 0.2.10
timeout: 30m
namespace: agoric-multichain

- name: Fund Provision Pool
run: |
kubectl config set-context --current --namespace=agoric-multichain
kubectl get pods
make fund-provision-pool
working-directory: ./agoric-sdk/multichain-testing

- name: Ensure ports are forwarded
run: |
curl --fail --retry 3 --retry-delay 10 http://localhost:26657/status || (echo "agoriclocal node is available")
curl --fail --retry 3 --retry-delay 10 http://localhost:8081/chains/agoriclocal || (echo "agoriclocal URL check failed")
curl --fail --retry 3 --retry-delay 10 http://localhost:8081/chains/osmosislocal || (echo "osmosislocal URL check failed")
curl --fail --retry 3 --retry-delay 10 http://localhost:8081/chains/gaialocal || (echo "gaialocal URL check failed")
- name: Override Chain Registry
run: make override-chain-registry
working-directory: ./agoric-sdk/multichain-testing

- name: Run @agoric/multichain-testing E2E Tests
run: yarn test
working-directory: ./agoric-sdk/multichain-testing

- name: Capture and print agoric validator logs
if: always()
run: kubectl logs agoriclocal-genesis-0 --container=validator || true
working-directory: ./agoric-sdk/multichain-testing

- name: Capture and print agoric-osmosis relayer logs
if: always()
run: kubectl logs hermes-agoric-osmosis-0 --container=relayer || true
working-directory: ./agoric-sdk/multichain-testing

- name: Capture and print agoric-cosmos relayer logs
if: always()
run: kubectl logs hermes-agoric-gaia-0 --container=relayer || true
working-directory: ./agoric-sdk/multichain-testing
hermes-test:
name: Multichain E2E (hermes)
uses: ./.github/workflows/multichain-e2e-template.yml
with:
config: config.yaml
relayer-type: hermes

go-relayer-test:
name: Multichain E2E (go-relayer)
uses: ./.github/workflows/multichain-e2e-template.yml
with:
config: config.gorelayer.yaml
relayer-type: go-relayer
7 changes: 7 additions & 0 deletions multichain-testing/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,13 @@ kubectl logs hermes-agoric-gaia-0 --container=relayer --follow
kubectl logs hermes-osmosis-gaia-0 --container=relayer --follow
```

## Running With Different Config File

```sh
# run tests with go-relayer configuration
make start FILE=config.gorelayer.yaml
```

## Agoric Smart Wallet

For the steps below, you must import a key to `agd` or create a new one.
Expand Down
115 changes: 115 additions & 0 deletions multichain-testing/config.gorelayer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# mirrors config.yaml, sans s/hermes/go-relayer
chains:
- id: agoriclocal
name: agoric
image: ghcr.io/agoric/agoric-sdk:dev
numValidators: 1
env:
- name: DEBUG
value: SwingSet:vat,SwingSet:ls
genesis:
app_state:
staking:
params:
unbonding_time: '2m'
swingset:
params:
bootstrap_vat_config: '@agoric/vm-config/decentral-itest-orchestration-config.json'
scripts:
updateConfig:
file: scripts/update-config.sh
faucet:
enabled: true
type: starship
ports:
rest: 1317
rpc: 26657
exposer: 38087
grpc: 9090
faucet: 8082
resources:
cpu: 1
memory: 4Gi
- id: osmosislocal
name: osmosis
numValidators: 1
genesis:
app_state:
staking:
params:
unbonding_time: '2m'
interchain_accounts:
host_genesis_state:
params:
host_enabled: true
allow_messages: ['*']
interchainquery:
host_port: 'icqhost'
params:
host_enabled: true
allow_queries:
- /cosmos.bank.v1beta1.Query/Balance
- /cosmos.bank.v1beta1.Query/AllBalances
faucet:
enabled: true
type: starship
ports:
rest: 1315
rpc: 26655
grpc: 9093
faucet: 8084
resources:
cpu: 1
memory: 1Gi
- id: gaialocal
name: cosmoshub
numValidators: 1
genesis:
app_state:
staking:
params:
unbonding_time: '2m'
interchain_accounts:
host_genesis_state:
params:
host_enabled: true
allow_messages: ['*']
faucet:
enabled: true
type: starship
ports:
rest: 1314
rpc: 26654
grpc: 9092
faucet: 8083
resources:
cpu: 1
memory: 1Gi

relayers:
- name: osmosis-gaia
type: go-relayer
replicas: 1
chains:
- osmosislocal
- gaialocal
- name: agoric-osmosis
type: go-relayer
replicas: 1
chains:
- agoriclocal
- osmosislocal
- name: agoric-gaia
type: go-relayer
replicas: 1
chains:
- agoriclocal
- gaialocal

explorer:
enabled: false

registry:
enabled: true
ports:
rest: 8081

0 comments on commit aae61c3

Please sign in to comment.