Skip to content
Snippets Groups Projects
Unverified Commit 3b47c197 authored by bgallois's avatar bgallois
Browse files

add end2end test grandpa offences

parent 1d19c3a8
No related branches found
No related tags found
1 merge request!216Add end2end test for offences
......@@ -59,6 +59,9 @@ where
{
if !blacklist.contains(&member_id) {
blacklist.push(member_id);
Self::deposit_event(Event::MemberAddedToBlacklist {
member: member_id,
});
add_db_reads_writes(0, 1);
}
Self::insert_out(member_id);
......
......@@ -179,6 +179,8 @@ pub mod pallet {
MemberRemoved { member: T::MemberId },
/// A member has been removed from the blacklist.
MemberRemovedFromBlacklist { member: T::MemberId },
/// A member has been blacklisted.
MemberAddedToBlacklist { member: T::MemberId },
}
// ERRORS //
......
......@@ -1348,3 +1348,47 @@ fn test_imonline_offence() {
));
})
}
#[test]
fn test_grandpa_offence() {
ExtBuilder::new(1, 3, 4).build().execute_with(|| {
run_to_block(1);
let session_index = Session::current_index();
let current_validators = <Runtime as pallet_im_online::Config>::ValidatorSet::validators();
// Construct an offence where all validators (member: 1) are offenders
let mut offenders = current_validators
.into_iter()
.enumerate()
.filter_map(|(_, id)| {
<Runtime as pallet_session::historical::Config>::FullIdentificationOf::convert(
id.clone(),
)
.map(|full_id| (id, full_id))
})
.collect::<Vec<IdentificationTuple<Runtime>>>();
let keys = ImOnline::keys();
let validator_set_count = keys.len() as u32;
let time_slot = pallet_grandpa::TimeSlot {
set_id: 0,
round: 0,
};
let offence = pallet_grandpa::EquivocationOffence {
time_slot,
session_index,
validator_set_count,
offender: offenders.pop().unwrap().into(),
};
let _ = Offences::report_offence(vec![], offence);
// An offence is deposited
System::assert_has_event(RuntimeEvent::Offences(pallet_offences::Event::Offence {
kind: *b"grandpa:equivoca",
timeslot: vec![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}));
// Offenders are punished
System::assert_has_event(RuntimeEvent::AuthorityMembers(
pallet_authority_members::Event::MemberGoOffline { member: 1 },
));
System::assert_has_event(RuntimeEvent::AuthorityMembers(
pallet_authority_members::Event::MemberAddedToBlacklist { member: 1 },
));
})
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment