mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 18:07:58 +00:00
Update System Weights (#5888)
* Update system weights * Use maximum block weight for scheduler * Update offences to use full block * Move weight inside if statement * Add one read to offences `on_initialize` * Delete factory test * Revert "Delete factory test" This reverts commit 8f95aacd63a028ef1b415185b45367b4140d86fd. * Revert "Add one read to offences `on_initialize`" This reverts commit 7df7ebc73625ed79b14086f13c247d4058ee87d6. * Revert "Move weight inside if statement" This reverts commit 87277d07913a7d1868eeee85ef4673f51ee4013b. * Revert "Update offences to use full block" This reverts commit 0bbe0ce18e9419b032157f7d37dea6481078cdc0. * Use scheduler in Sudo * Apply suggestions from code review Co-authored-by: Alexander Popiak <alexander.popiak@parity.io> * Revert "Use scheduler in Sudo" This reverts commit 95bd2768dfea100bdf682cf4fe6c0f46e8e1f66e. * remove max extrinsic weight (it does nothing useful) * fix tests * introduce `sudo_unchecked_weight` * bump spec version * scheduler 80 percent of maximum * Update `set_changes_trie_config` weight * Update bin/node/runtime/src/lib.rs * Update frame/democracy/src/tests.rs * Update tests.rs * update based on feedback Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
This commit is contained in:
@@ -513,11 +513,14 @@ mod tests {
|
||||
impl logger::Trait for Test {
|
||||
type Event = ();
|
||||
}
|
||||
parameter_types! {
|
||||
pub const MaximumSchedulerWeight: Weight = Perbill::from_percent(80) * MaximumBlockWeight::get();
|
||||
}
|
||||
impl Trait for Test {
|
||||
type Event = ();
|
||||
type Origin = Origin;
|
||||
type Call = Call;
|
||||
type MaximumWeight = MaximumBlockWeight;
|
||||
type MaximumWeight = MaximumSchedulerWeight;
|
||||
}
|
||||
type System = system::Module<Test>;
|
||||
type Logger = logger::Module<Test>;
|
||||
@@ -611,8 +614,8 @@ mod tests {
|
||||
#[test]
|
||||
fn scheduler_respects_weight_limits() {
|
||||
new_test_ext().execute_with(|| {
|
||||
Scheduler::do_schedule(4, None, 127, Call::Logger(logger::Call::log(42, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 127, Call::Logger(logger::Call::log(69, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 127, Call::Logger(logger::Call::log(42, MaximumSchedulerWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 127, Call::Logger(logger::Call::log(69, MaximumSchedulerWeight::get() / 2)));
|
||||
// 69 and 42 do not fit together
|
||||
run_to_block(4);
|
||||
assert_eq!(logger::log(), vec![42u32]);
|
||||
@@ -624,8 +627,8 @@ mod tests {
|
||||
#[test]
|
||||
fn scheduler_respects_hard_deadlines_more() {
|
||||
new_test_ext().execute_with(|| {
|
||||
Scheduler::do_schedule(4, None, 0, Call::Logger(logger::Call::log(42, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 0, Call::Logger(logger::Call::log(69, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 0, Call::Logger(logger::Call::log(42, MaximumSchedulerWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 0, Call::Logger(logger::Call::log(69, MaximumSchedulerWeight::get() / 2)));
|
||||
// With base weights, 69 and 42 should not fit together, but do because of hard deadlines
|
||||
run_to_block(4);
|
||||
assert_eq!(logger::log(), vec![42u32, 69u32]);
|
||||
@@ -635,8 +638,8 @@ mod tests {
|
||||
#[test]
|
||||
fn scheduler_respects_priority_ordering() {
|
||||
new_test_ext().execute_with(|| {
|
||||
Scheduler::do_schedule(4, None, 1, Call::Logger(logger::Call::log(42, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 0, Call::Logger(logger::Call::log(69, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 1, Call::Logger(logger::Call::log(42, MaximumSchedulerWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 0, Call::Logger(logger::Call::log(69, MaximumSchedulerWeight::get() / 2)));
|
||||
run_to_block(4);
|
||||
assert_eq!(logger::log(), vec![69u32, 42u32]);
|
||||
});
|
||||
@@ -645,9 +648,9 @@ mod tests {
|
||||
#[test]
|
||||
fn scheduler_respects_priority_ordering_with_soft_deadlines() {
|
||||
new_test_ext().execute_with(|| {
|
||||
Scheduler::do_schedule(4, None, 255, Call::Logger(logger::Call::log(42, MaximumBlockWeight::get() / 3)));
|
||||
Scheduler::do_schedule(4, None, 127, Call::Logger(logger::Call::log(69, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 126, Call::Logger(logger::Call::log(2600, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 255, Call::Logger(logger::Call::log(42, MaximumSchedulerWeight::get() / 3)));
|
||||
Scheduler::do_schedule(4, None, 127, Call::Logger(logger::Call::log(69, MaximumSchedulerWeight::get() / 2)));
|
||||
Scheduler::do_schedule(4, None, 126, Call::Logger(logger::Call::log(2600, MaximumSchedulerWeight::get() / 2)));
|
||||
|
||||
// 2600 does not fit with 69 or 42, but has higher priority, so will go through
|
||||
run_to_block(4);
|
||||
@@ -667,29 +670,29 @@ mod tests {
|
||||
let periodic_multiplier = <Test as frame_system::Trait>::DbWeight::get().reads_writes(1, 1);
|
||||
|
||||
// Named
|
||||
assert_ok!(Scheduler::do_schedule_named(1u32.encode(), 1, None, 255, Call::Logger(logger::Call::log(3, MaximumBlockWeight::get() / 3))));
|
||||
assert_ok!(Scheduler::do_schedule_named(1u32.encode(), 1, None, 255, Call::Logger(logger::Call::log(3, MaximumSchedulerWeight::get() / 3))));
|
||||
// Anon Periodic
|
||||
Scheduler::do_schedule(1, Some((1000, 3)), 128, Call::Logger(logger::Call::log(42, MaximumBlockWeight::get() / 3)));
|
||||
Scheduler::do_schedule(1, Some((1000, 3)), 128, Call::Logger(logger::Call::log(42, MaximumSchedulerWeight::get() / 3)));
|
||||
// Anon
|
||||
Scheduler::do_schedule(1, None, 127, Call::Logger(logger::Call::log(69, MaximumBlockWeight::get() / 2)));
|
||||
Scheduler::do_schedule(1, None, 127, Call::Logger(logger::Call::log(69, MaximumSchedulerWeight::get() / 2)));
|
||||
// Named Periodic
|
||||
assert_ok!(Scheduler::do_schedule_named(2u32.encode(), 1, Some((1000, 3)), 126, Call::Logger(logger::Call::log(2600, MaximumBlockWeight::get() / 2))));
|
||||
assert_ok!(Scheduler::do_schedule_named(2u32.encode(), 1, Some((1000, 3)), 126, Call::Logger(logger::Call::log(2600, MaximumSchedulerWeight::get() / 2))));
|
||||
|
||||
// Will include the named periodic only
|
||||
let actual_weight = Scheduler::on_initialize(1);
|
||||
let call_weight = MaximumBlockWeight::get() / 2;
|
||||
let call_weight = MaximumSchedulerWeight::get() / 2;
|
||||
assert_eq!(actual_weight, call_weight + base_weight + base_multiplier + named_multiplier + periodic_multiplier);
|
||||
assert_eq!(logger::log(), vec![2600u32]);
|
||||
|
||||
// Will include anon and anon periodic
|
||||
let actual_weight = Scheduler::on_initialize(2);
|
||||
let call_weight = MaximumBlockWeight::get() / 2 + MaximumBlockWeight::get() / 3;
|
||||
let call_weight = MaximumSchedulerWeight::get() / 2 + MaximumSchedulerWeight::get() / 3;
|
||||
assert_eq!(actual_weight, call_weight + base_weight + base_multiplier * 2 + periodic_multiplier);
|
||||
assert_eq!(logger::log(), vec![2600u32, 69u32, 42u32]);
|
||||
|
||||
// Will include named only
|
||||
let actual_weight = Scheduler::on_initialize(3);
|
||||
let call_weight = MaximumBlockWeight::get() / 3;
|
||||
let call_weight = MaximumSchedulerWeight::get() / 3;
|
||||
assert_eq!(actual_weight, call_weight + base_weight + base_multiplier + named_multiplier);
|
||||
assert_eq!(logger::log(), vec![2600u32, 69u32, 42u32, 3u32]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user