Skip to content
Snippets Groups Projects
Commit 08fae8df authored by Benjamin Gallois's avatar Benjamin Gallois Committed by Hugo Trentesaux
Browse files

Fix #166 membership benchmark fail (!221)

* fix benchmarking revoke_membership

* fix #166
parent b6e6c5dc
No related branches found
No related tags found
1 merge request!221Fix #166
Pipeline #35105 waiting for manual action
...@@ -36,6 +36,7 @@ benchmarks_instance_pallet! { ...@@ -36,6 +36,7 @@ benchmarks_instance_pallet! {
where_clause { where_clause {
where where
T::IdtyId: From<u32>, T::IdtyId: From<u32>,
<T as frame_system::Config>::BlockNumber: From<u32>,
} }
// claim membership // claim membership
...@@ -66,6 +67,7 @@ benchmarks_instance_pallet! { ...@@ -66,6 +67,7 @@ benchmarks_instance_pallet! {
let idty: T::IdtyId = 3.into(); let idty: T::IdtyId = 3.into();
let caller: T::AccountId = T::AccountIdOf::convert(idty).unwrap(); let caller: T::AccountId = T::AccountIdOf::convert(idty).unwrap();
let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into(); let caller_origin: <T as frame_system::Config>::RuntimeOrigin = RawOrigin::Signed(caller.clone()).into();
frame_system::pallet::Pallet::<T>::set_block_number(10_000_000.into()); // Arbitrarily high, to be in the worst case of wot instance.
}: _<T::RuntimeOrigin>(caller_origin) }: _<T::RuntimeOrigin>(caller_origin)
verify { verify {
assert_has_event::<T, I>(Event::<T, I>::MembershipRemoved{member: idty, reason: MembershipRemovalReason::Revoked}.into()); assert_has_event::<T, I>(Event::<T, I>::MembershipRemoved{member: idty, reason: MembershipRemovalReason::Revoked}.into());
...@@ -76,18 +78,22 @@ benchmarks_instance_pallet! { ...@@ -76,18 +78,22 @@ benchmarks_instance_pallet! {
}: {Pallet::<T, I>::on_initialize(BlockNumberFor::<T>::zero());} }: {Pallet::<T, I>::on_initialize(BlockNumberFor::<T>::zero());}
expire_memberships { expire_memberships {
let i in 0..1024; let i in 0..3; // Limited by the number of validators
// Arbitrarily high, to be in the worst case of wot instance,
// this will overcount the weight in hooks see https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/167
let block_number: BlockNumberFor::<T> = 10_000_000.into();
frame_system::pallet::Pallet::<T>::set_block_number(block_number);
let mut idties: Vec<T::IdtyId> = Vec::new(); let mut idties: Vec<T::IdtyId> = Vec::new();
for j in 0..i { for j in 1..i+1 {
let j: T::IdtyId = j.into(); let j: T::IdtyId = j.into();
Membership::<T, I>::insert(j, MembershipData::<T::BlockNumber>::default()); Membership::<T, I>::insert(j, MembershipData::<T::BlockNumber>::default());
idties.push(j); idties.push(j);
} }
MembershipsExpireOn::<T, I>::insert(BlockNumberFor::<T>::zero(), idties); MembershipsExpireOn::<T, I>::insert(block_number, idties);
assert_eq!(MembershipsExpireOn::<T, I>::get(BlockNumberFor::<T>::zero()).len(), i as usize); assert_eq!(MembershipsExpireOn::<T, I>::get(block_number).len(), i as usize);
}: {Pallet::<T, I>::expire_memberships(BlockNumberFor::<T>::zero());} }: {Pallet::<T, I>::expire_memberships(block_number);}
verify { verify {
assert_eq!(MembershipsExpireOn::<T, I>::get(BlockNumberFor::<T>::zero()).len(), 0_usize); assert_eq!(MembershipsExpireOn::<T, I>::get(block_number).len(), 0_usize);
} }
impl_benchmark_test_suite!( impl_benchmark_test_suite!(
......
...@@ -308,7 +308,7 @@ pub mod pallet { ...@@ -308,7 +308,7 @@ pub mod pallet {
for idty_id in MembershipsExpireOn::<T, I>::take(block_number) { for idty_id in MembershipsExpireOn::<T, I>::take(block_number) {
// remove membership (take) // remove membership (take)
Self::do_remove_membership(idty_id, MembershipRemovalReason::Expired); Self::do_remove_membership(idty_id, MembershipRemovalReason::Expired);
expired_idty_count = 0; expired_idty_count += 1;
} }
T::WeightInfo::expire_memberships(expired_idty_count) T::WeightInfo::expire_memberships(expired_idty_count)
} }
......
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