git.delta.rocks / unique-network / refs/commits / d1366f7a9392

difftreelog

test(xcm) manually initialize HRMP

Yaroslav Bolyukin2023-10-19parent: #b423b29.patch.diff
in: master

5 files changed

modified.baedeker/xcm-opal.jsonnetdiffbeforeafterboth
--- a/.baedeker/xcm-opal.jsonnet
+++ b/.baedeker/xcm-opal.jsonnet
@@ -11,8 +11,8 @@
 	spec: {Genesis:{
 		chain: relay_spec,
 		modify:: m.genericRelay($, hrmp = [
-			[$.parachains.opal.paraId, $.parachains.westmint.paraId, 8, 512],
-			[$.parachains.westmint.paraId, $.parachains.opal.paraId, 8, 512],
+			// [$.parachains.opal.paraId, $.parachains.westmint.paraId, 8, 512],
+			// [$.parachains.westmint.paraId, $.parachains.opal.paraId, 8, 512],
 		]),
 	}},
 	nodes: {
modified.baedeker/xcm-quartz.jsonnetdiffbeforeafterboth
--- a/.baedeker/xcm-quartz.jsonnet
+++ b/.baedeker/xcm-quartz.jsonnet
@@ -11,13 +11,13 @@
 	spec: {Genesis:{
 		chain: relay_spec,
 		modify:: m.genericRelay($, hrmp = std.join([], [
-			[[$.parachains[a].paraId, $.parachains[b].paraId, 8, 512], [$.parachains[b].paraId, $.parachains[a].paraId, 8, 512]],
-			for [a, b] in [
-				['quartz', 'karura'],
-				['quartz', 'moonriver'],
-				['quartz', 'statemine'],
-				['quartz', 'shiden'],
-			]
+			// [[$.parachains[a].paraId, $.parachains[b].paraId, 8, 512], [$.parachains[b].paraId, $.parachains[a].paraId, 8, 512]],
+			// for [a, b] in [
+			// 	['quartz', 'karura'],
+			// 	['quartz', 'moonriver'],
+			// 	['quartz', 'statemine'],
+			// 	['quartz', 'shiden'],
+			// ]
 		])),
 	}},
 	nodes: {
modified.baedeker/xcm-unique.jsonnetdiffbeforeafterboth
before · .baedeker/xcm-unique.jsonnet
1local2m = import 'baedeker-library/mixin/spec.libsonnet',3;45function(relay_spec)67local relay = {8	name: 'relay',9	bin: 'bin/polkadot',10	validatorIdAssignment: 'staking',11	spec: {Genesis:{12		chain: relay_spec,13		modify:: m.genericRelay($, hrmp = std.join([], [14			[[$.parachains[a].paraId, $.parachains[b].paraId, 8, 512], [$.parachains[b].paraId, $.parachains[a].paraId, 8, 512]],15			for [a, b] in [16				['unique', 'acala'],17				['unique', 'moonbeam'],18				['unique', 'statemint'],19				['unique', 'astar'],20				['unique', 'polkadex'],21			]22		])),23	}},24	nodes: {25		[name]: {26			bin: $.bin,27			wantedKeys: 'relay',28		},29		for name in ['alice', 'bob', 'charlie', 'dave', 'eve', 'ferdie', 'gregory']30	},31};3233local unique = {34	name: 'unique',35	bin: 'bin/unique',36	paraId: 1001,37	spec: {Genesis:{38		modify:: m.genericPara($),39	}},40	nodes: {41		[name]: {42			bin: $.bin,43			wantedKeys: 'para',44		},45		for name in ['alice', 'bob']46	},47};4849local acala = {50	name: 'acala',51	bin: 'bin/acala',52	paraId: 1002,53	spec: {Genesis:{54		chain: 'acala-dev',55		modify:: bdk.mixer([56			m.genericPara($),57			function(prev) prev {id+: '-local'},58		]),59	}},60	nodes: {61		[name]: {62			bin: $.bin,63			wantedKeys: 'para',64		},65		for name in ['alice', 'bob']66	},67};6869local moonbeam = {70	name: 'moonbeam',71	bin: 'bin/moonbeam',72	signatureSchema: 'Ethereum',73	paraId: 1003,74	spec: {Genesis:{75		chain: 'moonbeam-local',76		specFilePrefix: 'moonbeam-local-',77		modify:: m.genericPara($),78	}},79	nodes: {80		[name]: {81			bin: $.bin,82			wantedKeys: 'para-nimbus',83		},84		for name in ['alith', 'baltathar']85	},86};8788local statemint = {89	name: 'statemint',90	bin: 'bin/cumulus',91	paraId: 1004,92	spec: {Genesis:{93		chain: 'statemint-local',94		modify:: m.genericPara($),95	}},96	nodes: {97		[name]: {98			bin: $.bin,99			wantedKeys: 'para-ed',100		},101		for name in ['alice', 'bob']102	},103};104105local astar = {106	name: 'astar',107	bin: 'bin/astar',108	paraId: 1005,109	spec: {Genesis:{110		chain: 'astar-dev',111		modify:: m.genericPara($),112	}},113	nodes: {114		[name]: {115			bin: $.bin,116			wantedKeys: 'para',117		},118		for name in ['alice', 'bob']119	},120};121122local polkadex = {123	name: 'polkadex',124	bin: 'bin/polkadex',125	paraId: 1006,126	spec: {Genesis:{127		chain: 'mainnet',128		modify:: m.genericPara($),129	}},130	nodes: {131		[name]: {132			bin: $.bin,133			wantedKeys: 'para',134		},135		for name in ['alice', 'bob']136	},137};138139relay + {140	parachains: {141		[para.name]: para,142		for para in [unique, acala, moonbeam, statemint, astar, polkadex]143	},144}
after · .baedeker/xcm-unique.jsonnet
1local2m = import 'baedeker-library/mixin/spec.libsonnet',3;45function(relay_spec)67local relay = {8	name: 'relay',9	bin: 'bin/polkadot',10	validatorIdAssignment: 'staking',11	spec: {Genesis:{12		chain: relay_spec,13		modify:: m.genericRelay($, hrmp = std.join([], [14			[[$.parachains[a].paraId, $.parachains[b].paraId, 8, 512], [$.parachains[b].paraId, $.parachains[a].paraId, 8, 512]],15			for [a, b] in [16				// ['unique', 'acala'],17				// ['unique', 'moonbeam'],18				// ['unique', 'statemint'],19				// ['unique', 'astar'],20				// ['unique', 'polkadex'],21			]22		])),23	}},24	nodes: {25		[name]: {26			bin: $.bin,27			wantedKeys: 'relay',28		},29		for name in ['alice', 'bob', 'charlie', 'dave', 'eve', 'ferdie', 'gregory']30	},31};3233local unique = {34	name: 'unique',35	bin: 'bin/unique',36	paraId: 1001,37	spec: {Genesis:{38		modify:: m.genericPara($),39	}},40	nodes: {41		[name]: {42			bin: $.bin,43			wantedKeys: 'para',44		},45		for name in ['alice', 'bob']46	},47};4849local acala = {50	name: 'acala',51	bin: 'bin/acala',52	paraId: 1002,53	spec: {Genesis:{54		chain: 'acala-dev',55		modify:: bdk.mixer([56			m.genericPara($),57			function(prev) prev {id+: '-local'},58		]),59	}},60	nodes: {61		[name]: {62			bin: $.bin,63			wantedKeys: 'para',64		},65		for name in ['alice', 'bob']66	},67};6869local moonbeam = {70	name: 'moonbeam',71	bin: 'bin/moonbeam',72	signatureSchema: 'Ethereum',73	paraId: 1003,74	spec: {Genesis:{75		chain: 'moonbeam-local',76		specFilePrefix: 'moonbeam-local-',77		modify:: m.genericPara($),78	}},79	nodes: {80		[name]: {81			bin: $.bin,82			wantedKeys: 'para-nimbus',83		},84		for name in ['alith', 'baltathar']85	},86};8788local statemint = {89	name: 'statemint',90	bin: 'bin/cumulus',91	paraId: 1004,92	spec: {Genesis:{93		chain: 'statemint-local',94		modify:: m.genericPara($),95	}},96	nodes: {97		[name]: {98			bin: $.bin,99			wantedKeys: 'para-ed',100		},101		for name in ['alice', 'bob']102	},103};104105local astar = {106	name: 'astar',107	bin: 'bin/astar',108	paraId: 1005,109	spec: {Genesis:{110		chain: 'astar-dev',111		modify:: m.genericPara($),112	}},113	nodes: {114		[name]: {115			bin: $.bin,116			wantedKeys: 'para',117		},118		for name in ['alice', 'bob']119	},120};121122local polkadex = {123	name: 'polkadex',124	bin: 'bin/polkadex',125	paraId: 1006,126	spec: {Genesis:{127		chain: 'mainnet',128		modify:: m.genericPara($),129	}},130	nodes: {131		[name]: {132			bin: $.bin,133			wantedKeys: 'para',134		},135		for name in ['alice', 'bob']136	},137};138139relay + {140	parachains: {141		[para.name]: para,142		for para in [unique, acala, moonbeam, statemint, astar, polkadex]143	},144}
modified.github/workflows/xcm.ymldiffbeforeafterboth
--- a/.github/workflows/xcm.yml
+++ b/.github/workflows/xcm.yml
@@ -326,11 +326,20 @@
           path: ${{ steps.bdk.outputs.composeProject }}
           retention-days: 2
 
-      - name: Run XCM tests
+      - name: Yarn install
         working-directory: tests
         run: |
           yarn install
           yarn add mochawesome
+
+      - name: Call HRMP initialization
+        working-directory: tests
+        run: |
+          yarn ts-node --esm src/util/createHrmp.ts ${{matrix.network}}
+
+      - name: Run XCM tests
+        working-directory: tests
+        run: |
           # Wanted by both wait_for_first_block
           export RPC_URL="${RELAY_OPAL_HTTP_URL:-${RELAY_QUARTZ_HTTP_URL:-${RELAY_UNIQUE_HTTP_URL:-}}}"
           ./scripts/wait_for_first_block.sh
addedtests/src/util/createHrmp.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/util/createHrmp.ts
@@ -0,0 +1,30 @@
+import {usingPlaygrounds} from '.';
+import config from '../config';
+
+const profile = process.argv[2];
+if(!profile) throw new Error('missing profile/relay argument');
+
+await usingPlaygrounds(async (helper, privateKey) => {
+  const bidirOpen = async (a: number, b: number) => {
+    console.log(`Opening ${a} <=> ${b}`);
+    await helper.getSudo().executeExtrinsic(alice, 'api.tx.hrmp.forceOpenHrmpChannel', [a, b, 8, 512]);
+    await helper.getSudo().executeExtrinsic(alice, 'api.tx.hrmp.forceOpenHrmpChannel', [b, a, 8, 512]);
+  };
+  const alice = await privateKey('//Alice');
+  switch (profile) {
+    case 'opal':
+      await bidirOpen(1001, 1002);
+      break;
+    case 'quartz':
+    case 'unique':
+      await bidirOpen(1001, 1002);
+      await bidirOpen(1001, 1003);
+      await bidirOpen(1001, 1004);
+      await bidirOpen(1001, 1005);
+      break;
+    default:
+      throw new Error(`unknown hrmp config profile: ${profile}`);
+  }
+}, config.relayUrl);
+// We miss disconnect/unref somewhere.
+process.exit(0);