From 64989b2002a0abbe85ec85864009e237e98e9795 Mon Sep 17 00:00:00 2001 From: gilescope Date: Tue, 23 May 2023 21:58:54 +0100 Subject: [PATCH 1/4] fix typo --- .../integration-tests/emulated/common/src/lib.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/parachains/integration-tests/emulated/common/src/lib.rs b/parachains/integration-tests/emulated/common/src/lib.rs index e2587e9bf02..49e919b5de9 100644 --- a/parachains/integration-tests/emulated/common/src/lib.rs +++ b/parachains/integration-tests/emulated/common/src/lib.rs @@ -40,9 +40,9 @@ decl_test_relay_chains! { runtime = { Runtime: kusama_runtime::Runtime, RuntimeOrigin: kusama_runtime::RuntimeOrigin, - RuntimeCall: polkadot_runtime::RuntimeCall, + RuntimeCall: kusama_runtime::RuntimeCall, RuntimeEvent: kusama_runtime::RuntimeEvent, - MessageQueue: polkadot_runtime::MessageQueue, + MessageQueue: kusama_runtime::MessageQueue, XcmConfig: kusama_runtime::xcm_config::XcmConfig, SovereignAccountOf: kusama_runtime::xcm_config::SovereignAccountOf, System: kusama_runtime::System, @@ -83,7 +83,7 @@ decl_test_parachains! { runtime = { Runtime: penpal_runtime::Runtime, RuntimeOrigin: penpal_runtime::RuntimeOrigin, - RuntimeCall: penpal_runtime::RuntimeEvent, + RuntimeCall: penpal_runtime::RuntimeCall, RuntimeEvent: penpal_runtime::RuntimeEvent, XcmpMessageHandler: penpal_runtime::XcmpQueue, DmpMessageHandler: penpal_runtime::DmpQueue, @@ -105,7 +105,7 @@ decl_test_parachains! { runtime = { Runtime: statemine_runtime::Runtime, RuntimeOrigin: statemine_runtime::RuntimeOrigin, - RuntimeCall: statemine_runtime::RuntimeEvent, + RuntimeCall: statemine_runtime::RuntimeCall, RuntimeEvent: statemine_runtime::RuntimeEvent, XcmpMessageHandler: statemine_runtime::XcmpQueue, DmpMessageHandler: statemine_runtime::DmpQueue, @@ -127,7 +127,7 @@ decl_test_parachains! { runtime = { Runtime: penpal_runtime::Runtime, RuntimeOrigin: penpal_runtime::RuntimeOrigin, - RuntimeCall: penpal_runtime::RuntimeEvent, + RuntimeCall: penpal_runtime::RuntimeCall, RuntimeEvent: penpal_runtime::RuntimeEvent, XcmpMessageHandler: penpal_runtime::XcmpQueue, DmpMessageHandler: penpal_runtime::DmpQueue, @@ -148,7 +148,7 @@ decl_test_parachains! { runtime = { Runtime: collectives_polkadot_runtime::Runtime, RuntimeOrigin: collectives_polkadot_runtime::RuntimeOrigin, - RuntimeCall: collectives_polkadot_runtime::RuntimeEvent, + RuntimeCall: collectives_polkadot_runtime::RuntimeCall, RuntimeEvent: collectives_polkadot_runtime::RuntimeEvent, XcmpMessageHandler: collectives_polkadot_runtime::XcmpQueue, DmpMessageHandler: collectives_polkadot_runtime::DmpQueue, @@ -168,7 +168,7 @@ decl_test_parachains! { runtime = { Runtime: bridge_hub_kusama_runtime::Runtime, RuntimeOrigin: bridge_hub_kusama_runtime::RuntimeOrigin, - RuntimeCall: bridge_hub_kusama_runtime::RuntimeEvent, + RuntimeCall: bridge_hub_kusama_runtime::RuntimeCall, RuntimeEvent: bridge_hub_kusama_runtime::RuntimeEvent, XcmpMessageHandler: bridge_hub_kusama_runtime::XcmpQueue, DmpMessageHandler: bridge_hub_kusama_runtime::DmpQueue, @@ -188,7 +188,7 @@ decl_test_parachains! { runtime = { Runtime: bridge_hub_polkadot_runtime::Runtime, RuntimeOrigin: bridge_hub_polkadot_runtime::RuntimeOrigin, - RuntimeCall: bridge_hub_polkadot_runtime::RuntimeEvent, + RuntimeCall: bridge_hub_polkadot_runtime::RuntimeCall, RuntimeEvent: bridge_hub_polkadot_runtime::RuntimeEvent, XcmpMessageHandler: bridge_hub_polkadot_runtime::XcmpQueue, DmpMessageHandler: bridge_hub_polkadot_runtime::DmpQueue, From 4a348d98ab924e2988f9065853c21b766ef569e2 Mon Sep 17 00:00:00 2001 From: gilescope Date: Tue, 23 May 2023 22:00:04 +0100 Subject: [PATCH 2/4] statemine tests --- Cargo.lock | 26 ++++++++ Cargo.toml | 1 + .../emulated/assets/statemine/Cargo.toml | 36 +++++++++++ .../emulated/assets/statemine/src/lib.rs | 33 ++++++++++ .../assets/statemine/src/tests/mod.rs | 3 + .../statemine/src/tests/reserve_transfer.rs | 63 +++++++++++++++++++ .../assets/statemine/src/tests/teleport.rs | 60 ++++++++++++++++++ .../assets/statemine/src/tests/transact.rs | 58 +++++++++++++++++ 8 files changed, 280 insertions(+) create mode 100644 parachains/integration-tests/emulated/assets/statemine/Cargo.toml create mode 100644 parachains/integration-tests/emulated/assets/statemine/src/lib.rs create mode 100644 parachains/integration-tests/emulated/assets/statemine/src/tests/mod.rs create mode 100644 parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs create mode 100644 parachains/integration-tests/emulated/assets/statemine/src/tests/teleport.rs create mode 100644 parachains/integration-tests/emulated/assets/statemine/src/tests/transact.rs diff --git a/Cargo.lock b/Cargo.lock index d4afebfaaaa..f3c06f48424 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13567,6 +13567,32 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "statemine-it" +version = "1.0.0" +dependencies = [ + "frame-support", + "frame-system", + "integration-tests-common", + "pallet-assets", + "pallet-balances", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "penpal-runtime", + "polkadot-core-primitives", + "polkadot-parachain", + "polkadot-runtime", + "polkadot-runtime-parachains", + "sp-core", + "sp-runtime", + "sp-weights", + "statemine-runtime", + "xcm", + "xcm-emulator", + "xcm-executor", +] + [[package]] name = "statemine-runtime" version = "2.0.0" diff --git a/Cargo.toml b/Cargo.toml index dcb862654e8..6027e4cf31b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,6 +53,7 @@ members = [ "parachains/runtimes/glutton/glutton-kusama", "parachains/runtimes/testing/penpal", "parachains/integration-tests/emulated/common", + "parachains/integration-tests/emulated/assets/statemine", "parachains/integration-tests/emulated/assets/statemint", "test/client", "test/relay-sproof-builder", diff --git a/parachains/integration-tests/emulated/assets/statemine/Cargo.toml b/parachains/integration-tests/emulated/assets/statemine/Cargo.toml new file mode 100644 index 00000000000..42ed5ac0605 --- /dev/null +++ b/parachains/integration-tests/emulated/assets/statemine/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "statemine-it" +version = "1.0.0" +authors = ["Parity Technologies "] +edition = "2021" +description = "Statemine parachain runtime integration tests with xcm-emulator" + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false } + +# Substrate +sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } +frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } +frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } +sp-weights = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-assets = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } + +# Polkadot +polkadot-core-primitives = { default-features = false, git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-parachain = { default-features = false, git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-runtime = { git = "https://github.com/paritytech/polkadot", branch = "master" } +xcm = { default-features = false, git = "https://github.com/paritytech/polkadot", branch = "master" } +xcm-executor = { default-features = false, git = "https://github.com/paritytech/polkadot", branch = "master" } +pallet-xcm = { default-features = false, git = "https://github.com/paritytech/polkadot", branch = "master" } + +# Cumulus +parachains-common = { path = "../../../../common" } +penpal-runtime = { path = "../../../../runtimes/testing/penpal" } +statemine-runtime = { path = "../../../../runtimes/assets/statemine" } + +# Local +xcm-emulator = { default-features = false, path = "../../../../../xcm/xcm-emulator" } +integration-tests-common = { default-features = false, path = "../../common" } diff --git a/parachains/integration-tests/emulated/assets/statemine/src/lib.rs b/parachains/integration-tests/emulated/assets/statemine/src/lib.rs new file mode 100644 index 00000000000..e4126306a12 --- /dev/null +++ b/parachains/integration-tests/emulated/assets/statemine/src/lib.rs @@ -0,0 +1,33 @@ +pub use codec::Encode; +pub use frame_support::{ + assert_ok, instances::Instance1, pallet_prelude::Weight, traits::fungibles::Inspect, +}; +pub use integration_tests_common::{ + constants::{ + accounts::{ALICE, BOB}, + kusama::ED as KUSAMA_ED, + PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3, + }, + AccountId, BHKusama, BHKusamaPallet, BHKusamaReceiver, BHKusamaSender, BHPolkadot, + BHPolkadotPallet, BHPolkadotReceiver, BHPolkadotSender, Collectives, CollectivesPallet, + CollectivesReceiver, CollectivesSender, Kusama, KusamaMockNet, KusamaPallet, KusamaReceiver, + KusamaSender, PenpalKusama, PenpalKusamaReceiver, PenpalKusamaSender, PenpalPolkadot, + PenpalPolkadotReceiver, PenpalPolkadotSender, Polkadot, PolkadotMockNet, PolkadotPallet, + PolkadotReceiver, PolkadotSender, Statemine, StateminePallet, StatemineReceiver, + StatemineSender, +}; +pub use polkadot_core_primitives::InboundDownwardMessage; +pub use xcm::{ + prelude::*, + v3::{ + Error, + NetworkId::{Kusama as KusamaId},//, Polkadot as PolkadotId}, + }, +}; +pub use xcm_emulator::{ + assert_expected_events, bx, cumulus_pallet_dmp_queue, helpers::weight_within_threshold, + Parachain as Para, RelayChain as Relay, TestExt, +}; + +#[cfg(test)] +mod tests; diff --git a/parachains/integration-tests/emulated/assets/statemine/src/tests/mod.rs b/parachains/integration-tests/emulated/assets/statemine/src/tests/mod.rs new file mode 100644 index 00000000000..996f9fd0aae --- /dev/null +++ b/parachains/integration-tests/emulated/assets/statemine/src/tests/mod.rs @@ -0,0 +1,3 @@ +mod reserve_transfer; +mod teleport; +mod transact; diff --git a/parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs b/parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs new file mode 100644 index 00000000000..3d21ba2d095 --- /dev/null +++ b/parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs @@ -0,0 +1,63 @@ +use crate::*; + +#[test] +fn reserve_transfer_native_asset_from_relay_to_assets() { + // Init tests variables + let amount = KUSAMA_ED * 1000; + let relay_sender_balance_before = Kusama::account_data_of(KusamaSender::get()).free; + let para_receiver_balance_before = Statemine::account_data_of(StatemineReceiver::get()).free; + + let origin = ::RuntimeOrigin::signed(KusamaSender::get()); + let assets_para_destination: VersionedMultiLocation = + Kusama::child_location_of(Statemine::para_id()).into(); + let beneficiary: VersionedMultiLocation = + AccountId32 { network: None, id: StatemineReceiver::get().into() }.into(); + let native_assets: VersionedMultiAssets = (Here, amount).into(); + let fee_asset_item = 0; + let weight_limit = WeightLimit::Unlimited; + + // Send XCM message from Relay Chain + Kusama::execute_with(|| { + assert_ok!(::XcmPallet::limited_reserve_transfer_assets( + origin, + bx!(assets_para_destination), + bx!(beneficiary), + bx!(native_assets), + fee_asset_item, + weight_limit, + )); + + type RuntimeEvent = ::RuntimeEvent; + + assert_expected_events!( + Kusama, + vec![ + RuntimeEvent::XcmPallet(pallet_xcm::Event::Attempted(Outcome::Complete(weight))) => { + weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(2_000_000_000, 0), *weight), + }, + ] + ); + }); + + // Receive XCM message in Assets Parachain + Statemine::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + + assert_expected_events!( + Statemine, + vec![ + RuntimeEvent::DmpQueue(cumulus_pallet_dmp_queue::Event::ExecutedDownward { + outcome: Outcome::Incomplete(_, Error::UntrustedReserveLocation), + .. + }) => {}, + ] + ); + }); + + // Check if balances are updated accordingly in Relay Chain and Assets Parachain + let relay_sender_balance_after = Kusama::account_data_of(KusamaSender::get()).free; + let para_sender_balance_after = Statemine::account_data_of(StatemineReceiver::get()).free; + + assert_eq!(relay_sender_balance_before - amount, relay_sender_balance_after); + assert_eq!(para_sender_balance_after, para_receiver_balance_before); +} diff --git a/parachains/integration-tests/emulated/assets/statemine/src/tests/teleport.rs b/parachains/integration-tests/emulated/assets/statemine/src/tests/teleport.rs new file mode 100644 index 00000000000..389f1a365ea --- /dev/null +++ b/parachains/integration-tests/emulated/assets/statemine/src/tests/teleport.rs @@ -0,0 +1,60 @@ +use crate::*; + +#[test] +fn teleport_native_assets_from_relay_to_assets_para() { + // Init tests variables + let amount = KUSAMA_ED * 1000; + let relay_sender_balance_before = Kusama::account_data_of(KusamaSender::get()).free; + let para_receiver_balance_before = Statemine::account_data_of(StatemineReceiver::get()).free; + + let origin = ::RuntimeOrigin::signed(KusamaSender::get()); + let assets_para_destination: VersionedMultiLocation = + Kusama::child_location_of(Statemine::para_id()).into(); + let beneficiary: VersionedMultiLocation = + AccountId32 { network: None, id: StatemineReceiver::get().into() }.into(); + let native_assets: VersionedMultiAssets = (Here, amount).into(); + let fee_asset_item = 0; + let weight_limit = WeightLimit::Unlimited; + + // Send XCM message from Relay Chain + Kusama::execute_with(|| { + assert_ok!(::XcmPallet::limited_teleport_assets( + origin, + bx!(assets_para_destination), + bx!(beneficiary), + bx!(native_assets), + fee_asset_item, + weight_limit, + )); + + type RuntimeEvent = ::RuntimeEvent; + + assert_expected_events!( + Kusama, + vec![ + RuntimeEvent::XcmPallet(pallet_xcm::Event::Attempted(Outcome::Complete { .. })) => {}, + ] + ); + }); + + // Receive XCM message in Assets Parachain + Statemine::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + + assert_expected_events!( + Statemine, + vec![ + RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, .. }) => { + who: *who == StatemineReceiver::get().into(), + }, + ] + ); + }); + + // Check if balances are updated accordingly in Relay Chain and Assets Parachain + let relay_sender_balance_after = Kusama::account_data_of(KusamaSender::get()).free; + let para_sender_balance_after = Statemine::account_data_of(StatemineReceiver::get()).free; + + assert_eq!(relay_sender_balance_before - amount, relay_sender_balance_after); + assert!(para_sender_balance_after > para_receiver_balance_before); +} diff --git a/parachains/integration-tests/emulated/assets/statemine/src/tests/transact.rs b/parachains/integration-tests/emulated/assets/statemine/src/tests/transact.rs new file mode 100644 index 00000000000..144c8cc9f21 --- /dev/null +++ b/parachains/integration-tests/emulated/assets/statemine/src/tests/transact.rs @@ -0,0 +1,58 @@ +use crate::*; + +#[test] +fn transact_sudo_from_relay_to_assets_para() { + // Init tests variables + // Call to be executed in Assets Parachain + const ASSET_ID: u32 = 1; + + let call = ::RuntimeCall::Assets(pallet_assets::Call::< + ::Runtime, + Instance1, + >::force_create { + id: ASSET_ID.into(), + is_sufficient: true, + min_balance: 1000, + owner: StatemineSender::get().into(), + }) + .encode() + .into(); + + // XcmPallet send arguments + let sudo_origin = ::RuntimeOrigin::root(); + let assets_para_destination: VersionedMultiLocation = + Kusama::child_location_of(Statemine::para_id()).into(); + + let weight_limit = WeightLimit::Unlimited; + let require_weight_at_most = Weight::from_parts(1000000000, 200000); + let origin_kind = OriginKind::Superuser; + let check_origin = None; + + let xcm = VersionedXcm::from(Xcm(vec![ + UnpaidExecution { weight_limit, check_origin }, + Transact { require_weight_at_most, origin_kind, call }, + ])); + + // Send XCM message from Relay Chain + Kusama::execute_with(|| { + assert_ok!(::XcmPallet::send( + sudo_origin, + bx!(assets_para_destination), + bx!(xcm), + )); + + type RuntimeEvent = ::RuntimeEvent; + + assert_expected_events!( + Kusama, + vec![ + RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {}, + ] + ); + }); + + // Receive XCM message in Assets Parachain + Statemine::execute_with(|| { + assert!(::Assets::asset_exists(ASSET_ID)); + }); +} From 17e686605b9647f6b3def60820194a29476bf96b Mon Sep 17 00:00:00 2001 From: gilescope Date: Wed, 24 May 2023 10:48:01 +0100 Subject: [PATCH 3/4] fix statemine tests --- .../emulated/assets/statemine/src/lib.rs | 2 +- .../assets/statemine/src/tests/reserve_transfer.rs | 2 +- .../emulated/common/src/constants.rs | 11 +++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/parachains/integration-tests/emulated/assets/statemine/src/lib.rs b/parachains/integration-tests/emulated/assets/statemine/src/lib.rs index e4126306a12..d3e789e3905 100644 --- a/parachains/integration-tests/emulated/assets/statemine/src/lib.rs +++ b/parachains/integration-tests/emulated/assets/statemine/src/lib.rs @@ -21,7 +21,7 @@ pub use xcm::{ prelude::*, v3::{ Error, - NetworkId::{Kusama as KusamaId},//, Polkadot as PolkadotId}, + NetworkId::Kusama as KusamaId, }, }; pub use xcm_emulator::{ diff --git a/parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs b/parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs index 3d21ba2d095..2139e0324b9 100644 --- a/parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs +++ b/parachains/integration-tests/emulated/assets/statemine/src/tests/reserve_transfer.rs @@ -33,7 +33,7 @@ fn reserve_transfer_native_asset_from_relay_to_assets() { Kusama, vec![ RuntimeEvent::XcmPallet(pallet_xcm::Event::Attempted(Outcome::Complete(weight))) => { - weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(2_000_000_000, 0), *weight), + weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(754_244_000, 0), *weight), }, ] ); diff --git a/parachains/integration-tests/emulated/common/src/constants.rs b/parachains/integration-tests/emulated/common/src/constants.rs index c207a8e7330..694137fe094 100644 --- a/parachains/integration-tests/emulated/common/src/constants.rs +++ b/parachains/integration-tests/emulated/common/src/constants.rs @@ -161,7 +161,6 @@ pub mod polkadot { .map(|k| (k, ED * 4096)) .collect(), }, - indices: polkadot_runtime::IndicesConfig { indices: vec![] }, session: polkadot_runtime::SessionConfig { keys: validators::initial_authorities() .iter() @@ -214,7 +213,9 @@ pub mod polkadot { pub mod kusama { use super::*; pub const ED: Balance = kusama_runtime_constants::currency::EXISTENTIAL_DEPOSIT; - const STASH: u128 = 100 * kusama_runtime_constants::currency::UNITS; + use kusama_runtime_constants::currency::UNITS as KSM; + const ENDOWMENT: u128 = 1_000_000 * KSM; + const STASH: u128 = 100 * KSM; pub fn get_host_config() -> HostConfiguration { HostConfiguration { @@ -253,11 +254,9 @@ pub mod kusama { balances: kusama_runtime::BalancesConfig { balances: accounts::init_balances() .iter() - .cloned() - .map(|k| (k, ED * 4096)) + .map(|k: &AccountId| (k.clone(), ENDOWMENT)) .collect(), }, - indices: kusama_runtime::IndicesConfig { indices: vec![] }, session: kusama_runtime::SessionConfig { keys: validators::initial_authorities() .iter() @@ -278,8 +277,8 @@ pub mod kusama { .collect::>(), }, staking: kusama_runtime::StakingConfig { - minimum_validator_count: 1, validator_count: validators::initial_authorities().len() as u32, + minimum_validator_count: 1, stakers: validators::initial_authorities() .iter() .map(|x| { From d03d0674c2357a39dc56d7f4a215f31724b9c5a9 Mon Sep 17 00:00:00 2001 From: gilescope Date: Wed, 24 May 2023 11:16:38 +0100 Subject: [PATCH 4/4] cargo fmt, update readme --- .../integration-tests/emulated/assets/statemine/src/lib.rs | 5 +---- xcm/xcm-emulator/README.md | 3 +++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/parachains/integration-tests/emulated/assets/statemine/src/lib.rs b/parachains/integration-tests/emulated/assets/statemine/src/lib.rs index d3e789e3905..7616a871b84 100644 --- a/parachains/integration-tests/emulated/assets/statemine/src/lib.rs +++ b/parachains/integration-tests/emulated/assets/statemine/src/lib.rs @@ -19,10 +19,7 @@ pub use integration_tests_common::{ pub use polkadot_core_primitives::InboundDownwardMessage; pub use xcm::{ prelude::*, - v3::{ - Error, - NetworkId::Kusama as KusamaId, - }, + v3::{Error, NetworkId::Kusama as KusamaId}, }; pub use xcm_emulator::{ assert_expected_events, bx, cumulus_pallet_dmp_queue, helpers::weight_within_threshold, diff --git a/xcm/xcm-emulator/README.md b/xcm/xcm-emulator/README.md index 5087ae4ac3c..aa1bd3d5406 100644 --- a/xcm/xcm-emulator/README.md +++ b/xcm/xcm-emulator/README.md @@ -13,6 +13,9 @@ As the messages do not physically go through the same messaging infrastructure there is some code that is not being tested compared to using slower E2E tests. In future it may be possible to run these XCM emulated tests as E2E tests (without changes). +As well as the XCM message transport being mocked out, so too are areas around consensus, +in particular things like disputes, staking and iamonline events can't be tested. + ## Alternatives If you just wish to test execution of various XCM instructions