mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 21:01:02 +00:00
Snowbridge - Test pallet order (#3381)
- Adds a test to check the correct digest for Snowbridge outbound messages. For the correct digest to be in the block, the the MessageQueue pallet should be configured after the EthereumOutbound queue pallet. The added test fails if the EthereumOutbound is configured after the MessageQueue pallet. - Adds a helper method `run_to_block_with_finalize` to simulate the block finalizing. The existing `run_to_block` method does not finalize and so it cannot successfully test this condition. Closes: https://github.com/paritytech/polkadot-sdk/issues/3208 --------- Co-authored-by: claravanstaden <Cats 4 life!>
This commit is contained in:
@@ -730,7 +730,7 @@ construct_runtime!(
|
||||
|
||||
// Message Queue. Importantly, is registered last so that messages are processed after
|
||||
// the `on_initialize` hooks of bridging pallets.
|
||||
MessageQueue: pallet_message_queue = 250,
|
||||
MessageQueue: pallet_message_queue = 175,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -20,9 +20,9 @@ use bp_polkadot_core::Signature;
|
||||
use bridge_hub_rococo_runtime::{
|
||||
bridge_to_bulletin_config::OnBridgeHubRococoRefundRococoBulletinMessages,
|
||||
bridge_to_westend_config::OnBridgeHubRococoRefundBridgeHubWestendMessages,
|
||||
xcm_config::XcmConfig, BridgeRejectObsoleteHeadersAndMessages, Executive,
|
||||
MessageQueueServiceWeight, Runtime, RuntimeCall, RuntimeEvent, SessionKeys, SignedExtra,
|
||||
UncheckedExtrinsic,
|
||||
xcm_config::XcmConfig, AllPalletsWithoutSystem, BridgeRejectObsoleteHeadersAndMessages,
|
||||
Executive, MessageQueueServiceWeight, Runtime, RuntimeCall, RuntimeEvent, SessionKeys,
|
||||
SignedExtra, UncheckedExtrinsic,
|
||||
};
|
||||
use codec::{Decode, Encode};
|
||||
use cumulus_primitives_core::XcmError::{FailedToTransactAsset, NotHoldingFees};
|
||||
@@ -135,6 +135,32 @@ fn ethereum_to_polkadot_message_extrinsics_work() {
|
||||
);
|
||||
}
|
||||
|
||||
/// Tests that the digest items are as expected when a Ethereum Outbound message is received.
|
||||
/// If the MessageQueue pallet is configured before (i.e. the MessageQueue pallet is listed before
|
||||
/// the EthereumOutboundQueue in the construct_runtime macro) the EthereumOutboundQueue, this test
|
||||
/// will fail.
|
||||
#[test]
|
||||
pub fn ethereum_outbound_queue_processes_messages_before_message_queue_works() {
|
||||
snowbridge_runtime_test_common::ethereum_outbound_queue_processes_messages_before_message_queue_works::<
|
||||
Runtime,
|
||||
XcmConfig,
|
||||
AllPalletsWithoutSystem,
|
||||
>(
|
||||
collator_session_keys(),
|
||||
1013,
|
||||
1000,
|
||||
H160::random(),
|
||||
H160::random(),
|
||||
DefaultBridgeHubEthereumBaseFee::get(),
|
||||
Box::new(|runtime_event_encoded: Vec<u8>| {
|
||||
match RuntimeEvent::decode(&mut &runtime_event_encoded[..]) {
|
||||
Ok(RuntimeEvent::EthereumOutboundQueue(event)) => Some(event),
|
||||
_ => None,
|
||||
}
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
fn construct_extrinsic(
|
||||
sender: sp_keyring::AccountKeyring,
|
||||
call: RuntimeCall,
|
||||
|
||||
@@ -25,6 +25,7 @@ sp-std = { path = "../../../../../substrate/primitives/std", default-features =
|
||||
sp-tracing = { path = "../../../../../substrate/primitives/tracing" }
|
||||
pallet-balances = { path = "../../../../../substrate/frame/balances", default-features = false }
|
||||
pallet-utility = { path = "../../../../../substrate/frame/utility", default-features = false }
|
||||
pallet-timestamp = { path = "../../../../../substrate/frame/timestamp", default-features = false }
|
||||
|
||||
# Cumulus
|
||||
asset-test-utils = { path = "../../assets/test-utils" }
|
||||
@@ -73,6 +74,7 @@ std = [
|
||||
"pallet-bridge-messages/std",
|
||||
"pallet-bridge-parachains/std",
|
||||
"pallet-bridge-relayers/std",
|
||||
"pallet-timestamp/std",
|
||||
"pallet-utility/std",
|
||||
"parachains-common/std",
|
||||
"parachains-runtimes-test-utils/std",
|
||||
|
||||
@@ -197,7 +197,9 @@ where
|
||||
pub(crate) fn initialize_bridge_grandpa_pallet<Runtime, GPI>(
|
||||
init_data: bp_header_chain::InitializationData<BridgedHeader<Runtime, GPI>>,
|
||||
) where
|
||||
Runtime: BridgeGrandpaConfig<GPI>,
|
||||
Runtime: BridgeGrandpaConfig<GPI>
|
||||
+ cumulus_pallet_parachain_system::Config
|
||||
+ pallet_timestamp::Config,
|
||||
{
|
||||
pallet_bridge_grandpa::Pallet::<Runtime, GPI>::initialize(
|
||||
RuntimeHelper::<Runtime>::root_origin(),
|
||||
|
||||
Reference in New Issue
Block a user