Skip to content

Commit 1b66bb5

Browse files
authored
Bridges: add test 0002 to CI (#3310)
Bridges: add test 0002 to CI
1 parent aa68ea5 commit 1b66bb5

File tree

10 files changed

+95
-16
lines changed

10 files changed

+95
-16
lines changed

.gitlab/pipeline/zombienet/bridges.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,10 @@ zombienet-bridges-0001-asset-transfer-works:
5353
script:
5454
- /home/nonroot/bridges-polkadot-sdk/bridges/zombienet/run-new-test.sh 0001-asset-transfer --docker
5555
- echo "Done"
56+
57+
zombienet-bridges-0002-mandatory-headers-synced-while-idle:
58+
extends:
59+
- .zombienet-bridges-common
60+
script:
61+
- /home/nonroot/bridges-polkadot-sdk/bridges/zombienet/run-new-test.sh 0002-mandatory-headers-synced-while-idle --docker
62+
- echo "Done"

bridges/zombienet/environments/rococo-westend/spawn.sh

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,21 @@ set -e
44

55
trap "trap - SIGTERM && kill -9 -$$" SIGINT SIGTERM EXIT
66

7-
source "${BASH_SOURCE%/*}/../../utils/common.sh"
87
source "${BASH_SOURCE%/*}/../../utils/zombienet.sh"
98

109
# whether to init the chains (open HRMP channels, set XCM version, create reserve assets, etc)
1110
init=0
11+
start_relayer=0
1212
while [ $# -ne 0 ]
1313
do
1414
arg="$1"
1515
case "$arg" in
1616
--init)
1717
init=1
1818
;;
19+
--start-relayer)
20+
start_relayer=1
21+
;;
1922
esac
2023
shift
2124
done
@@ -55,17 +58,13 @@ if [[ $init -eq 1 ]]; then
5558
run_zndsl ${BASH_SOURCE%/*}/westend-init.zndsl $westend_dir
5659
fi
5760

58-
relay_log=$logs_dir/relay.log
59-
echo -e "Starting rococo-westend relay. Logs available at: $relay_log\n"
60-
start_background_process "$helper_script run-relay" $relay_log relay_pid
61+
if [[ $start_relayer -eq 1 ]]; then
62+
${BASH_SOURCE%/*}/start_relayer.sh $rococo_dir $westend_dir relayer_pid
63+
fi
6164

62-
run_zndsl ${BASH_SOURCE%/*}/rococo.zndsl $rococo_dir
6365
echo $rococo_dir > $TEST_DIR/rococo.env
64-
echo
65-
66-
run_zndsl ${BASH_SOURCE%/*}/westend.zndsl $westend_dir
6766
echo $westend_dir > $TEST_DIR/westend.env
6867
echo
6968

70-
wait -n $rococo_pid $westend_pid $relay_pid
69+
wait -n $rococo_pid $westend_pid $relayer_pid
7170
kill -9 -$$
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
source "${BASH_SOURCE%/*}/../../utils/common.sh"
6+
source "${BASH_SOURCE%/*}/../../utils/zombienet.sh"
7+
8+
rococo_dir=$1
9+
westend_dir=$2
10+
__relayer_pid=$3
11+
12+
logs_dir=$TEST_DIR/logs
13+
helper_script="${BASH_SOURCE%/*}/helper.sh"
14+
15+
relayer_log=$logs_dir/relayer.log
16+
echo -e "Starting rococo-westend relayer. Logs available at: $relayer_log\n"
17+
start_background_process "$helper_script run-relay" $relayer_log relayer_pid
18+
19+
run_zndsl ${BASH_SOURCE%/*}/rococo.zndsl $rococo_dir
20+
run_zndsl ${BASH_SOURCE%/*}/westend.zndsl $westend_dir
21+
22+
eval $__relayer_pid="'$relayer_pid'"
23+

bridges/zombienet/helpers/only-mandatory-headers-synced-when-idle.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ async function run(nodeName, networkInfo, args) {
1010

1111
// start listening to new blocks
1212
let totalGrandpaHeaders = 0;
13-
let totalParachainHeaders = 0;
13+
let initialParachainHeaderImported = false;
1414
api.rpc.chain.subscribeNewHeads(async function (header) {
1515
const apiAtParent = await api.at(header.parentHash);
1616
const apiAtCurrent = await api.at(header.hash);
@@ -22,7 +22,7 @@ async function run(nodeName, networkInfo, args) {
2222
apiAtCurrent,
2323
currentEvents,
2424
);
25-
totalParachainHeaders += await utils.ensureOnlyInitialParachainHeaderImported(
25+
initialParachainHeaderImported = await utils.ensureOnlyInitialParachainHeaderImported(
2626
bridgedChain,
2727
apiAtParent,
2828
apiAtCurrent,
@@ -36,7 +36,7 @@ async function run(nodeName, networkInfo, args) {
3636
if (totalGrandpaHeaders == 0) {
3737
throw new Error("No bridged relay chain headers imported");
3838
}
39-
if (totalParachainHeaders == 0) {
39+
if (!initialParachainHeaderImported) {
4040
throw new Error("No bridged parachain headers imported");
4141
}
4242
}

bridges/zombienet/helpers/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,6 @@ module.exports = {
9898
throw new Error("Unexpected parachain header import: " + newParachainHeaders + " / " + maxNewParachainHeaders);
9999
}
100100

101-
return newParachainHeaders;
101+
return hasBestBridgedParachainHeader;
102102
},
103103
}

bridges/zombienet/run-new-test.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
set -e
44

5+
trap 'kill -9 -$$ || echo "Environment already teared down"' SIGINT SIGTERM EXIT
6+
57
test=$1
68
shift
79

@@ -43,5 +45,3 @@ export TEST_DIR=`mktemp -d /tmp/bridges-tests-run-XXXXX`
4345
echo -e "Test folder: $TEST_DIR\n"
4446

4547
${BASH_SOURCE%/*}/tests/$test/run.sh
46-
47-
kill -9 -$$ || echo "Environment already teared down"

bridges/zombienet/tests/0001-asset-transfer/run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set -e
55
source "${BASH_SOURCE%/*}/../../utils/common.sh"
66
source "${BASH_SOURCE%/*}/../../utils/zombienet.sh"
77

8-
${BASH_SOURCE%/*}/../../environments/rococo-westend/spawn.sh --init &
8+
${BASH_SOURCE%/*}/../../environments/rococo-westend/spawn.sh --init --start-relayer &
99
env_pid=$!
1010

1111
ensure_process_file $env_pid $TEST_DIR/rococo.env 400
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Description: While relayer is idle, we only sync mandatory Rococo (and a single Rococo BH) headers to Westend BH.
2+
Network: ../../../../cumulus/zombienet/bridge-hubs/bridge_hub_westend_local_network.toml
3+
Creds: config
4+
5+
# ensure that relayer is only syncing mandatory headers while idle. This includes both headers that were
6+
# generated while relay was offline and those in the next 100 seconds while script is active.
7+
bridge-hub-westend-collator1: js-script ../../helpers/only-mandatory-headers-synced-when-idle.js with "300,rococo-at-westend" within 600 seconds
8+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
source "${BASH_SOURCE%/*}/../../utils/common.sh"
6+
source "${BASH_SOURCE%/*}/../../utils/zombienet.sh"
7+
8+
# We use `--relayer-delay` in order to sleep some time before starting relayer.
9+
# We want to sleep for at least 1 session, which is expected to be 60 seconds for test environment.
10+
${BASH_SOURCE%/*}/../../environments/rococo-westend/spawn.sh &
11+
env_pid=$!
12+
13+
ensure_process_file $env_pid $TEST_DIR/rococo.env 400
14+
rococo_dir=`cat $TEST_DIR/rococo.env`
15+
echo
16+
17+
ensure_process_file $env_pid $TEST_DIR/westend.env 180
18+
westend_dir=`cat $TEST_DIR/westend.env`
19+
echo
20+
21+
# Sleep for some time before starting the relayer. We want to sleep for at least 1 session,
22+
# which is expected to be 60 seconds for the test environment.
23+
echo -e "Sleeping 90s before starting relayer ...\n"
24+
sleep 90
25+
${BASH_SOURCE%/*}/../../environments/rococo-westend/start_relayer.sh $rococo_dir $westend_dir relayer_pid
26+
27+
# Sometimes the relayer syncs multiple parachain heads in the begining leading to test failures.
28+
# See issue: https://github.com/paritytech/parity-bridges-common/issues/2838.
29+
# TODO: Remove this sleep after the issue is fixed.
30+
echo -e "Sleeping 180s before runing the tests ...\n"
31+
sleep 180
32+
33+
run_zndsl ${BASH_SOURCE%/*}/rococo-to-westend.zndsl $westend_dir
34+
run_zndsl ${BASH_SOURCE%/*}/westend-to-rococo.zndsl $rococo_dir
35+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Description: While relayer is idle, we only sync mandatory Westend (and a single Westend BH) headers to Rococo BH.
2+
Network: ../../../../cumulus/zombienet/bridge-hubs/bridge_hub_rococo_local_network.toml
3+
Creds: config
4+
5+
# ensure that relayer is only syncing mandatory headers while idle. This includes both headers that were
6+
# generated while relay was offline and those in the next 100 seconds while script is active.
7+
bridge-hub-rococo-collator1: js-script ../../helpers/only-mandatory-headers-synced-when-idle.js with "300,westend-at-rococo" within 600 seconds

0 commit comments

Comments
 (0)