From dec935addd279496cccf8553a24324f5f5ce725f Mon Sep 17 00:00:00 2001 From: 4meta5 Date: Tue, 28 Nov 2023 15:55:29 -0500 Subject: [PATCH] minimal runtime integration tests --- runtime/tests/common/mod.rs | 2 +- runtime/tests/fee.rs | 22 ------------------ runtime/tests/multiplier.rs | 46 +++++++++++++++++++++++++++++++++++++ runtime/tests/storage.rs | 34 +++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 23 deletions(-) delete mode 100644 runtime/tests/fee.rs create mode 100644 runtime/tests/multiplier.rs create mode 100644 runtime/tests/storage.rs diff --git a/runtime/tests/common/mod.rs b/runtime/tests/common/mod.rs index 4a022bd4..4fe99c3a 100644 --- a/runtime/tests/common/mod.rs +++ b/runtime/tests/common/mod.rs @@ -12,4 +12,4 @@ where System::set_block_consumed_resources(w, 0); assertions() }); -} \ No newline at end of file +} diff --git a/runtime/tests/fee.rs b/runtime/tests/fee.rs deleted file mode 100644 index f6a0474f..00000000 --- a/runtime/tests/fee.rs +++ /dev/null @@ -1,22 +0,0 @@ -// Integration transaction fee tests i.e. adjusts to block saturation -mod common; -use common::*; -use frame_support::pallet_prelude::*; -use parachain_template_runtime::{Runtime, RuntimeBlockWeights}; -use polkadot_runtime_common::MinimumMultiplier; -use sp_runtime::{traits::Convert, Perquintill}; - -#[test] -fn multiplier_can_grow_from_zero() { - let minimum_multiplier = MinimumMultiplier::get(); - let target = Perquintill::from_percent(25) - * RuntimeBlockWeights::get().get(DispatchClass::Normal).max_total.unwrap(); - // if the min is too small, then this will not change, and we are doomed forever. - // the weight is 1/100th bigger than target. - run_with_system_weight(target * 101 / 100, || { - let next = ::FeeMultiplierUpdate::convert( - minimum_multiplier, - ); - assert!(next > minimum_multiplier, "{:?} !>= {:?}", next, minimum_multiplier); - }) -} diff --git a/runtime/tests/multiplier.rs b/runtime/tests/multiplier.rs new file mode 100644 index 00000000..bd5e9a89 --- /dev/null +++ b/runtime/tests/multiplier.rs @@ -0,0 +1,46 @@ +// Integration transaction weight-fee tests +mod common; +use common::*; +use frame_support::pallet_prelude::*; +use pallet_transaction_payment::Multiplier; +use parachain_template_runtime::{Runtime, RuntimeBlockWeights}; +use polkadot_runtime_common::MinimumMultiplier; +use sp_runtime::{traits::Convert, Perquintill}; + +fn min_multiplier() -> Multiplier { + MinimumMultiplier::get() +} + +fn target() -> Weight { + Perquintill::from_percent(25) + * RuntimeBlockWeights::get().get(DispatchClass::Normal).max_total.unwrap() +} + +fn runtime_multiplier_update(fm: Multiplier) -> Multiplier { + ::FeeMultiplierUpdate::convert(fm) +} + +#[test] +fn multiplier_can_grow_from_zero() { + // if the min is too small, then this will not change, and we are doomed forever. + // the block ref time is 1/100th bigger than target. + run_with_system_weight(target().set_ref_time(target().ref_time() * 101 / 100), || { + let next = runtime_multiplier_update(min_multiplier()); + assert!(next > min_multiplier(), "{:?} !> {:?}", next, min_multiplier()); + }); + + // the block proof size is 1/100th bigger than target. + run_with_system_weight(target().set_proof_size((target().proof_size() / 100) * 101), || { + let next = runtime_multiplier_update(min_multiplier()); + assert!(next > min_multiplier(), "{:?} !> {:?}", next, min_multiplier()); + }) +} + +#[test] +fn multiplier_cannot_go_below_limit() { + // will not go any further below even if block is empty. + run_with_system_weight(Weight::zero(), || { + let next = runtime_multiplier_update(min_multiplier()); + assert_eq!(next, min_multiplier()); + }) +} diff --git a/runtime/tests/storage.rs b/runtime/tests/storage.rs new file mode 100644 index 00000000..24ec4f54 --- /dev/null +++ b/runtime/tests/storage.rs @@ -0,0 +1,34 @@ +// Storage indices integration checks +use frame_support::traits::PalletInfo; +use parachain_template_runtime::{ + Aura, AuraExt, Authorship, Balances, CollatorSelection, CumulusXcm, DmpQueue, Multisig, + ParachainInfo, ParachainSystem, PolkadotXcm, Proxy, Runtime, Session, Sudo, System, + TemplatePallet, Timestamp, TransactionPayment, XcmpQueue, +}; + +fn assert_pallet_prefix(name: &str) { + assert_eq!(::PalletInfo::name::

(), Some(name)); +} + +#[test] +fn verify_pallet_prefixes() { + assert_pallet_prefix::("System"); + assert_pallet_prefix::("ParachainSystem"); + assert_pallet_prefix::("Timestamp"); + assert_pallet_prefix::("ParachainInfo"); + assert_pallet_prefix::("Proxy"); + assert_pallet_prefix::("Balances"); + assert_pallet_prefix::("TransactionPayment"); + assert_pallet_prefix::("Sudo"); + assert_pallet_prefix::("Multisig"); + assert_pallet_prefix::("Authorship"); + assert_pallet_prefix::("CollatorSelection"); + assert_pallet_prefix::("Session"); + assert_pallet_prefix::("Aura"); + assert_pallet_prefix::("AuraExt"); + assert_pallet_prefix::("XcmpQueue"); + assert_pallet_prefix::("PolkadotXcm"); + assert_pallet_prefix::("CumulusXcm"); + assert_pallet_prefix::("DmpQueue"); + assert_pallet_prefix::("TemplatePallet"); +}