From e38b41f9d42a6c20c54163da8b3641dde6da451c Mon Sep 17 00:00:00 2001 From: PraetorP Date: Sun, 25 Dec 2022 09:08:57 +0000 Subject: [PATCH] fix: `payoutStakers` & `unstake` benchmarks --- --- a/Cargo.lock +++ b/Cargo.lock @@ -5550,7 +5550,7 @@ [[package]] name = "pallet-app-promotion" -version = "0.1.2" +version = "0.1.3" dependencies = [ "frame-benchmarking", "frame-support", --- a/pallets/app-promotion/CHANGELOG.md +++ b/pallets/app-promotion/CHANGELOG.md @@ -4,6 +4,12 @@ +## [0.1.3] - 2022-12-25 + +### Fixed + +- Benchmarks for `payoutStakers` and `unstake` extrinsics. + ## [0.1.2] - 2022-12-20 ### Fixed --- a/pallets/app-promotion/Cargo.toml +++ b/pallets/app-promotion/Cargo.toml @@ -9,13 +9,13 @@ license = 'GPLv3' name = 'pallet-app-promotion' repository = 'https://github.com/UniqueNetwork/unique-chain' -version = '0.1.2' +version = '0.1.3' [package.metadata.docs.rs] targets = ['x86_64-unknown-linux-gnu'] [features] -default = ['std'] +default = ['std',] runtime-benchmarks = [ 'frame-benchmarking', 'frame-support/runtime-benchmarks', --- a/pallets/app-promotion/src/benchmarking.rs +++ b/pallets/app-promotion/src/benchmarking.rs @@ -77,27 +77,36 @@ } : _(RawOrigin::Root, T::CrossAccountId::from_sub(pallet_admin)) payout_stakers{ - let b in 1..101; + let b in 1..100; let pallet_admin = account::("admin", 1, SEED); let share = Perbill::from_rational(1u32, 20); PromototionPallet::::set_admin_address(RawOrigin::Root.into(), T::CrossAccountId::from_sub(pallet_admin.clone()))?; ::Currency::make_free_balance_be(&pallet_admin, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); + ::Currency::make_free_balance_be(&::TreasuryAccountId::get(), Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - let staker: T::AccountId = account("caller", 0, SEED); - ::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); let stakers: Vec = (0..b).map(|index| account("staker", index, SEED)).collect(); stakers.iter().for_each(|staker| { ::Currency::make_free_balance_be(&staker, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); }); - (0..10).try_for_each(|_| { + (1..11).try_for_each(|i| { + >::set_block_number(i.into()); + T::RelayBlockNumberProvider::set_block_number((2*i).into()); + assert_eq!(>::block_number(), i.into()); + assert_eq!(T::RelayBlockNumberProvider::current_block_number(), (2*i).into()); stakers.iter() - .map(|staker| { - PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), Into::>::into(100u128) * T::Nominal::get()) - }).collect::, _>>()?; - >::finalize(); + .map(|staker| { + PromototionPallet::::stake(RawOrigin::Signed(staker.clone()).into(), Into::>::into(100u128) * T::Nominal::get()) + }).collect::, _>>()?; + Result::<(), sp_runtime::DispatchError>::Ok(()) })?; + + let stakes = Staked::::iter_prefix((&stakers[0],)).into_iter().collect::>(); + assert_eq!(stakes.len(), 10); + + >::set_block_number(15_000.into()); + T::RelayBlockNumberProvider::set_block_number(30_000.into()); } : _(RawOrigin::Signed(pallet_admin.clone()), Some(b as u8)) stake { @@ -110,9 +119,12 @@ let caller = account::("caller", 0, SEED); let share = Perbill::from_rational(1u32, 20); let _ = ::Currency::make_free_balance_be(&caller, Perbill::from_rational(1u32, 2) * BalanceOf::::max_value()); - (0..10).map(|_| { + (1..11).map(|i| { // used to change block number - >::finalize(); + >::set_block_number(i.into()); + T::RelayBlockNumberProvider::set_block_number((2*i).into()); + assert_eq!(>::block_number(), i.into()); + assert_eq!(T::RelayBlockNumberProvider::current_block_number(), (2*i).into()); PromototionPallet::::stake(RawOrigin::Signed(caller.clone()).into(), share * ::Currency::total_balance(&caller)) }).collect::, _>>()?; --- a/pallets/app-promotion/src/weights.rs +++ b/pallets/app-promotion/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_app_promotion //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-09-07, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-12-25, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -51,77 +51,84 @@ // Storage: AppPromotion PendingUnstake (r:1 w:0) // Storage: System Account (r:1 w:1) fn on_initialize(b: u32, ) -> Weight { - Weight::from_ref_time(2_651_000) - // Standard Error: 103_000 - .saturating_add(Weight::from_ref_time(6_024_000).saturating_mul(b as u64)) + Weight::from_ref_time(3_079_948 as u64) + // Standard Error: 30_376 + .saturating_add(Weight::from_ref_time(6_343_630 as u64).saturating_mul(b as u64)) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(T::DbWeight::get().writes((1 as u64).saturating_mul(b as u64))) } // Storage: AppPromotion Admin (r:0 w:1) fn set_admin_address() -> Weight { - Weight::from_ref_time(7_117_000) + Weight::from_ref_time(6_653_000 as u64) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) + // Storage: Configuration AppPromomotionConfigurationOverride (r:1 w:0) // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: AppPromotion NextCalculatedRecord (r:1 w:1) - // Storage: AppPromotion Staked (r:2 w:0) + // Storage: AppPromotion PreviousCalculatedRecord (r:1 w:1) + // Storage: AppPromotion Staked (r:11 w:10) + // Storage: System Account (r:2 w:2) + // Storage: Balances Locks (r:1 w:1) + // Storage: AppPromotion TotalStaked (r:1 w:1) fn payout_stakers(b: u32, ) -> Weight { - Weight::from_ref_time(9_958_000) - // Standard Error: 8_000 - .saturating_add(Weight::from_ref_time(4_406_000).saturating_mul(b as u64)) - .saturating_add(T::DbWeight::get().reads(4 as u64)) - .saturating_add(T::DbWeight::get().reads((1 as u64).saturating_mul(b as u64))) - .saturating_add(T::DbWeight::get().writes(1 as u64)) + Weight::from_ref_time(74_048_000 as u64) + // Standard Error: 33_223 + .saturating_add(Weight::from_ref_time(57_702_092 as u64).saturating_mul(b as u64)) + .saturating_add(T::DbWeight::get().reads(7 as u64)) + .saturating_add(T::DbWeight::get().reads((12 as u64).saturating_mul(b as u64))) + .saturating_add(T::DbWeight::get().writes(3 as u64)) + .saturating_add(T::DbWeight::get().writes((12 as u64).saturating_mul(b as u64))) } // Storage: AppPromotion StakesPerAccount (r:1 w:1) + // Storage: Configuration AppPromomotionConfigurationOverride (r:1 w:0) // Storage: System Account (r:1 w:1) // Storage: Balances Locks (r:1 w:1) // Storage: ParachainSystem ValidationData (r:1 w:0) // Storage: AppPromotion Staked (r:1 w:1) // Storage: AppPromotion TotalStaked (r:1 w:1) fn stake() -> Weight { - Weight::from_ref_time(20_574_000) - .saturating_add(T::DbWeight::get().reads(6 as u64)) + Weight::from_ref_time(20_314_000 as u64) + .saturating_add(T::DbWeight::get().reads(7 as u64)) .saturating_add(T::DbWeight::get().writes(5 as u64)) } + // Storage: Configuration AppPromomotionConfigurationOverride (r:1 w:0) // Storage: AppPromotion PendingUnstake (r:1 w:1) - // Storage: AppPromotion Staked (r:2 w:1) + // Storage: AppPromotion Staked (r:11 w:10) // Storage: Balances Locks (r:1 w:1) // Storage: System Account (r:1 w:1) // Storage: AppPromotion TotalStaked (r:1 w:1) // Storage: AppPromotion StakesPerAccount (r:0 w:1) fn unstake() -> Weight { - Weight::from_ref_time(31_703_000) - .saturating_add(T::DbWeight::get().reads(6 as u64)) - .saturating_add(T::DbWeight::get().writes(6 as u64)) + Weight::from_ref_time(64_582_000 as u64) + .saturating_add(T::DbWeight::get().reads(16 as u64)) + .saturating_add(T::DbWeight::get().writes(15 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn sponsor_collection() -> Weight { - Weight::from_ref_time(12_932_000) + Weight::from_ref_time(16_364_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn stop_sponsoring_collection() -> Weight { - Weight::from_ref_time(12_453_000) + Weight::from_ref_time(15_710_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:0 w:1) fn sponsor_contract() -> Weight { - Weight::from_ref_time(11_952_000) + Weight::from_ref_time(12_669_000 as u64) .saturating_add(T::DbWeight::get().reads(1 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:1 w:1) fn stop_sponsoring_contract() -> Weight { - Weight::from_ref_time(12_538_000) + Weight::from_ref_time(14_406_000 as u64) .saturating_add(T::DbWeight::get().reads(2 as u64)) .saturating_add(T::DbWeight::get().writes(1 as u64)) } @@ -132,77 +139,84 @@ // Storage: AppPromotion PendingUnstake (r:1 w:0) // Storage: System Account (r:1 w:1) fn on_initialize(b: u32, ) -> Weight { - Weight::from_ref_time(2_651_000) - // Standard Error: 103_000 - .saturating_add(Weight::from_ref_time(6_024_000).saturating_mul(b as u64)) + Weight::from_ref_time(3_079_948 as u64) + // Standard Error: 30_376 + .saturating_add(Weight::from_ref_time(6_343_630 as u64).saturating_mul(b as u64)) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) .saturating_add(RocksDbWeight::get().writes((1 as u64).saturating_mul(b as u64))) } // Storage: AppPromotion Admin (r:0 w:1) fn set_admin_address() -> Weight { - Weight::from_ref_time(7_117_000) + Weight::from_ref_time(6_653_000 as u64) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) + // Storage: Configuration AppPromomotionConfigurationOverride (r:1 w:0) // Storage: ParachainSystem ValidationData (r:1 w:0) - // Storage: AppPromotion NextCalculatedRecord (r:1 w:1) - // Storage: AppPromotion Staked (r:2 w:0) + // Storage: AppPromotion PreviousCalculatedRecord (r:1 w:1) + // Storage: AppPromotion Staked (r:11 w:10) + // Storage: System Account (r:2 w:2) + // Storage: Balances Locks (r:1 w:1) + // Storage: AppPromotion TotalStaked (r:1 w:1) fn payout_stakers(b: u32, ) -> Weight { - Weight::from_ref_time(9_958_000) - // Standard Error: 8_000 - .saturating_add(Weight::from_ref_time(4_406_000).saturating_mul(b as u64)) - .saturating_add(RocksDbWeight::get().reads(4 as u64)) - .saturating_add(RocksDbWeight::get().reads((1 as u64).saturating_mul(b as u64))) - .saturating_add(RocksDbWeight::get().writes(1 as u64)) + Weight::from_ref_time(74_048_000 as u64) + // Standard Error: 33_223 + .saturating_add(Weight::from_ref_time(57_702_092 as u64).saturating_mul(b as u64)) + .saturating_add(RocksDbWeight::get().reads(7 as u64)) + .saturating_add(RocksDbWeight::get().reads((12 as u64).saturating_mul(b as u64))) + .saturating_add(RocksDbWeight::get().writes(3 as u64)) + .saturating_add(RocksDbWeight::get().writes((12 as u64).saturating_mul(b as u64))) } // Storage: AppPromotion StakesPerAccount (r:1 w:1) + // Storage: Configuration AppPromomotionConfigurationOverride (r:1 w:0) // Storage: System Account (r:1 w:1) // Storage: Balances Locks (r:1 w:1) // Storage: ParachainSystem ValidationData (r:1 w:0) // Storage: AppPromotion Staked (r:1 w:1) // Storage: AppPromotion TotalStaked (r:1 w:1) fn stake() -> Weight { - Weight::from_ref_time(20_574_000) - .saturating_add(RocksDbWeight::get().reads(6 as u64)) + Weight::from_ref_time(20_314_000 as u64) + .saturating_add(RocksDbWeight::get().reads(7 as u64)) .saturating_add(RocksDbWeight::get().writes(5 as u64)) } + // Storage: Configuration AppPromomotionConfigurationOverride (r:1 w:0) // Storage: AppPromotion PendingUnstake (r:1 w:1) - // Storage: AppPromotion Staked (r:2 w:1) + // Storage: AppPromotion Staked (r:11 w:10) // Storage: Balances Locks (r:1 w:1) // Storage: System Account (r:1 w:1) // Storage: AppPromotion TotalStaked (r:1 w:1) // Storage: AppPromotion StakesPerAccount (r:0 w:1) fn unstake() -> Weight { - Weight::from_ref_time(31_703_000) - .saturating_add(RocksDbWeight::get().reads(6 as u64)) - .saturating_add(RocksDbWeight::get().writes(6 as u64)) + Weight::from_ref_time(64_582_000 as u64) + .saturating_add(RocksDbWeight::get().reads(16 as u64)) + .saturating_add(RocksDbWeight::get().writes(15 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn sponsor_collection() -> Weight { - Weight::from_ref_time(12_932_000) + Weight::from_ref_time(16_364_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: Common CollectionById (r:1 w:1) fn stop_sponsoring_collection() -> Weight { - Weight::from_ref_time(12_453_000) + Weight::from_ref_time(15_710_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:0 w:1) fn sponsor_contract() -> Weight { - Weight::from_ref_time(11_952_000) + Weight::from_ref_time(12_669_000 as u64) .saturating_add(RocksDbWeight::get().reads(1 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } // Storage: AppPromotion Admin (r:1 w:0) // Storage: EvmContractHelpers Sponsoring (r:1 w:1) fn stop_sponsoring_contract() -> Weight { - Weight::from_ref_time(12_538_000) + Weight::from_ref_time(14_406_000 as u64) .saturating_add(RocksDbWeight::get().reads(2 as u64)) .saturating_add(RocksDbWeight::get().writes(1 as u64)) } --- a/runtime/common/mod.rs +++ b/runtime/common/mod.rs @@ -145,6 +145,10 @@ .map(|d| d.relay_parent_number) .unwrap_or_default() } + #[cfg(feature = "runtime-benchmarks")] + fn set_block_number(block: Self::BlockNumber) { + cumulus_pallet_parachain_system::RelaychainBlockNumberProvider::::set_block_number(block) + } } pub(crate) struct CheckInherents; --- a/runtime/opal/Cargo.toml +++ b/runtime/opal/Cargo.toml @@ -44,6 +44,7 @@ 'sp-runtime/runtime-benchmarks', 'xcm-builder/runtime-benchmarks', 'pallet-maintenance/runtime-benchmarks', + 'cumulus-pallet-parachain-system/runtime-benchmarks' ] try-runtime = [ 'frame-try-runtime', --- a/runtime/quartz/Cargo.toml +++ b/runtime/quartz/Cargo.toml @@ -43,6 +43,7 @@ 'sp-runtime/runtime-benchmarks', 'xcm-builder/runtime-benchmarks', 'pallet-maintenance/runtime-benchmarks', + 'cumulus-pallet-parachain-system/runtime-benchmarks', ] try-runtime = [ 'frame-try-runtime', -- gitstuff