From e60d77777c04e86a5527291410c2b0ebcbfb168b Mon Sep 17 00:00:00 2001 From: Serban Iorga Date: Sun, 11 Feb 2024 16:49:23 +0100 Subject: [PATCH] Migrate test 0002 to new orchestrator --- .gitlab/pipeline/zombienet/bridges.yml | 7 +++++ bridges/zombienet/helpers/utils.js | 3 +- .../rococo-to-westend.zndsl | 8 +++++ .../run.sh | 29 +++++++++++++++++++ .../westend-to-rococo.zndsl | 7 +++++ 5 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/rococo-to-westend.zndsl create mode 100755 bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/run.sh create mode 100644 bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/westend-to-rococo.zndsl diff --git a/.gitlab/pipeline/zombienet/bridges.yml b/.gitlab/pipeline/zombienet/bridges.yml index f2de526c87058..16cabad6ccabb 100644 --- a/.gitlab/pipeline/zombienet/bridges.yml +++ b/.gitlab/pipeline/zombienet/bridges.yml @@ -53,3 +53,10 @@ zombienet-bridges-0001-asset-transfer-works: script: - /home/nonroot/bridges-polkadot-sdk/bridges/zombienet/run-new-test.sh 0001-asset-transfer --docker - echo "Done" + +zombienet-bridges-0002-mandatory-headers-synced-while-idle: + extends: + - .zombienet-bridges-common + script: + - /home/nonroot/bridges-polkadot-sdk/bridges/zombienet/run-new-test.sh 0002-mandatory-headers-synced-while-idle --docker + - echo "Done" diff --git a/bridges/zombienet/helpers/utils.js b/bridges/zombienet/helpers/utils.js index 5a5542b56dfc2..a0c9b7415df5b 100644 --- a/bridges/zombienet/helpers/utils.js +++ b/bridges/zombienet/helpers/utils.js @@ -88,6 +88,7 @@ module.exports = { const bestBridgedParachainHeader = await apiAtParent.query[bridgedChain.parachainsPalletName].parasInfo(bridgedChain.bridgedBridgeHubParaId);; const hasBestBridgedParachainHeader = bestBridgedParachainHeader.isSome; + const oldParachainHeaders = hasBestBridgedParachainHeader ? 1: 0; // we expect to see: no more than `1` bridged parachain header if there were no parachain header before. const maxNewParachainHeaders = hasBestBridgedParachainHeader ? 0 : 1; const newParachainHeaders = module.exports.countParachainHeaderImports(bridgedChain, currentEvents); @@ -98,6 +99,6 @@ module.exports = { throw new Error("Unexpected parachain header import: " + newParachainHeaders + " / " + maxNewParachainHeaders); } - return newParachainHeaders; + return oldParachainHeaders + newParachainHeaders; }, } diff --git a/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/rococo-to-westend.zndsl b/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/rococo-to-westend.zndsl new file mode 100644 index 0000000000000..d4283b3612966 --- /dev/null +++ b/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/rococo-to-westend.zndsl @@ -0,0 +1,8 @@ +Description: While relayer is idle, we only sync mandatory Rococo (and a single Rococo BH) headers to Westend BH. +Network: ../../../../cumulus/zombienet/bridge-hubs/bridge_hub_westend_local_network.toml +Creds: config + +# ensure that relayer is only syncing mandatory headers while idle. This includes both headers that were +# generated while relay was offline and those in the next 100 seconds while script is active. +bridge-hub-westend-collator1: js-script ../../helpers/only-mandatory-headers-synced-when-idle.js with "300,rococo-at-westend" within 600 seconds + diff --git a/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/run.sh b/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/run.sh new file mode 100755 index 0000000000000..3543dab4d2e9a --- /dev/null +++ b/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/run.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +source "${BASH_SOURCE%/*}/../../utils/common.sh" +source "${BASH_SOURCE%/*}/../../utils/zombienet.sh" + +# We use `--relayer-delay` in order to sleep some time before starting relayer. +# We want to sleep for at least 1 session, which is expected to be 60 seconds for test environment. +${BASH_SOURCE%/*}/../../environments/rococo-westend/spawn.sh & +env_pid=$! + +ensure_process_file $env_pid $TEST_DIR/rococo.env 400 +rococo_dir=`cat $TEST_DIR/rococo.env` +echo + +ensure_process_file $env_pid $TEST_DIR/westend.env 180 +westend_dir=`cat $TEST_DIR/westend.env` +echo + +# Sleep for some time before starting the relayer. We want to sleep for at least 1 session, +# which is expected to be 60 seconds for the test environment. +echo -e "Sleeping 180s before starting relayer ...\n" +sleep 180 +${BASH_SOURCE%/*}/../../environments/rococo-westend/start_relayer.sh $rococo_dir $westend_dir relayer_pid + +run_zndsl ${BASH_SOURCE%/*}/rococo-to-westend.zndsl $westend_dir +run_zndsl ${BASH_SOURCE%/*}/westend-to-rococo.zndsl $rococo_dir + diff --git a/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/westend-to-rococo.zndsl b/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/westend-to-rococo.zndsl new file mode 100644 index 0000000000000..1ea4c92a34582 --- /dev/null +++ b/bridges/zombienet/tests/0002-mandatory-headers-synced-while-idle/westend-to-rococo.zndsl @@ -0,0 +1,7 @@ +Description: While relayer is idle, we only sync mandatory Westend (and a single Westend BH) headers to Rococo BH. +Network: ../../../../cumulus/zombienet/bridge-hubs/bridge_hub_rococo_local_network.toml +Creds: config + +# ensure that relayer is only syncing mandatory headers while idle. This includes both headers that were +# generated while relay was offline and those in the next 100 seconds while script is active. +bridge-hub-rococo-collator1: js-script ../../helpers/only-mandatory-headers-synced-when-idle.js with "300,westend-at-rococo" within 600 seconds