git.delta.rocks / unique-network / refs/commits / 6c9848e80380

difftreelog

Merge pull request #948 from UniqueNetwork/ci/locks-to-freezes

Yaroslav Bolyukin2023-06-13parents: #aec0c5d #307e69b.patch.diff
in: master

17 files changed

modified.docker/Dockerfile-parachain-upgrade-data.j2diffbeforeafterboth
4242
43ENV RELAY_CHAIN_TYPE={{ RELAY_CHAIN_TYPE }}43ENV RELAY_CHAIN_TYPE={{ RELAY_CHAIN_TYPE }}
44ENV REPLICA_FROM={{ REPLICA_FROM }}44ENV REPLICA_FROM={{ REPLICA_FROM }}
45ENV DESTINATION_SPEC_VERSION={{ DESTINATION_SPEC_VERSION }}
45ENV NEW_PARA_BIN=/unique-chain/target/release/unique-collator46ENV NEW_PARA_BIN=/unique-chain/target/release/unique-collator
46ENV NEW_PARA_WASM=/unique-chain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm47ENV NEW_PARA_WASM=/unique-chain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm
4748
77EXPOSE 3314478EXPOSE 33144
78EXPOSE 3315579EXPOSE 33155
7980
80CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" REPLICA_FROM NEW_PARA_BIN NEW_PARA_WASM RELAY_CHAIN_TYPE && \81CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" REPLICA_FROM NEW_PARA_BIN NEW_PARA_WASM RELAY_CHAIN_TYPE DESTINATION_SPEC_VERSION && \
81 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \82 [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
82 cd /unique-chain/tests && \83 cd /unique-chain/tests && \
83 npm install --global yarn && \84 npm install --global yarn && \
modified.docker/docker-compose.forkless-data.j2diffbeforeafterboth
3services:3services:
4 forkless-data:4 forkless-data:
5 image: uniquenetwork/ci-forkless-data-local:{{ NETWORK }}-{{ BUILD_TAG }}5 image: uniquenetwork/ci-forkless-data-local:{{ NETWORK }}-{{ BUILD_TAG }}
6 container_name: forkless-data6 container_name: forkless-data-{{ NETWORK }}
7 expose:7 expose:
8 - 99448 - 9944
9 - 99339 - 9933
modified.envdiffbeforeafterboth
2POLKADOT_LAUNCH_BRANCH=unique-network2POLKADOT_LAUNCH_BRANCH=unique-network
3RELAY_CHAIN_TYPE=westend3RELAY_CHAIN_TYPE=westend
4CHAINQL=v0.4.14CHAINQL=v0.4.1
5DESTINATION_SPEC_VERSION=v942057
56
6POLKADOT_MAINNET_BRANCH=release-v0.9.377POLKADOT_MAINNET_BRANCH=release-v0.9.37
7STATEMINT_BUILD_BRANCH=release-parachains-v93708STATEMINT_BUILD_BRANCH=release-parachains-v9370
16KARURA_BUILD_BRANCH=release-karura-2.17.017KARURA_BUILD_BRANCH=release-karura-2.17.0
17MOONRIVER_BUILD_BRANCH=runtime-230218MOONRIVER_BUILD_BRANCH=runtime-2302
18SHIDEN_BUILD_BRANCH=v5.4.019SHIDEN_BUILD_BRANCH=v5.4.0
19QUARTZ_MAINNET_BRANCH=release-v94105520QUARTZ_MAINNET_BRANCH=release-v941056
20QUARTZ_REPLICA_FROM=wss://ws-quartz.unique.network:44321QUARTZ_REPLICA_FROM=wss://ws-quartz.unique.network:443
2122
22UNIQUEWEST_MAINNET_BRANCH=release-v0.9.4223UNIQUEWEST_MAINNET_BRANCH=release-v0.9.42
23WESTMINT_BUILD_BRANCH=parachains-v942024WESTMINT_BUILD_BRANCH=parachains-v9420
24OPAL_MAINNET_BRANCH=release-v94105525OPAL_MAINNET_BRANCH=release-v942057
25OPAL_REPLICA_FROM=wss://ws-opal.unique.network:44326OPAL_REPLICA_FROM=wss://ws-opal.unique.network:443
2627
27UNIQUEEAST_MAINNET_BRANCH=release-v0.9.4228UNIQUEEAST_MAINNET_BRANCH=release-v0.9.42
modified.github/workflows/forkless-update-data.ymldiffbeforeafterboth
76 with:76 with:
77 template: .docker/Dockerfile-parachain-upgrade-data.j277 template: .docker/Dockerfile-parachain-upgrade-data.j2
78 output_file: .docker/Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml78 output_file: .docker/Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml
79 variables: |79 variables: |
80 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}80 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
81 NETWORK=${{ matrix.network }}81 NETWORK=${{ matrix.network }}
82 MAINNET_BRANCH=${{ matrix.mainnet_branch }}82 MAINNET_BRANCH=${{ matrix.mainnet_branch }}
83 WASM_NAME=${{ matrix.wasm_name }}83 WASM_NAME=${{ matrix.wasm_name }}
84 RELAY_CHAIN_TYPE=${{ env.RELAY_CHAIN_TYPE }}84 RELAY_CHAIN_TYPE=${{ env.RELAY_CHAIN_TYPE }}
85 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}85 DESTINATION_SPEC_VERSION=${{ env.DESTINATION_SPEC_VERSION }}
86 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}
86 REPLICA_FROM=${{ matrix.replica_from_address }}87 REPLICA_FROM=${{ matrix.replica_from_address }}
87 CHAINQL=${{ env.CHAINQL }}88 CHAINQL=${{ env.CHAINQL }}
88 EXTRA_FEATURES=${{ matrix.extra_features }}89 EXTRA_FEATURES=${{ matrix.extra_features }}
8990
90 - name: Show build configuration91 - name: Show build configuration
91 run: cat .docker/Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml92 run: cat .docker/Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml
195196
196 - name: Check if docker logs consist logs related to Runtime Upgrade testing.197 - name: Check if docker logs consist logs related to Runtime Upgrade testing.
197 if: success()198 if: success()
198 run: |199 run: |
199 counter=160200 counter=160
200 function check_container_status {201 function check_container_status {
201 docker inspect -f {{.State.Running}} forkless-data202 docker inspect -f {{.State.Running}} forkless-data-${{ matrix.network }}
202 }203 }
203 function do_docker_logs {204 function do_docker_logs {
204 docker logs --details forkless-data 2>&1205 docker logs --details forkless-data-${{ matrix.network }} 2>&1
205 }206 }
206 function is_started {207 function is_started {
207 if [ "$(check_container_status)" == "true" ]; then208 if [ "$(check_container_status)" == "true" ]; then
208 echo "Container: forkless-data RUNNING";209 echo "Container: forkless-data-${{ matrix.network }} RUNNING";
209 echo "Check Docker logs"210 echo "Check Docker logs"
210 DOCKER_LOGS=$(do_docker_logs)211 DOCKER_LOGS=$(do_docker_logs)
211 if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then212 if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then
212 echo "🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"213 echo "🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"
213 return 0214 return 0
214 elif [[ ${DOCKER_LOGS} = *"🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"* ]];then215 elif [[ ${DOCKER_LOGS} = *"🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"* ]];then
215 echo "🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"216 echo "🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"
216 return 1217 return 1
217 else218 else
218 echo "Message not found in logs output, repeating..."219 echo "Message not found in logs output, repeating..."
219 return 1220 return 1
220 fi221 fi
221 else222 else
222 echo "Container forkless-data not RUNNING"223 echo "Container forkless-data-${{ matrix.network }} not RUNNING"
223 echo "Halting all future checks"224 echo "Halting all future checks"
224 exit 1225 exit 1
225 fi226 fi
226 exit 0227 exit 0
227 }228 }
228 while ! is_started; do229 while ! is_started; do
229 echo "Waiting for special message in log files "230 echo "Waiting for special message in log files "
230 sleep 30s231 sleep 30s
231 counter=$(( $counter - 1 ))232 counter=$(( $counter - 1 ))
232 echo "Counter: $counter"233 echo "Counter: $counter"
233 if [ "$counter" -gt "0" ]; then234 if [ "$counter" -gt "0" ]; then
234 continue235 continue
235 else236 else
236 echo "Counter reached zero, yet upgrade is not finished"237 echo "Counter reached zero, yet upgrade is not finished"
237 exit 1238 exit 1
238 fi239 fi
239 done240 done
240 echo "Halting script"241 echo "Halting script"
241 exit 0242 exit 0
242 shell: bash243 shell: bash
243244
244 - name: Collect Docker Logs245 - name: Collect Docker Logs
249250
250 - name: Show Docker logs251 - name: Show Docker logs
251 if: success() || failure()252 if: success() || failure()
252 run: cat './forkless-parachain-upgrade-data-logs.${{ matrix.network }}/forkless-data.log'253 run: cat './forkless-parachain-upgrade-data-logs.${{ matrix.network }}/forkless-data-${{ matrix.network }}.log'
253254
254 - name: Stop running containers255 - name: Stop running containers
255 if: always() # run this step always256 if: always() # run this step always
modifiedtests/package.jsondiffbeforeafterboth
139 "chai-like": "^1.1.1",139 "chai-like": "^1.1.1",
140 "csv-writer": "^1.6.0",140 "csv-writer": "^1.6.0",
141 "find-process": "^1.4.7",141 "find-process": "^1.4.7",
142 "lossless-json": "^2.0.9",
142 "solc": "0.8.17",143 "solc": "0.8.17",
143 "web3": "1.10.0"144 "web3": "1.10.0"
144 },145 },
addedtests/src/migrations/942057-appPromotion/README.mddiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/afterMaintenance.test.tsdiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/collectData.tsdiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/correctStateAfterMaintenance.tsdiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/executeMigration.tsdiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/index.tsdiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/lockedToFreeze.tsdiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/runCheckState.tsdiffbeforeafterboth

no changes

addedtests/src/migrations/942057-appPromotion/stakersParser.jsonnetdiffbeforeafterboth

no changes

modifiedtests/src/util/frankenstein.tsdiffbeforeafterboth
20import {readNetworkConfig} from '@zombienet/utils/dist';20import {readNetworkConfig} from '@zombienet/utils/dist';
21import {resolve} from 'path';21import {resolve} from 'path';
22import {usingPlaygrounds} from '.';22import {usingPlaygrounds} from '.';
23import {migrations} from './frankensteinMigrate';
23import fs from 'fs';24import fs from 'fs';
2425
25const ZOMBIENET_CREDENTIALS = process.env.ZOMBIENET_CREDENTIALS || '../.env';26const ZOMBIENET_CREDENTIALS = process.env.ZOMBIENET_CREDENTIALS || '../.env';
31const NEW_RELAY_WASM = process.env.NEW_RELAY_WASM;32const NEW_RELAY_WASM = process.env.NEW_RELAY_WASM;
32const NEW_PARA_BIN = process.env.NEW_PARA_BIN;33const NEW_PARA_BIN = process.env.NEW_PARA_BIN;
33const NEW_PARA_WASM = process.env.NEW_PARA_WASM;34const NEW_PARA_WASM = process.env.NEW_PARA_WASM;
35const DESTINATION_SPEC_VERSION = process.env.DESTINATION_SPEC_VERSION!;
34const PARACHAIN_BLOCK_TIME = 12_000;36const PARACHAIN_BLOCK_TIME = 12_000;
35const SUPERUSER_KEY = '//Alice';37const SUPERUSER_KEY = '//Alice';
3638
83}85}
8486
85// Enable or disable maintenance mode if present on the chain87// Enable or disable maintenance mode if present on the chain
86async function toggleMaintenanceMode(value: boolean, wsUri: string) {88async function toggleMaintenanceMode(value: boolean, wsUri: string, retries = 5) {
89 try {
87 await usingPlaygrounds(async (helper, privateKey) => {90 await usingPlaygrounds(async (helper, privateKey) => {
88 const superuser = await privateKey(SUPERUSER_KEY);91 const superuser = await privateKey(SUPERUSER_KEY);
89 try {92 try {
94 console.error('Couldn\'t set maintenance mode. The maintenance pallet probably does not exist. Log:', e);97 console.error('Couldn\'t set maintenance mode. The maintenance pallet probably does not exist. Log:', e);
95 }98 }
96 }, wsUri);99 }, wsUri);
97}100 } catch (error) {
101 console.error(error);
102 console.log('Trying for retry toggle maintanence mode');
103 await delay(12_000);
104 await toggleMaintenanceMode(value, wsUri, retries - 1);
105 }
106}
107
108async function skipIfAlreadyUpgraded() {
109 await usingPlaygrounds(async (helper) => {
110 const specVersion = await getSpecVersion(helper.getApi());
111 if(`v${specVersion}` === DESTINATION_SPEC_VERSION) {
112 console.log('\n🛸 Current version equal DESTINATION_SPEC_VERSION 🛸');
113 console.log("\n🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸");
114 }
115 }, REPLICA_FROM);
116}
98117
99const raiseZombienet = async (): Promise<void> => {118const raiseZombienet = async (): Promise<void> => {
119 await skipIfAlreadyUpgraded();
100 const isUpgradeTesting = !!NEW_RELAY_BIN || !!NEW_RELAY_WASM || !!NEW_PARA_BIN || !!NEW_PARA_WASM;120 const isUpgradeTesting = !!NEW_RELAY_BIN || !!NEW_RELAY_WASM || !!NEW_PARA_BIN || !!NEW_PARA_WASM;
101 /*121 /*
102 // If there is nothing to upgrade, what is the point122 // If there is nothing to upgrade, what is the point
245 await waitWithTimer(relayInfo.epochTime);265 await waitWithTimer(relayInfo.epochTime);
246 }266 }
247267
268 const migration = migrations[DESTINATION_SPEC_VERSION];
269 console.log('⭐️⭐️⭐️ DESTINATION_SPEC_VERSION ⭐️⭐️⭐️', DESTINATION_SPEC_VERSION);
248 for(const paraId in network.paras) {270 for(const paraId in network.paras) {
249 console.log(`\n--- Upgrading the runtime of parachain ${paraId} \t---`);271 console.log(`\n--- Upgrading the runtime of parachain ${paraId} \t---`);
250 const para = network.paras[paraId];272 const para = network.paras[paraId];
251273
252 // Enable maintenance mode if present274 // Enable maintenance mode if present
253 await toggleMaintenanceMode(true, para.nodes[0].wsUri);275 await toggleMaintenanceMode(true, para.nodes[0].wsUri);
276 if(migration) {
277 console.log('⭐️⭐️⭐️ Running pre-upgrade scripts... ⭐️⭐️⭐️');
278 await migration.before();
279 }
254280
255 // Read the WASM code and authorize the upgrade with its hash and set it as the new runtime281 // Read the WASM code and authorize the upgrade with its hash and set it as the new runtime
256 const code = fs.readFileSync(NEW_PARA_WASM);282 const code = fs.readFileSync(NEW_PARA_WASM);
324350
325 // Disable maintenance mode if present351 // Disable maintenance mode if present
326 for(const paraId in network.paras) {352 for(const paraId in network.paras) {
353 // TODO only if our parachain
354 if(migration) {
355 console.log('⭐️⭐️⭐️ Running post-upgrade scripts... ⭐️⭐️⭐️');
356 await migration.after();
357 }
327 await toggleMaintenanceMode(false, network.paras[paraId].nodes[0].wsUri);358 await toggleMaintenanceMode(false, network.paras[paraId].nodes[0].wsUri);
328 }359 }
329 } else {360 } else {
addedtests/src/util/frankensteinMigrate.tsdiffbeforeafterboth

no changes

modifiedtests/yarn.lockdiffbeforeafterboth
3406 resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"3406 resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
3407 integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==3407 integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
34083408
3409lossless-json@^2.0.9:
3410 version "2.0.9"
3411 resolved "https://registry.yarnpkg.com/lossless-json/-/lossless-json-2.0.9.tgz#2e9a71a3dcbc6c59dee565e537b9084107b7fe37"
3412 integrity sha512-PUfJ5foxULG1x/dXpSckmt0woBDqyq/WFoI885vEqjGwuP41K2EBYh2IT3zYx9dWqcTLIfXiCE5AjhF1jk9Sbg==
3413
3409loupe@^2.3.1:3414loupe@^2.3.1:
3410 version "2.3.6"3415 version "2.3.6"
3411 resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53"3416 resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53"