-
Notifications
You must be signed in to change notification settings - Fork 1
197 lines (175 loc) · 7.16 KB
/
emerynet-localchain-test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
name: IBC Testing with Emerynet and Local Chain
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
ibc-testing:
runs-on: ubuntu-latest
env:
EMERYNET_BALANCE_FILE: emerynet_balance.txt
LOCAL_BALANCE_FILE: local_balance.txt
EMERYNET_CHAIN_ID: agoric-emerynet-8
LOCAL_CHAIN_ID: agoric-local
WALLET_ADDRESS_EMERYNET: agoric10emrzln03exuc9uv98mjwmp95735mjm6k2n9xm
WALLET_ADDRESS_LOCAL: agoric1myfpdaxyj34lqexe9cypu6vrf34xemtfq2a0nt
RELAYER_CONFIG: /workspace/relayer/config-testnet.toml
TRANSFER_AMOUNT_FROM_EMERYNET: 100
TRANSFER_AMOUNT_FROM_LOCAL: 50
EMERYNET_API_URL: https://emerynet.api.agoric.net/cosmos/bank/v1beta1/balances
LOCAL_API_URL: http://localhost:1317/cosmos/bank/v1beta1/balances
BLD_DENOM: ubld
IBC_DENOM: ibc/49C630713B2AB60653F76C0C58D43C2A64956803B4D422CACB6DD4AD016ED846
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Start Agoric Local Chain
run: docker-compose -f docker-compose-testnet.yaml up -d agoric-local
- name: Wait for Local container to be ready
run: |
wait_for_bootstrap() {
endpoint="localhost"
while true; do
if json=$(curl -s --fail -m 15 "$endpoint:26657/status"); then
if [[ "$(echo "$json" | jq -r .jsonrpc)" == "2.0" ]]; then
if last_height=$(echo "$json" | jq -r .result.sync_info.latest_block_height); then
if [[ "$last_height" != "1" ]]; then
echo "$last_height"
return
else
echo "$last_height"
fi
fi
fi
fi
echo "waiting for next block..."
sleep 5
done
echo "done"
}
waitForBlock() {
echo "waiting for block..."
times=${1:-1}
echo "$times"
for ((i = 1; i <= times; i++)); do
b1=$(wait_for_bootstrap)
while true; do
b2=$(wait_for_bootstrap)
if [[ "$b1" != "$b2" ]]; then
echo "block produced"
break
fi
sleep 5
done
done
echo "done"
}
waitForBlock 2
- name: Start Relayer Service
run: docker-compose -f docker-compose-testnet.yaml up -d relayer
- name: Check if Hermes relayer has started
run: |
timeout 540 bash -c "\
until docker logs relayer 2>&1 | grep -q 'Hermes has started'; do
echo 'waiting for relayer to start...'
done"
- name: Store Local Wallet Balance in a file
uses: ./.github/actions/store-balances
with:
url: ${{ env.LOCAL_API_URL }}
address: ${{ env.WALLET_ADDRESS_LOCAL }}
denom: ${{ env.IBC_DENOM }}
file: ${{ env.LOCAL_BALANCE_FILE }}
- name: Store Emerynet Wallet Balance in a file
uses: ./.github/actions/store-balances
with:
url: ${{ env.EMERYNET_API_URL }}
address: ${{ env.WALLET_ADDRESS_EMERYNET }}
denom: ${{ env.BLD_DENOM }}
file: ${{ env.EMERYNET_BALANCE_FILE }}
- name: Monitor Channel Initialization
run: |
timeout 360 bash -c "\
until line=\$(docker logs relayer 2>&1 | grep 'OpenInitChannel'); do
echo 'Waiting for channel initialization...'
sleep 1
done
if [[ -n \$line ]]; then
channel_id=\$(echo \$line | awk -F'channel_id: ' '{print \$2}' | awk -F', ' '{print \$1}')
echo \"Channel ID extracted: \$channel_id\"
echo \$channel_id > channel_id.txt
else
echo 'Channel initialization timed out.'
exit 1
fi"
- name: Confirm Channel Status
run: |
channel_id=$(cat channel_id.txt)
timeout 600 bash -c "\
until docker logs relayer 2>&1 | grep -q 'OpenConfirmChannel.*$channel_id'; do
echo 'Awaiting confirmation for channel ID: $channel_id...'
sleep 1
done
echo 'Channel ID $channel_id confirmed.'"
- name: Execute IBC Token Transfer from Emerynet to Local Chain
run: |
docker exec relayer hermes --config $RELAYER_CONFIG tx ft-transfer --src-chain $EMERYNET_CHAIN_ID --src-channel $(cat channel_id.txt) \
--dst-chain $LOCAL_CHAIN_ID --src-port transfer --amount $TRANSFER_AMOUNT_FROM_EMERYNET --denom 'ubld' --timeout-seconds 1000 && \
sleep 5
- name: Check Token Balance on Emerynet after transfer
uses: ./.github/actions/check-balance-with-polling
with:
url: ${{ env.EMERYNET_API_URL }}
address: ${{ env.WALLET_ADDRESS_EMERYNET }}
denom: ${{ env.BLD_DENOM }}
file: ${{ env.EMERYNET_BALANCE_FILE }}
comparison_type: lesser
polling_seconds: 120
- name: Check Token Balance on Local Chain after transfer
uses: ./.github/actions/check-balance-with-polling
with:
url: ${{ env.LOCAL_API_URL }}
address: ${{ env.WALLET_ADDRESS_LOCAL }}
denom: ${{ env.IBC_DENOM }}
file: ${{ env.LOCAL_BALANCE_FILE }}
comparison_type: greater
polling_seconds: 120
- name: Store Local Wallet Balance in a file
uses: ./.github/actions/store-balances
with:
url: ${{ env.LOCAL_API_URL }}
address: ${{ env.WALLET_ADDRESS_LOCAL }}
denom: ${{ env.IBC_DENOM }}
file: ${{ env.LOCAL_BALANCE_FILE }}
- name: Store Emerynet Wallet Balance in a file
uses: ./.github/actions/store-balances
with:
url: ${{ env.EMERYNET_API_URL }}
address: ${{ env.WALLET_ADDRESS_EMERYNET }}
denom: ${{ env.BLD_DENOM }}
file: ${{ env.EMERYNET_BALANCE_FILE }}
- name: Execute IBC Token Transfer from Local Chain to Emerynet
run: |
docker exec relayer hermes --config $RELAYER_CONFIG tx ft-transfer --src-chain $LOCAL_CHAIN_ID --src-channel channel-0 \
--dst-chain $EMERYNET_CHAIN_ID --src-port transfer --amount $TRANSFER_AMOUNT_FROM_LOCAL --denom 'ibc/49C630713B2AB60653F76C0C58D43C2A64956803B4D422CACB6DD4AD016ED846' --timeout-seconds 1000 && \
sleep 5
- name: Check Token Balance on Local Chain after transfer
uses: ./.github/actions/check-balance-with-polling
with:
url: ${{ env.LOCAL_API_URL }}
address: ${{ env.WALLET_ADDRESS_LOCAL }}
denom: ${{ env.IBC_DENOM }}
file: ${{ env.LOCAL_BALANCE_FILE }}
comparison_type: lesser
polling_seconds: 120
- name: Check Token Balance on Emerynet after transfer
uses: ./.github/actions/check-balance-with-polling
with:
url: ${{ env.EMERYNET_API_URL }}
address: ${{ env.WALLET_ADDRESS_EMERYNET }}
denom: ${{ env.BLD_DENOM }}
file: ${{ env.EMERYNET_BALANCE_FILE }}
comparison_type: greater
polling_seconds: 120