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
before · .baedeker/xcm-quartz.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				['quartz', 'karura'],17				['quartz', 'moonriver'],18				['quartz', 'statemine'],19				['quartz', 'shiden'],20			]21		])),22	}},23	nodes: {24		[name]: {25			bin: $.bin,26			wantedKeys: 'relay',27		},28		for name in ['alice', 'bob', 'charlie', 'dave', 'eve', 'ferdie']29	},30};3132local quartz = {33	name: 'quartz',34	bin: 'bin/unique',35	paraId: 1001,36	spec: {Genesis:{37		modify:: m.genericPara($),38	}},39	nodes: {40		[name]: {41			bin: $.bin,42			wantedKeys: 'para',43		},44		for name in ['alice', 'bob']45	},46};4748local karura = {49	name: 'karura',50	bin: 'bin/acala',51	paraId: 1002,52	spec: {Genesis:{53		chain: 'karura-dev',54		modify:: bdk.mixer([55			m.genericPara($),56			function(prev) prev {id+: '-local'},57		]),58	}},59	nodes: {60		[name]: {61			bin: $.bin,62			wantedKeys: 'para',63		},64		for name in ['alice', 'bob']65	},66};6768local moonriver = {69	name: 'moonriver',70	bin: 'bin/moonbeam',71	signatureSchema: 'Ethereum',72	paraId: 1003,73	spec: {Genesis:{74		chain: 'moonriver-local',75		specFilePrefix: 'moonriver-local-',76		modify:: m.genericPara($),77	}},78	nodes: {79		[name]: {80			bin: $.bin,81			wantedKeys: 'para-nimbus',82		},83		for name in ['alith', 'baltathar']84	},85};8687local statemine = {88	name: 'statemine',89	bin: 'bin/cumulus',90	paraId: 1004,91	spec: {Genesis:{92		chain: 'statemine-local',93		modify:: m.genericPara($),94	}},95	nodes: {96		[name]: {97			bin: $.bin,98			wantedKeys: 'para',99		},100		for name in ['alice', 'bob']101	},102};103104local shiden = {105	name: 'shiden',106	bin: 'bin/astar',107	paraId: 1005,108	spec: {Genesis:{109		chain: 'shiden-dev',110		modify:: m.genericPara($),111	}},112	nodes: {113		[name]: {114			bin: $.bin,115			wantedKeys: 'para',116		},117		for name in ['alice', 'bob']118	},119};120121relay + {122	parachains: {123		[para.name]: para,124		for para in [quartz, karura, moonriver, statemine, shiden]125	},126}
after · .baedeker/xcm-quartz.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			// 	['quartz', 'karura'],17			// 	['quartz', 'moonriver'],18			// 	['quartz', 'statemine'],19			// 	['quartz', 'shiden'],20			// ]21		])),22	}},23	nodes: {24		[name]: {25			bin: $.bin,26			wantedKeys: 'relay',27		},28		for name in ['alice', 'bob', 'charlie', 'dave', 'eve', 'ferdie']29	},30};3132local quartz = {33	name: 'quartz',34	bin: 'bin/unique',35	paraId: 1001,36	spec: {Genesis:{37		modify:: m.genericPara($),38	}},39	nodes: {40		[name]: {41			bin: $.bin,42			wantedKeys: 'para',43		},44		for name in ['alice', 'bob']45	},46};4748local karura = {49	name: 'karura',50	bin: 'bin/acala',51	paraId: 1002,52	spec: {Genesis:{53		chain: 'karura-dev',54		modify:: bdk.mixer([55			m.genericPara($),56			function(prev) prev {id+: '-local'},57		]),58	}},59	nodes: {60		[name]: {61			bin: $.bin,62			wantedKeys: 'para',63		},64		for name in ['alice', 'bob']65	},66};6768local moonriver = {69	name: 'moonriver',70	bin: 'bin/moonbeam',71	signatureSchema: 'Ethereum',72	paraId: 1003,73	spec: {Genesis:{74		chain: 'moonriver-local',75		specFilePrefix: 'moonriver-local-',76		modify:: m.genericPara($),77	}},78	nodes: {79		[name]: {80			bin: $.bin,81			wantedKeys: 'para-nimbus',82		},83		for name in ['alith', 'baltathar']84	},85};8687local statemine = {88	name: 'statemine',89	bin: 'bin/cumulus',90	paraId: 1004,91	spec: {Genesis:{92		chain: 'statemine-local',93		modify:: m.genericPara($),94	}},95	nodes: {96		[name]: {97			bin: $.bin,98			wantedKeys: 'para',99		},100		for name in ['alice', 'bob']101	},102};103104local shiden = {105	name: 'shiden',106	bin: 'bin/astar',107	paraId: 1005,108	spec: {Genesis:{109		chain: 'shiden-dev',110		modify:: m.genericPara($),111	}},112	nodes: {113		[name]: {114			bin: $.bin,115			wantedKeys: 'para',116		},117		for name in ['alice', 'bob']118	},119};120121relay + {122	parachains: {123		[para.name]: para,124		for para in [quartz, karura, moonriver, statemine, shiden]125	},126}
modified.baedeker/xcm-unique.jsonnetdiffbeforeafterboth
--- a/.baedeker/xcm-unique.jsonnet
+++ b/.baedeker/xcm-unique.jsonnet
@@ -13,11 +13,11 @@
 		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 [
-				['unique', 'acala'],
-				['unique', 'moonbeam'],
-				['unique', 'statemint'],
-				['unique', 'astar'],
-				['unique', 'polkadex'],
+				// ['unique', 'acala'],
+				// ['unique', 'moonbeam'],
+				// ['unique', 'statemint'],
+				// ['unique', 'astar'],
+				// ['unique', 'polkadex'],
 			]
 		])),
 	}},
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);