mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 16:21:02 +00:00
BridgeHubRococo/Wococo nits + updated subtree (#2572)
* Nits (merge before separatelly) * Small cosmetics for Rococo/Wococo bridge local run * Squashed 'bridges/' changes from 04b3dda6aa..5fc377ab34 5fc377ab34 Support for kusama-polkadot relaying (#2128) 01f4b7f1ba Fix clippy warnings (#2127) 696ff1c368 BHK/P alignments (#2115) 2a66aa3248 Small fixes (#2126) 7810f1a988 Cosmetics (#2124) daf250f69c Remove some `expect()` statements (#2123) 1c5fba8274 temporarily remove balance guard (#2121) 3d0e547361 Propagate message receival confirmation errors (#2116) 1c33143f07 Propagate message verification errors (#2114) b075b00910 Bump time from 0.3.20 to 0.3.21 51a3a51618 Bump serde from 1.0.160 to 1.0.162 da88d044a6 Bump clap from 4.2.5 to 4.2.7 cdca322cd6 Bump sysinfo from 0.28.4 to 0.29.0 git-subtree-dir: bridges git-subtree-split: 5fc377ab34f7dfd3293099c5feec49255e827812 * Fix * Allow to change storage constants (DeliveryReward, RequiredStakeForStakeAndSlash) + tests * Clippy * New SA for RO/WO * Squashed 'bridges/' changes from 5fc377ab34..0f6091d481 0f6091d481 Bump polkadot/substrate (#2134) 9233f0a337 Bump tokio from 1.28.0 to 1.28.1 a29c1caa93 Bump serde from 1.0.162 to 1.0.163 git-subtree-dir: bridges git-subtree-split: 0f6091d48184ebb4f75cb3089befa6b92cf37335
This commit is contained in:
@@ -84,8 +84,7 @@ pub fn initialize_bridge_by_governance_works<Runtime, GrandpaPalletInstance>(
|
||||
let require_weight_at_most =
|
||||
<Runtime as frame_system::Config>::DbWeight::get().reads_writes(7, 7);
|
||||
|
||||
// execute XCM with Transacts to initialize bridge as governance does
|
||||
// prepare data for xcm::Transact(create)
|
||||
// execute XCM with Transacts to `initialize bridge` as governance does
|
||||
assert_ok!(RuntimeHelper::<Runtime>::execute_as_governance(
|
||||
initialize_call,
|
||||
require_weight_at_most
|
||||
@@ -123,6 +122,105 @@ macro_rules! include_initialize_bridge_by_governance_works(
|
||||
}
|
||||
);
|
||||
|
||||
/// Test-case makes sure that `Runtime` can change storage constant via governance-like call
|
||||
pub fn change_storage_constant_by_governance_works<Runtime, StorageConstant, StorageConstantType>(
|
||||
collator_session_key: CollatorSessionKeys<Runtime>,
|
||||
runtime_para_id: u32,
|
||||
runtime_call_encode: Box<dyn Fn(frame_system::Call<Runtime>) -> Vec<u8>>,
|
||||
storage_constant_key_value: fn() -> (Vec<u8>, StorageConstantType),
|
||||
new_storage_constant_value: fn(&StorageConstantType) -> StorageConstantType,
|
||||
) where
|
||||
Runtime: frame_system::Config
|
||||
+ pallet_balances::Config
|
||||
+ pallet_session::Config
|
||||
+ pallet_xcm::Config
|
||||
+ parachain_info::Config
|
||||
+ pallet_collator_selection::Config
|
||||
+ cumulus_pallet_dmp_queue::Config
|
||||
+ cumulus_pallet_parachain_system::Config,
|
||||
ValidatorIdOf<Runtime>: From<AccountIdOf<Runtime>>,
|
||||
StorageConstant: Get<StorageConstantType>,
|
||||
StorageConstantType: Encode + PartialEq + std::fmt::Debug,
|
||||
{
|
||||
ExtBuilder::<Runtime>::default()
|
||||
.with_collators(collator_session_key.collators())
|
||||
.with_session_keys(collator_session_key.session_keys())
|
||||
.with_para_id(runtime_para_id.into())
|
||||
.with_tracing()
|
||||
.build()
|
||||
.execute_with(|| {
|
||||
let (storage_constant_key, storage_constant_init_value): (
|
||||
Vec<u8>,
|
||||
StorageConstantType,
|
||||
) = storage_constant_key_value();
|
||||
|
||||
// check delivery reward constant before (not stored yet, just as default value is used)
|
||||
assert_eq!(StorageConstant::get(), storage_constant_init_value);
|
||||
assert_eq!(sp_io::storage::get(&storage_constant_key), None);
|
||||
|
||||
let new_storage_constant_value =
|
||||
new_storage_constant_value(&storage_constant_init_value);
|
||||
assert_ne!(new_storage_constant_value, storage_constant_init_value);
|
||||
|
||||
// encode `set_storage` call
|
||||
let set_storage_call =
|
||||
runtime_call_encode(frame_system::Call::<Runtime>::set_storage {
|
||||
items: vec![(
|
||||
storage_constant_key.clone(),
|
||||
new_storage_constant_value.encode(),
|
||||
)],
|
||||
});
|
||||
|
||||
// estimate - storing just 1 value
|
||||
use frame_system::WeightInfo;
|
||||
let require_weight_at_most =
|
||||
<Runtime as frame_system::Config>::SystemWeightInfo::set_storage(1);
|
||||
|
||||
// execute XCM with Transact to `set_storage` as governance does
|
||||
assert_ok!(RuntimeHelper::<Runtime>::execute_as_governance(
|
||||
set_storage_call,
|
||||
require_weight_at_most
|
||||
)
|
||||
.ensure_complete());
|
||||
|
||||
// check delivery reward constant after (stored)
|
||||
assert_eq!(StorageConstant::get(), new_storage_constant_value);
|
||||
assert_eq!(
|
||||
sp_io::storage::get(&storage_constant_key),
|
||||
Some(new_storage_constant_value.encode().into())
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! include_change_storage_constant_by_governance_works(
|
||||
(
|
||||
$test_name:tt,
|
||||
$runtime:path,
|
||||
$collator_session_key:expr,
|
||||
$runtime_para_id:expr,
|
||||
$runtime_call_encode:expr,
|
||||
($storage_constant:path, $storage_constant_type:path),
|
||||
$storage_constant_key_value:expr,
|
||||
$new_storage_constant_value:expr
|
||||
) => {
|
||||
#[test]
|
||||
fn $test_name() {
|
||||
$crate::test_cases::change_storage_constant_by_governance_works::<
|
||||
$runtime,
|
||||
$storage_constant,
|
||||
$storage_constant_type,
|
||||
>(
|
||||
$collator_session_key,
|
||||
$runtime_para_id,
|
||||
$runtime_call_encode,
|
||||
$storage_constant_key_value,
|
||||
$new_storage_constant_value,
|
||||
)
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
/// Test-case makes sure that `Runtime` can handle xcm `ExportMessage`:
|
||||
/// Checks if received XCM messages is correctly added to the message outbound queue for delivery.
|
||||
/// For SystemParachains we expect unpaid execution.
|
||||
|
||||
Reference in New Issue
Block a user