Unverified Commit 5cbc418a authored by Kian Paimani's avatar Kian Paimani Committed by GitHub
Browse files

Bump Nominator Reward Limits (#1668)



* Add reward limits

* Fix weight tests and whatnot

* add weight files

* Update runtime/kusama/src/lib.rs

* "Update Substrate"

Co-authored-by: Shawn Tabrizi's avatarShawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: parity-processbot <>
parent add7e47b
Pipeline #107085 passed with stages
in 25 minutes and 7 seconds
This diff is collapsed.
...@@ -317,7 +317,7 @@ parameter_types! { ...@@ -317,7 +317,7 @@ parameter_types! {
// 27 eras in which slashes can be cancelled (slightly less than 7 days). // 27 eras in which slashes can be cancelled (slightly less than 7 days).
pub const SlashDeferDuration: pallet_staking::EraIndex = 27; pub const SlashDeferDuration: pallet_staking::EraIndex = 27;
pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE;
pub const MaxNominatorRewardedPerValidator: u32 = 64; pub const MaxNominatorRewardedPerValidator: u32 = 256;
// quarter of the last session will be for election. // quarter of the last session will be for election.
pub const ElectionLookahead: BlockNumber = EPOCH_DURATION_IN_BLOCKS / 4; pub const ElectionLookahead: BlockNumber = EPOCH_DURATION_IN_BLOCKS / 4;
pub const MaxIterations: u32 = 10; pub const MaxIterations: u32 = 10;
...@@ -352,7 +352,7 @@ impl pallet_staking::Trait for Runtime { ...@@ -352,7 +352,7 @@ impl pallet_staking::Trait for Runtime {
type UnsignedPriority = StakingUnsignedPriority; type UnsignedPriority = StakingUnsignedPriority;
type MaxIterations = MaxIterations; type MaxIterations = MaxIterations;
type MinSolutionScoreBump = MinSolutionScoreBump; type MinSolutionScoreBump = MinSolutionScoreBump;
type WeightInfo = (); type WeightInfo = weights::pallet_staking::WeightInfo;
} }
parameter_types! { parameter_types! {
......
...@@ -20,6 +20,7 @@ pub mod frame_system; ...@@ -20,6 +20,7 @@ pub mod frame_system;
pub mod pallet_balances; pub mod pallet_balances;
pub mod pallet_collective; pub mod pallet_collective;
pub mod pallet_democracy; pub mod pallet_democracy;
pub mod pallet_staking;
pub mod pallet_timestamp; pub mod pallet_timestamp;
pub mod pallet_utility; pub mod pallet_utility;
pub mod pallet_proxy; pub mod pallet_proxy;
// Copyright (C) 2017-2020 Parity Technologies (UK) Ltd.
// SPDX-License-Identifier: Apache-2.0
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! Default weights of pallet-staking.
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 2.0.0-rc6
#![allow(unused_parens)]
#![allow(unused_imports)]
use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
pub struct WeightInfo;
impl pallet_staking::WeightInfo for WeightInfo {
fn bond() -> Weight {
(144278000 as Weight)
.saturating_add(DbWeight::get().reads(5 as Weight))
.saturating_add(DbWeight::get().writes(4 as Weight))
}
fn bond_extra() -> Weight {
(110715000 as Weight)
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn unbond() -> Weight {
(99840000 as Weight)
.saturating_add(DbWeight::get().reads(5 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn withdraw_unbonded_update(s: u32, ) -> Weight {
(100728000 as Weight)
.saturating_add((63000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(5 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn withdraw_unbonded_kill(s: u32, ) -> Weight {
(168879000 as Weight)
.saturating_add((6666000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(7 as Weight))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
fn validate() -> Weight {
(35539000 as Weight)
.saturating_add(DbWeight::get().reads(2 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn nominate(n: u32, ) -> Weight {
(48596000 as Weight)
.saturating_add((308000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads(3 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn chill() -> Weight {
(35144000 as Weight)
.saturating_add(DbWeight::get().reads(2 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn set_payee() -> Weight {
(24255000 as Weight)
.saturating_add(DbWeight::get().reads(1 as Weight))
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn set_controller() -> Weight {
(52294000 as Weight)
.saturating_add(DbWeight::get().reads(3 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn set_validator_count() -> Weight {
(5185000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_no_eras() -> Weight {
(5907000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_new_era() -> Weight {
(5917000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_new_era_always() -> Weight {
(5952000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn set_invulnerables(v: u32, ) -> Weight {
(6324000 as Weight)
.saturating_add((9000 as Weight).saturating_mul(v as Weight))
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_unstake(s: u32, ) -> Weight {
(119691000 as Weight)
.saturating_add((6681000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
fn cancel_deferred_slash(s: u32, ) -> Weight {
(5820201000 as Weight)
.saturating_add((34672000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(1 as Weight))
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn payout_stakers_dead_controller(n: u32, ) -> Weight {
(0 as Weight)
.saturating_add((92486000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight)))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight)))
}
fn payout_stakers_alive_staked(n: u32, ) -> Weight {
(0 as Weight)
.saturating_add((117324000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight)))
.saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight)))
}
fn rebond(l: u32, ) -> Weight {
(71316000 as Weight)
.saturating_add((142000 as Weight).saturating_mul(l as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn set_history_depth(e: u32, ) -> Weight {
(0 as Weight)
.saturating_add((51901000 as Weight).saturating_mul(e as Weight))
.saturating_add(DbWeight::get().reads(2 as Weight))
.saturating_add(DbWeight::get().writes(4 as Weight))
.saturating_add(DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight)))
}
fn reap_stash(s: u32, ) -> Weight {
(147166000 as Weight)
.saturating_add((6661000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
fn new_era(v: u32, n: u32, ) -> Weight {
(0 as Weight)
.saturating_add((1440459000 as Weight).saturating_mul(v as Weight))
.saturating_add((182580000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads(10 as Weight))
.saturating_add(DbWeight::get().reads((4 as Weight).saturating_mul(v as Weight)))
.saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight)))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight)))
}
fn submit_solution_better(v: u32, n: u32, a: u32, w: u32, ) -> Weight {
(0 as Weight)
.saturating_add((964000 as Weight).saturating_mul(v as Weight))
.saturating_add((432000 as Weight).saturating_mul(n as Weight))
.saturating_add((204294000 as Weight).saturating_mul(a as Weight))
.saturating_add((9546000 as Weight).saturating_mul(w as Weight))
.saturating_add(DbWeight::get().reads(6 as Weight))
.saturating_add(DbWeight::get().reads((4 as Weight).saturating_mul(a as Weight)))
.saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(w as Weight)))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
}
...@@ -326,7 +326,7 @@ parameter_types! { ...@@ -326,7 +326,7 @@ parameter_types! {
pub const BondingDuration: pallet_staking::EraIndex = 28; pub const BondingDuration: pallet_staking::EraIndex = 28;
pub const SlashDeferDuration: pallet_staking::EraIndex = 27; pub const SlashDeferDuration: pallet_staking::EraIndex = 27;
pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE; pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE;
pub const MaxNominatorRewardedPerValidator: u32 = 64; pub const MaxNominatorRewardedPerValidator: u32 = 256;
// last 15 minutes of the last session will be for election. // last 15 minutes of the last session will be for election.
pub const ElectionLookahead: BlockNumber = EPOCH_DURATION_IN_BLOCKS / 16; pub const ElectionLookahead: BlockNumber = EPOCH_DURATION_IN_BLOCKS / 16;
pub const MaxIterations: u32 = 10; pub const MaxIterations: u32 = 10;
...@@ -361,7 +361,7 @@ impl pallet_staking::Trait for Runtime { ...@@ -361,7 +361,7 @@ impl pallet_staking::Trait for Runtime {
type UnsignedPriority = StakingUnsignedPriority; type UnsignedPriority = StakingUnsignedPriority;
type MaxIterations = MaxIterations; type MaxIterations = MaxIterations;
type MinSolutionScoreBump = MinSolutionScoreBump; type MinSolutionScoreBump = MinSolutionScoreBump;
type WeightInfo = (); type WeightInfo = weights::pallet_staking::WeightInfo;
} }
parameter_types! { parameter_types! {
......
...@@ -20,6 +20,7 @@ pub mod frame_system; ...@@ -20,6 +20,7 @@ pub mod frame_system;
pub mod pallet_balances; pub mod pallet_balances;
pub mod pallet_collective; pub mod pallet_collective;
pub mod pallet_democracy; pub mod pallet_democracy;
pub mod pallet_staking;
pub mod pallet_timestamp; pub mod pallet_timestamp;
pub mod pallet_utility; pub mod pallet_utility;
pub mod pallet_proxy; pub mod pallet_proxy;
// Copyright (C) 2017-2020 Parity Technologies (UK) Ltd.
// SPDX-License-Identifier: Apache-2.0
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! Default weights of pallet-staking.
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 2.0.0-rc6
#![allow(unused_parens)]
#![allow(unused_imports)]
use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};
pub struct WeightInfo;
impl pallet_staking::WeightInfo for WeightInfo {
fn bond() -> Weight {
(144278000 as Weight)
.saturating_add(DbWeight::get().reads(5 as Weight))
.saturating_add(DbWeight::get().writes(4 as Weight))
}
fn bond_extra() -> Weight {
(110715000 as Weight)
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn unbond() -> Weight {
(99840000 as Weight)
.saturating_add(DbWeight::get().reads(5 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn withdraw_unbonded_update(s: u32, ) -> Weight {
(100728000 as Weight)
.saturating_add((63000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(5 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn withdraw_unbonded_kill(s: u32, ) -> Weight {
(168879000 as Weight)
.saturating_add((6666000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(7 as Weight))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
fn validate() -> Weight {
(35539000 as Weight)
.saturating_add(DbWeight::get().reads(2 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn nominate(n: u32, ) -> Weight {
(48596000 as Weight)
.saturating_add((308000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads(3 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn chill() -> Weight {
(35144000 as Weight)
.saturating_add(DbWeight::get().reads(2 as Weight))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
fn set_payee() -> Weight {
(24255000 as Weight)
.saturating_add(DbWeight::get().reads(1 as Weight))
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn set_controller() -> Weight {
(52294000 as Weight)
.saturating_add(DbWeight::get().reads(3 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn set_validator_count() -> Weight {
(5185000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_no_eras() -> Weight {
(5907000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_new_era() -> Weight {
(5917000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_new_era_always() -> Weight {
(5952000 as Weight)
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn set_invulnerables(v: u32, ) -> Weight {
(6324000 as Weight)
.saturating_add((9000 as Weight).saturating_mul(v as Weight))
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn force_unstake(s: u32, ) -> Weight {
(119691000 as Weight)
.saturating_add((6681000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
fn cancel_deferred_slash(s: u32, ) -> Weight {
(5820201000 as Weight)
.saturating_add((34672000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(1 as Weight))
.saturating_add(DbWeight::get().writes(1 as Weight))
}
fn payout_stakers_dead_controller(n: u32, ) -> Weight {
(0 as Weight)
.saturating_add((92486000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight)))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight)))
}
fn payout_stakers_alive_staked(n: u32, ) -> Weight {
(0 as Weight)
.saturating_add((117324000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight)))
.saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight)))
}
fn rebond(l: u32, ) -> Weight {
(71316000 as Weight)
.saturating_add((142000 as Weight).saturating_mul(l as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(3 as Weight))
}
fn set_history_depth(e: u32, ) -> Weight {
(0 as Weight)
.saturating_add((51901000 as Weight).saturating_mul(e as Weight))
.saturating_add(DbWeight::get().reads(2 as Weight))
.saturating_add(DbWeight::get().writes(4 as Weight))
.saturating_add(DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight)))
}
fn reap_stash(s: u32, ) -> Weight {
(147166000 as Weight)
.saturating_add((6661000 as Weight).saturating_mul(s as Weight))
.saturating_add(DbWeight::get().reads(4 as Weight))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight)))
}
fn new_era(v: u32, n: u32, ) -> Weight {
(0 as Weight)
.saturating_add((1440459000 as Weight).saturating_mul(v as Weight))
.saturating_add((182580000 as Weight).saturating_mul(n as Weight))
.saturating_add(DbWeight::get().reads(10 as Weight))
.saturating_add(DbWeight::get().reads((4 as Weight).saturating_mul(v as Weight)))
.saturating_add(DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight)))
.saturating_add(DbWeight::get().writes(8 as Weight))
.saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight)))
}
fn submit_solution_better(v: u32, n: u32, a: u32, w: u32, ) -> Weight {
(0 as Weight)
.saturating_add((964000 as Weight).saturating_mul(v as Weight))
.saturating_add((432000 as Weight).saturating_mul(n as Weight))
.saturating_add((204294000 as Weight).saturating_mul(a as Weight))
.saturating_add((9546000 as Weight).saturating_mul(w as Weight))
.saturating_add(DbWeight::get().reads(6 as Weight))
.saturating_add(DbWeight::get().reads((4 as Weight).saturating_mul(a as Weight)))
.saturating_add(DbWeight::get().reads((1 as Weight).saturating_mul(w as Weight)))
.saturating_add(DbWeight::get().writes(2 as Weight))
}
}
...@@ -21,10 +21,17 @@ ...@@ -21,10 +21,17 @@
//! weights in Substrate will change. Instead they are supposed to provide //! weights in Substrate will change. Instead they are supposed to provide
//! some sort of indicator that calls we consider important (e.g pallet_balances::transfer) //! some sort of indicator that calls we consider important (e.g pallet_balances::transfer)
//! have not suddenly changed from under us. //! have not suddenly changed from under us.
//!
//! Some of the tests in this crate print insightful logs. Run with:
//!
//! ```
//! $ cargo test -p polkadot-runtime -- --nocapture --test-threads=1
//! ```
use codec::Encode;
use frame_support::{ use frame_support::{
traits::ContainsLengthBound, traits::ContainsLengthBound,
weights::{constants::*, GetDispatchInfo, Weight}, weights::{constants::*, GetDispatchInfo, Weight, DispatchInfo},
}; };
use keyring::AccountKeyring; use keyring::AccountKeyring;
use polkadot_runtime::constants::currency::*; use polkadot_runtime::constants::currency::*;
...@@ -40,10 +47,26 @@ use pallet_treasury::Call as TreasuryCall; ...@@ -40,10 +47,26 @@ use pallet_treasury::Call as TreasuryCall;
type DbWeight = <Runtime as frame_system::Trait>::DbWeight; type DbWeight = <Runtime as frame_system::Trait>::DbWeight;
fn report_portion(name: &'static str, info: DispatchInfo, len: usize) {
let maximum_weight = <Runtime as frame_system::Trait>::MaximumBlockWeight::get();
let fee = sp_io::TestExternalities::new(Default::default()).execute_with(|| {
<pallet_transaction_payment::Module<Runtime>>::compute_fee(len as u32, &info, 0)
});
let portion = info.weight as f64 / maximum_weight as f64;
if portion > 0.5 {
panic!("Weight of some call seem to have exceeded half of the block. Probably something is wrong.");
}
println!("\nCall {} (with default args) takes {} of the block weight, pays {} in fee.", name, portion, fee);
}
#[test] #[test]
fn sanity_check_weight_per_time_constants_are_as_expected() { fn sanity_check_weight_per_time_constants_are_as_expected() {
// These values comes from Substrate, we want to make sure that if it // These values comes from Substrate, we want to make sure that if it
// ever changes we don't accidently break Polkadot // ever changes we don't accidentally break Polkadot
assert_eq!(WEIGHT_PER_SECOND, 1_000_000_000_000); assert_eq!(WEIGHT_PER_SECOND, 1_000_000_000_000);
assert_eq!(WEIGHT_PER_MILLIS, WEIGHT_PER_SECOND / 1000); assert_eq!(WEIGHT_PER_MILLIS, WEIGHT_PER_SECOND / 1000);
assert_eq!(WEIGHT_PER_MICROS, WEIGHT_PER_MILLIS / 1000); assert_eq!(WEIGHT_PER_MICROS, WEIGHT_PER_MILLIS / 1000);
...@@ -54,37 +77,64 @@ fn sanity_check_weight_per_time_constants_are_as_expected() { ...@@ -54,37 +77,64 @@ fn sanity_check_weight_per_time_constants_are_as_expected() {
fn weight_of_staking_bond_is_correct() { fn weight_of_staking_bond_is_correct() {
let controller: AccountId = AccountKeyring::Alice.into(); let controller: AccountId = AccountKeyring::Alice.into();
// #[weight = 67 * WEIGHT_PER_MICROS + T::DbWeight::get().reads_writes(5, 4)] // (144278000 as Weight)
let expected_weight = 67 * WEIGHT_PER_MICROS + (DbWeight::get().read * 5) + (DbWeight::get().write * 4); // .saturating_add(DbWeight::get().reads(5 as Weight))
let weight = StakingCall::bond::<Runtime>(controller, 1 * DOLLARS, Default::default()).get_dispatch_info().weight; // .saturating_add(DbWeight::get().writes(4 as Weight))
let expected_weight = 144278000 + (DbWeight::get().read * 5) + (DbWeight::get().write * 4);
let call = StakingCall::bond::<Runtime>(controller, 1 * DOLLARS, Default::default());
let info = call.get_dispatch_info();
assert_eq!(weight, expected_weight); assert_eq!(info.weight, expected_weight);
report_portion("staking_bond", info, call.encode().len())
} }
#[test] #[test]
fn weight_of_staking_validate_is_correct() { fn weight_of_staking_validate_is_correct() {
// #[weight = 17 * WEIGHT_PER_MICROS + T::DbWeight::get().reads_writes(2, 2)] // (35539000 as Weight)
let expected_weight = 17 * WEIGHT_PER_MICROS + (DbWeight::get().read * 2) + (DbWeight::get().write * 2); // .saturating_add(DbWeight::get().reads(2 as Weight))
let weight = StakingCall::validate::<Runtime>(Default::default()).get_dispatch_info().weight; // .saturating_add(DbWeight::get().writes(2 as Weight))
let expected_weight = 35539000 + (DbWeight::get().read * 2) + (DbWeight::get().write * 2);
assert_eq!(weight, expected_weight); let call = StakingCall::validate::<Runtime>(Default::default());
let info = call.get_dispatch_info();
assert_eq!(info.weight, expected_weight);
report_portion("staking_validate", info, call.encode().len())
} }
#[test] #[test]
fn weight_of_staking_nominate_is_correct() { fn weight_of_staking_nominate_is_correct() {
let targets: Vec<AccountId> = vec![Default::default(), Default::default(), Default::default()]; let targets: Vec<AccountId> = vec![Default::default(), Default::default(), Default::default()];
// #[weight = T::DbWeight::get().reads_writes(3, 2) // (48596000 as Weight)
// .saturating_add(22 * WEIGHT_PER_MICROS) // .saturating_add((308000 as Weight).saturating_mul(n as Weight))
// .saturating_add((360 * WEIGHT_PER_NANOS).saturating_mul(targets.len() as Weight)) // .saturating_add(DbWeight::get().reads(3 as Weight))
// ] // .saturating_add(DbWeight::get().writes(2 as Weight))
let db_weight = (DbWeight::get().read * 3) + (DbWeight::get().write * 2); let db_weight = (DbWeight::get().read * 3) + (DbWeight::get().write * 2);
let targets_weight = (360 * WEIGHT_PER_NANOS).saturating_mul(targets.len() as Weight); let targets_weight = (308 * WEIGHT_PER_NANOS).saturating_mul(targets.len() as Weight);
let expected_weight = db_weight.saturating_add(22 * WEIGHT_PER_MICROS).saturating_add(targets_weight); let expected_weight = db_weight.saturating_add(48596000).saturating_add(targets_weight);
let weight = StakingCall::nominate::<Runtime>(targets).get_dispatch_info().weight; let call = StakingCall::nominate::<Runtime>(targets);
let info = call.get_dispatch_info();
assert_eq!(weight, expected_weight); assert_eq!(info.weight, expected_weight);
report_portion("staking_nominate", info, call.encode().len())
}
#[test]
fn weight_of_staking_payout_staker_is_correct() {
// (0 as Weight)
// .saturating_add((117324000 as Weight).saturating_mul(n as Weight))
// .saturating_add(DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight)))
// .saturating_add(DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight)))
let call = StakingCall::payout_stakers::<Runtime>(Default::default(), 0u32);
let info = call.get_dispatch_info();
let n = <Runtime as pallet_staking::Trait>::MaxNominatorRewardedPerValidator::get() as Weight;
let mut expected_weight = (117324000 as Weight).saturating_mul(n as Weight);
expected_weight += (DbWeight::get().read * 5 * n) + (DbWeight::get().write * 3 * n);
assert_eq!(info.weight, expected_weight);
report_portion("staking_payout_stakers", info, call.encode().len())
} }
#[test] #[test]
......