From a079be3e642a1b6f15d16bca2cd7331d88587f32 Mon Sep 17 00:00:00 2001 From: Robert Habermeier <rphmeier@gmail.com> Date: Tue, 14 Aug 2018 14:27:34 +0200 Subject: [PATCH] Update some outdated slashing tests in runtime (#565) * fix session slashing test * fix staking slashing tests --- .../substrate/runtime/session/src/lib.rs | 21 ++++--------------- .../substrate/runtime/staking/src/tests.rs | 8 +++---- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/substrate/substrate/runtime/session/src/lib.rs b/substrate/substrate/runtime/session/src/lib.rs index 06368d651e2..9870b81f9a3 100644 --- a/substrate/substrate/runtime/session/src/lib.rs +++ b/substrate/substrate/runtime/session/src/lib.rs @@ -232,17 +232,6 @@ impl<T: Trait> Module<T> { let block_number = <system::Module<T>>::block_number(); length_minus_1 - (block_number - Self::last_length_change() + length_minus_1) % length } - - /// Returns `true` if the current validator set is taking took long to validate blocks. - pub fn broken_validation() -> bool { - let now = <timestamp::Module<T>>::get(); - let block_period = <timestamp::Module<T>>::block_period(); - let blocks_remaining = Self::blocks_remaining(); - let blocks_remaining = <T::Moment as As<T::BlockNumber>>::sa(blocks_remaining); - now + blocks_remaining * block_period > - Self::current_start() + Self::ideal_session_duration() * - (T::Moment::sa(100) + Self::broken_percent_late()) / T::Moment::sa(100) - } } impl<T: Trait> Executable for Module<T> { @@ -358,7 +347,7 @@ mod tests { } #[test] - fn should_identify_broken_validation() { + fn should_rotate_on_bad_validators() { with_externalities(&mut new_test_ext(), || { System::set_block_number(2); assert_eq!(Session::blocks_remaining(), 0); @@ -370,18 +359,16 @@ mod tests { assert_eq!(Session::current_start(), 0); assert_eq!(Session::ideal_session_duration(), 15); // ideal end = 0 + 15 * 3 = 15 - // broken_limit = 15 * 130 / 100 = 19 System::set_block_number(3); assert_eq!(Session::blocks_remaining(), 2); - Timestamp::set_timestamp(9); // earliest end = 9 + 2 * 5 = 19; OK. - assert!(!Session::broken_validation()); + Timestamp::set_timestamp(9); // no bad validators. session not rotated. Session::check_rotate_session(); System::set_block_number(4); + ::system::ExtrinsicIndex::<Test>::put(1); assert_eq!(Session::blocks_remaining(), 1); - Timestamp::set_timestamp(15); // another 1 second late. earliest end = 15 + 1 * 5 = 20; broken. - assert!(Session::broken_validation()); + Session::note_offline(&0, vec![1]).unwrap(); // bad validator -> session rotate Session::check_rotate_session(); assert_eq!(Session::current_index(), 2); }); diff --git a/substrate/substrate/runtime/staking/src/tests.rs b/substrate/substrate/runtime/staking/src/tests.rs index ef9fa4faa51..36549d534f7 100644 --- a/substrate/substrate/runtime/staking/src/tests.rs +++ b/substrate/substrate/runtime/staking/src/tests.rs @@ -87,7 +87,8 @@ fn slashing_should_work() { assert_eq!(Staking::voting_balance(&10), 21); System::set_block_number(7); - Timestamp::set_timestamp(100); // way too late - early exit. + ::system::ExtrinsicIndex::<Test>::put(1); + Session::note_offline(&0, vec![0]).unwrap(); // val 10 reported bad. Session::check_rotate_session(); assert_eq!(Staking::current_era(), 1); assert_eq!(Session::current_index(), 3); @@ -310,9 +311,9 @@ fn nominating_slashes_should_work() { assert_eq!(Staking::voting_balance(&4), 40); System::set_block_number(5); - Timestamp::set_timestamp(100); // late + ::system::ExtrinsicIndex::<Test>::put(1); + Session::note_offline(&0, vec![0, 1]).unwrap(); // both get reported offline. assert_eq!(Session::blocks_remaining(), 1); - assert!(Session::broken_validation()); Session::check_rotate_session(); assert_eq!(Staking::current_era(), 2); @@ -388,7 +389,6 @@ fn staking_eras_work() { // Block 6: No change. System::set_block_number(6); - assert!(!Session::broken_validation()); Session::check_rotate_session(); assert_eq!(Session::current_index(), 6); assert_eq!(Staking::sessions_per_era(), 3); -- GitLab