difftreelog
test(xcm) manually initialize HRMP
in: master
5 files changed
.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: {
.baedeker/xcm-quartz.jsonnetdiffbeforeafterboth1local2m = 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}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}.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'],
]
])),
}},
.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
tests/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);