Update & revamp e2e tests (#2614)

* update & revamp e2e tests

* add seeds as comments

* ".git/.scripts/commands/fmt/fmt.sh"

---------

Co-authored-by: command-bot <>
This commit is contained in:
Ignacio Palacios
2023-05-24 20:07:22 +02:00
committed by GitHub
parent 7c884813c3
commit 5c91c70b78
21 changed files with 392 additions and 532 deletions
@@ -0,0 +1,100 @@
---
settings:
chains:
relay_chain: &relay_chain
wsPort: 9700
collectives_parachain: &collectives_parachain
wsPort: 9710
paraId: &cp_id 1001
variables:
xcm_version: &xcm_version 3
weight_threshold: &weight_threshold { refTime: [10, 10], proofSize: [10, 10] }
chains:
accounts:
alice_signer: &alice_signer //Alice
decodedCalls:
cp_force_xcm_version:
chain: *collectives_parachain
pallet: polkadotXcm
call: forceXcmVersion
args: [
{ # location
parents: 1,
interior: Here
},
*xcm_version
]
tests:
- name: Initialize Chains
its:
- name: XCM supported versions between chains
actions:
- extrinsics: # Relay Chain sets supported version for Collectives Parachain
- chain: *relay_chain
sudo: true
signer: *alice_signer
pallet: xcmPallet
call: forceXcmVersion
args: [
{ # location
parents: 0,
interior: {
X1: {
Parachain: *cp_id
}
}
},
*xcm_version
]
events:
- name: sudo.Sudid
result: { sudoResult: Ok }
- name: xcmPallet.SupportedVersionChanged
result: [{ parents: 0, interior: { X1: { Parachain: *cp_id }}}, *xcm_version ]
- extrinsics: # Collectives Parachain sets supported version for Relay Chain through it
- chain: *relay_chain
signer: *alice_signer
sudo: true
pallet: xcmPallet
call: send
args: [
{ v3: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination
{
v3: [ # message
{
UnpaidExecution: {
weightLimit: {
limited: {
refTime: 2200000000, # 2_200_000_000
proofSize: 200000, # 200_000
},
}
}
},
{
Transact: {
originKind: Superuser,
requireWeightAtMost: {
refTime: 200000000, # 200_000_000
proofSize: 0,
},
call: $cp_force_xcm_version
}
}
]
}
]
events:
- name: sudo.Sudid
result: { sudoResult: Ok }
- name: xcmPallet.Sent
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '2,200,000,000', proofSize: 0 }}
}
- name: polkadotXcm.SupportedVersionChanged
chain: *collectives_parachain
result: [{ parents: 1, interior: Here }, *xcm_version ]
@@ -0,0 +1,171 @@
---
settings:
chains:
relay_chain: &relay_chain
wsPort: 9700
collectives_parachain: &collectives_parachain
wsPort: 9710
paraId: &cp_id 1001
variables:
weight_threshold: &weight_threshold { refTime: [10, 10], proofSize: [10, 10] }
accounts:
alice_signer: &acc_alice_signer //Alice
alice_account32: &acc_alice_acc32 '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d'
alice_ss58: &acc_alice_ss58 '15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5'
checking_account: &checking_account '13UVJyLnbVp9x5XDyJv8g8r3UddNwBrdaH7AADCmw9XQWvYW'
tests:
- name: Teleport assets from Relay Chain to Collectives Parachain successful.
before:
- name: Get the Alice balances on Relay & Collectives Chains.
actions:
- queries:
balance_rc_alice_1:
chain: *relay_chain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
balance_cp_alice_1:
chain: *collectives_parachain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
its:
- name: Teleport assets from Relay Chain to Collectives Parachain
actions:
- extrinsics:
- chain: *relay_chain
signer: *acc_alice_signer
pallet: xcmPallet
call: teleportAssets
args: [
{ v3: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination
{ v3: { parents: 0, interior: { x1: { accountId32: { id: *acc_alice_acc32 }}}}}, # beneficiary
{
v3: [
# {
# # TODO use a separate Assets to pay a fee, to receive an exact amount of assets on beneficiary account.
# # a call with two assets fails with an error right now.
# id: { concrete: { 0, interior: { here: true }}},
# fun: { fungible: 1000000000000 } # 1_000_000_000_000
# },
{
id: { concrete: { 0, interior: { here: true }}},
fun: { fungible: 20000000000000 } # 20_000_000_000_000
}
]
}, # assets
0, # feeAssetItem
]
events:
- name: xcmPallet.Attempted
threshold: *weight_threshold
result: [{ Complete: { refTime: '3,000,000,000', proofSize: 0 }}]
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '4,000,000,000', proofSize: 0 }}
}
- queries:
balance_rc_alice_2:
chain: *relay_chain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
balance_cp_alice_2:
chain: *collectives_parachain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
- name: Alice deposit check, balance decreased on Relay Chain, increased on Collectives.
actions:
- asserts:
balanceDecreased:
args: [
{
balances: {
before: $balance_rc_alice_1,
after: $balance_rc_alice_2,
}
}
]
balanceIncreased:
args: [
{
balances: {
before: $balance_cp_alice_1,
after: $balance_cp_alice_2,
}
}
]
- name: Teleport assets from Collectives Parachain to Relay Chain successful
actions:
- extrinsics:
- chain: *collectives_parachain
signer: *acc_alice_signer
pallet: polkadotXcm
call: teleportAssets
args: [
{ v3: { parents: 1, interior: { here: true }}}, # destination
{ v3: { parents: 0, interior: { x1: { accountId32: { id: *acc_alice_acc32 }}}}}, # beneficiary
{
v3: [
{
id: { concrete: { parents: 1, interior: { here: true }}},
fun: { fungible: 10000000000000 } # 10_000_000_000_000
}
]
}, # assets
0, # feeAssetItem
]
events:
- name: balances.Withdraw
result: { who: *acc_alice_ss58, amount: 10000000000000 }
- name: polkadotXcm.Attempted
threshold: *weight_threshold
result: [{ Complete: { refTime: '3,000,000,000', proofSize: 0 }}]
- name: balances.Withdraw
chain: *relay_chain
result: { who: *checking_account, amount: 10000000000000 } # amount received and withdrawn from registry account
- name: ump.ExecutedUpward
chain: *relay_chain
threshold: *weight_threshold
result: [{ Complete: { refTime: '4,000,000,000', proofSize: 0 }}]
- queries:
balance_rc_alice_3:
chain: *relay_chain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
balance_cp_alice_3:
chain: *collectives_parachain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
- name: Alice deposit check, balance decreased on Collectives, increased on Relay Chain.
actions:
- asserts:
balanceDecreased:
args: [
{
balances: {
before: $balance_cp_alice_2,
after: $balance_cp_alice_3,
}
}
]
balanceIncreased:
args: [
{
balances: {
before: $balance_rc_alice_2,
after: $balance_rc_alice_3,
}
}
]
# TODO (P2) assert Alice balance before and after teleport (see example in kick_member test)
# TODO (P1) test: teleport of non relay chain assets fails
@@ -0,0 +1,53 @@
---
settings:
chains:
relay_chain: &relay_chain
wsPort: 9700
collectives_parachain: &collectives_parachain
wsPort: 9710
paraId: &cp_id 1001
variables:
weight_threshold: &weight_threshold { refTime: [10, 10], proofSize: [10, 10] }
chains:
accounts:
alice_signer: &alice_signer //Alice
alice_account32: &alice_acc32 '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d'
tests:
- name: Reserve assets from Relay Chain to Collectives Parachain fails
its:
- name: Reserve assets from Relay Chain to Collectives Parachain
actions:
- extrinsics:
- chain: *relay_chain
signer: *alice_signer
pallet: xcmPallet
call: reserveTransferAssets
args: [
{ v3: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination
{ v3: { parents: 0, interior: { x1: { accountId32: { id: *alice_acc32 }}}}}, # beneficiary
{
v3: [
{
id: { concrete: { 0, interior: { here: true }}},
fun: { fungible: 20000000000000 } # 20_000_000_000_000
}
]
}, # assets
0, # feeAssetItem
]
events:
- name: xcmPallet.Attempted
threshold: *weight_threshold
result: [{ Complete: { refTime: '2,000,000,000', proofSize: 0 }}]
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: {
Incomplete: [
{ refTime: '1,000,000,000', proofSize: 0 },
UntrustedReserveLocation
]
}
}
@@ -0,0 +1,29 @@
---
settings:
chains:
relay_chain:
wsPort: 9700
collectives_parachain: &collectives_parachain
wsPort: 9710
variables:
accounts:
alice_signer: &alice_signer //Alice
tests:
- name: Alice fails to join an the Alliance, since it is not initialized yet.
its:
- name: Alice joins alliance
actions:
- extrinsics: # Relay Chain sets supported version for Asset Parachain
- chain: *collectives_parachain
signer: *alice_signer
pallet: alliance
call: joinAlliance
args: []
events:
- name: system.ExtrinsicFailed
result: {
dispatchError: { Module: { index: 50, error: '0x00000000' }}
}
# TODO assert with Alliance Error variant - alliance.AllianceNotYetInitialized
# issue - https://github.com/paritytech/parachains-integration-tests/issues/59
@@ -0,0 +1,260 @@
---
settings:
chains:
relay_chain: &relay_chain
wsPort: 9700
collectives_parachain: &collectives_parachain
wsPort: 9710
paraId: &coll_para_id 1001
variables:
weight_threshold: &weight_threshold { refTime: [10, 10], proofSize: [10, 10] }
accounts:
alice_signer: &acc_alice_signer //Alice
liam_account32: &acc_liam_acc32 "0x3614671a5de540d891eb8c4939c8153a4aa790602b347c18177b86d0fc546221" # //Liam
olivia_account32: &acc_olivia_acc32 "0x24ee8a659c6716fe9f7cb4e9e028602aa12867654ca02737da9171b7ff697d5c" # //Olivia
noah_account32: &acc_noah_acc32 "0x9c6ad3bc3aa2f1b2e837898e6da9980445f7ef8b3eee0b8c8e305f8cfae68517" # //Noah
emma_account32: &acc_emma_acc32 "0x8ac272b333ba1127c8db57fa777ec820b24598a236efa648caf0d26d86f64572" # //Emma
james_account32: &acc_james_acc32 "0x9a52805151a0b5effc084af9264011139872a21a3950cb9ae0b2955c4bf92c18" # //James
ava_account32: &acc_ava_acc32 "0x348ef0b8776adbc09c862ddc29b1d193b9e24738e54eea3b0609c83856dc101c" # //Ava
mia_account32: &acc_mia_acc32 "0xaebf15374cf7e758d10232514c569a7abf81cc1b8f1e81a73dbc608a0e335264" # //Mia
decodedCalls:
init_alliance_members:
chain: *collectives_parachain
pallet: alliance
call: initMembers
args: [
[
*acc_liam_acc32,
*acc_olivia_acc32,
*acc_noah_acc32,
*acc_emma_acc32,
*acc_james_acc32,
*acc_ava_acc32
],
[
*acc_mia_acc32
]
]
init_alliance_voting_members:
chain: *collectives_parachain
pallet: alliance
call: initMembers
args: [
[
*acc_liam_acc32,
*acc_olivia_acc32,
*acc_noah_acc32,
*acc_emma_acc32,
*acc_james_acc32,
*acc_ava_acc32,
*acc_mia_acc32
],
[]
]
disband:
chain: *collectives_parachain
pallet: alliance
call: disband
args: [
{
fellowMembers: 6,
allyMembers: 1
}
]
tests:
- name: Alliance initiated with the root call, second init call fails. Alliance disband and set again.
its:
- name: Alliance initiated, founders and fellows are set.
actions:
- extrinsics:
- chain: *relay_chain
signer: *acc_alice_signer
sudo: true
pallet: xcmPallet
call: send
args: [
{ v3: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination
{
v3: [ # message
{
UnpaidExecution: {
weightLimit: {
limited: {
refTime: 3000000000, # 3_000_000_000
proofSize: 2000000, # 2_000_000
},
}
}
},
{
Transact: {
originKind: Superuser,
requireWeightAtMost: {
refTime: 1000000000, # 1_000_000_000
proofSize: 1000000, # 1_000_000
},
call: $init_alliance_members
}
}
]
}
]
events:
- name: sudo.Sudid
result: { sudoResult: Ok }
- name: xcmPallet.Sent
- name: alliance.MembersInitialized
chain: *collectives_parachain
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '3,000,000,000', proofSize: '1,000,000' }}
}
- name: Alliance init call fails.
actions:
- extrinsics:
- chain: *relay_chain
signer: *acc_alice_signer
sudo: true
pallet: xcmPallet
call: send
args: [
{ v3: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination
{
v3: [ # message
{
UnpaidExecution: {
weightLimit: {
limited: {
refTime: 3000000000, # 3_000_000_000
proofSize: 2000000, # 2_000_000
},
}
}
},
{
Transact: {
originKind: Superuser,
requireWeightAtMost: {
refTime: 1000000000, # 1_000_000_000
proofSize: 1000000, # 1_000_000
},
call: $init_alliance_voting_members
}
}
]
}
]
events:
# TODO can not currently assert variant AllianceAlreadyInitialized, XCM Transact fails silently
# issue - https://github.com/paritytech/polkadot/issues/4623
# Next test with a disband call will fail, if this call does not fail,
# since a witness data from a disband call will be invalid.
- name: sudo.Sudid
result: { sudoResult: Ok }
- name: xcmPallet.Sent
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '3,000,000,000', proofSize: '1,000,000' }}
}
- name: Alliance disbanded and initialized again.
actions:
- extrinsics:
- chain: *relay_chain
signer: *acc_alice_signer
sudo: true
pallet: xcmPallet
call: send
args: [
{ v3: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination
{
v3: [ # message
{
UnpaidExecution: {
weightLimit: {
limited: {
refTime: 5000000000, # 3_000_000_000
proofSize: 1000000, # 1_000_000
},
}
}
},
{
Transact: {
originKind: Superuser,
requireWeightAtMost: {
refTime: 3000000000, # 3_000_000_000
proofSize: 200000, # 200_000
},
call: $disband
}
}
]
}
]
events:
- name: sudo.Sudid
result: { sudoResult: Ok }
- name: xcmPallet.Sent
- name: alliance.AllianceDisbanded
chain: *collectives_parachain
result: { fellowMembers: 6, allyMembers: 1, unreserved: 0 }
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '3,321,495,872', proofSize: '181,779' }}
}
- name: Alliance initiated, founders and fellows are set.
actions:
- extrinsics:
- chain: *relay_chain
signer: *acc_alice_signer
sudo: true
pallet: xcmPallet
call: send
args: [
{ v3: { parents: 0, interior: { x1: { parachain: *coll_para_id }}}}, # destination
{
v3: [ # message
{
UnpaidExecution: {
weightLimit: {
limited: {
refTime: 3000000000, # 3_000_000_000
proofSize: 2000000, # 2_000_000
},
}
}
},
{
Transact: {
originKind: Superuser,
requireWeightAtMost: {
refTime: 1000000000, # 1_000_000_000
proofSize: 1000000, # 1_000_000
},
call: $init_alliance_members
}
}
]
}
]
events:
- name: sudo.Sudid
result: { sudoResult: Ok }
- name: xcmPallet.Sent
- name: alliance.MembersInitialized
chain: *collectives_parachain
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '3,000,000,000', proofSize: '1,000,000' }}
}
@@ -0,0 +1,30 @@
---
settings:
chains:
relay_chain:
wsPort: 9700
collectives_parachain: &collectives_parachain
wsPort: 9710
paraId: 1001
variables:
accounts:
liam_signer: &acc_liam_signer //Liam
tests:
- name: Liam fails to join an the Alliance, Liam is already a member.
its:
- name: Alice joins alliance
actions:
- extrinsics: # Relay Chain sets supported version for Asset Parachain
- chain: *collectives_parachain
signer: *acc_liam_signer
pallet: alliance
call: joinAlliance
args: []
events:
- name: system.ExtrinsicFailed
result: {
dispatchError: { Module: { index: 50, error: '0x02000000' }}
}
# TODO assert with Alliance Error variant - alliance.AllianceNotYetInitialized
# issue - https://github.com/paritytech/parachains-integration-tests/issues/59
@@ -0,0 +1,170 @@
---
settings:
chains:
relay_chain: &relay_chain
wsPort: 9700
collectives_parachain: &collectives_parachain
wsPort: 9710
paraId: &cp_id 1001
variables:
weight_threshold: &weight_threshold { refTime: [10, 10], proofSize: [10, 10] }
init_teleport_amount: &init_teleport_amount 20000000000000 # 20_000_000_000_000
accounts:
alice_signer: &acc_alice_signer //Alice
treasury_account32: &acc_treasury_acc32 '0x6d6f646c70792f74727372790000000000000000000000000000000000000000'
alice_account32: &acc_alice_acc32 '0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d'
alice_ss58: &acc_alice_ss58 '15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5'
decodedCalls:
alliance_kick_member:
chain: *collectives_parachain
pallet: alliance
call: kickMember
args: [
{Id: *acc_alice_acc32}
]
tests:
- name: Member kicked out, deposited assets slashed and teleported to Relay Chain treasury.
before:
- name: DEPENDENCY | Do a 'limitedTeleportAssets' from the Relay Chain to the Collectives Parachain
actions:
- extrinsics:
- chain: *relay_chain
signer: *acc_alice_signer
pallet: xcmPallet
call: limitedTeleportAssets
args: [
{ v3: { 0, interior: { x1: { parachain: *cp_id }}}}, # destination
{ v3: { parents: 0, interior: { x1: { accountId32: { id: *acc_alice_acc32 }}}}}, # beneficiary
{ v3: [ { id: { concrete: { 0, interior: { here: true }}}, fun: { fungible: *init_teleport_amount }} ] }, # assets
0, # feeAssetItem
{ unlimited: true } # weightLimit
]
events:
- name: xcmPallet.Attempted
threshold: *weight_threshold
result: [{ Complete: { refTime: '3,000,000,000', proofSize: 0 }}]
- name: balances.Deposit
chain: *collectives_parachain
result: { who: *acc_alice_ss58 }
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '4,000,000,000', proofSize: 0 }}
}
- name: Get the balances of the Relay Chain's treasury & Collectives parachain's future alliance member
actions:
- queries:
balance_rc_treasury_before:
chain: *relay_chain
pallet: system
call: account
args: [ *acc_treasury_acc32 ]
balance_cp_alice_before:
chain: *collectives_parachain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
its:
- name: Alice joins alliance
actions:
- extrinsics:
- chain: *collectives_parachain
signer: *acc_alice_signer
pallet: alliance
call: joinAlliance
args: []
events:
- name: balances.Reserved
chain: *collectives_parachain
result: { who: *acc_alice_ss58, amount: '10,000,000,000,000' }
- name: alliance.NewAllyJoined
result: { ally: *acc_alice_ss58 }
- queries:
balance_cp_alice_after:
chain: *collectives_parachain
pallet: system
call: account
args: [ *acc_alice_acc32 ]
- name: Alice deposit check, balance decreased
actions:
- asserts:
balanceDecreased:
args: [
{
balances: {
before: $balance_cp_alice_before,
after: $balance_cp_alice_after,
}
# TODO (P3) set `amount` and `fee` for more strict assert
}
]
- name: Kick Alice from alliance
actions:
- extrinsics: # Asset Parachain sets supported version for Relay Chain through it
- chain: *relay_chain
signer: *acc_alice_signer
sudo: true
pallet: xcmPallet
call: send
args: [
{ v3: { parents: 0, interior: { x1: { parachain: *cp_id }}}}, # destination
{
v3: [ #message
{
UnpaidExecution: {
weightLimit: {
limited: {
refTime: 4000000000, # 4_000_000_000
proofSize: 2000000, # 2_000_000
},
}
}
},
{
Transact: {
originKind: Superuser,
requireWeightAtMost: {
refTime: 2000000000, # 2_000_000_000
proofSize: 1000000, # 1_000_000
},
call: $alliance_kick_member
}
}
]
}
]
events:
- name: sudo.Sudid
result: { sudoResult: Ok }
- name: xcmPallet.Sent
- name: alliance.MemberKicked
chain: *collectives_parachain
result: { member: *acc_alice_ss58 }
- name: dmpQueue.ExecutedDownward
chain: *collectives_parachain
threshold: *weight_threshold
result: {
outcome: { Complete: { refTime: '4,000,000,000', proofSize: '1,000,000' }}
}
- queries:
balance_rc_treasury_after:
chain: *relay_chain
pallet: system
call: account
args: [ *acc_treasury_acc32 ]
- name: Slashed balance appears on the relay chain treasury account
actions:
- asserts:
balanceIncreased:
args: [
{
balances: {
before: $balance_rc_treasury_before,
after: $balance_rc_treasury_after,
}
# TODO (P3) set `amount` and `fee` for more strict assert
}
]
@@ -0,0 +1,42 @@
[relaychain]
default_command = "./bin/polkadot"
default_args = [ "-lparachain=trace", "-lxcm=trace" ]
chain = "polkadot-local"
[[relaychain.nodes]]
name = "alice"
ws_port = 9700
validator = true
args = ["--state-cache-size=0"]
[[relaychain.nodes]]
name = "bob"
ws_port = 9701
validator = true
[[relaychain.nodes]]
name = "charlie"
ws_port = 9702
validator = true
[[relaychain.nodes]]
name = "dave"
ws_port = 9703
validator = true
[[parachains]]
id = 1001
chain = "collectives-polkadot-local"
cumulus_based = true
[[parachains.collators]]
name = "collator1"
ws_port = 9710
command = "./bin/polkadot-parachain"
args = [ "-lxcm=trace", "--state-cache-size=0" ]
[[parachains.collators]]
name = "collator2"
ws_port = 9711
command = "./bin/polkadot-parachain"
args = ["-lxcm=trace"]