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