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

fix #219

parent 656963a0
No related branches found
No related tags found
No related merge requests found
Pipeline #36567 failed
......@@ -163,7 +163,13 @@ mod benchmarks {
#[extrinsic_call]
_(RawOrigin::Root, idty);
assert_has_event::<T>(Event::<T>::EvaluatedValid { idty_index: idty }.into());
assert_has_event::<T>(
Event::<T>::EvaluatedValid {
idty_index: idty,
distance: Perbill::one(),
}
.into(),
);
}
#[benchmark]
......@@ -211,7 +217,13 @@ mod benchmarks {
Pallet::<T>::do_evaluation(0);
}
assert_has_event::<T>(Event::<T>::EvaluatedValid { idty_index: idty }.into());
assert_has_event::<T>(
Event::<T>::EvaluatedValid {
idty_index: idty,
distance: Perbill::one(),
}
.into(),
);
Ok(())
}
......@@ -249,7 +261,13 @@ mod benchmarks {
Pallet::<T>::do_evaluation(0);
}
assert_has_event::<T>(Event::<T>::EvaluatedInvalid { idty_index: idty }.into());
assert_has_event::<T>(
Event::<T>::EvaluatedInvalid {
idty_index: idty,
distance: Perbill::zero(),
}
.into(),
);
Ok(())
}
......
......@@ -172,9 +172,15 @@ pub mod pallet {
who: T::AccountId,
},
/// Distance rule was found valid.
EvaluatedValid { idty_index: T::IdtyIndex },
EvaluatedValid {
idty_index: T::IdtyIndex,
distance: Perbill,
},
/// Distance rule was found invalid.
EvaluatedInvalid { idty_index: T::IdtyIndex },
EvaluatedInvalid {
idty_index: T::IdtyIndex,
distance: Perbill,
},
}
// ERRORS //
......@@ -313,7 +319,7 @@ pub mod pallet {
) -> DispatchResult {
ensure_root(origin)?;
Self::do_valid_distance_status(identity);
Self::do_valid_distance_status(identity, Perbill::one());
Ok(())
}
}
......@@ -509,11 +515,17 @@ pub mod pallet {
}
/// Set the distance status using IdtyIndex and AccountId
pub fn do_valid_distance_status(idty: <T as pallet_identity::Config>::IdtyIndex) {
pub fn do_valid_distance_status(
idty: <T as pallet_identity::Config>::IdtyIndex,
distance: Perbill,
) {
// callback
T::OnValidDistanceStatus::on_valid_distance_status(idty);
// deposit event
Self::deposit_event(Event::EvaluatedValid { idty_index: idty });
Self::deposit_event(Event::EvaluatedValid {
idty_index: idty,
distance,
});
}
pub fn do_evaluation(index: u32) -> Weight {
......@@ -532,15 +544,16 @@ pub mod pallet {
for (idty, median_acc) in current_pool.evaluations.into_iter() {
// distance result
let mut distance_result: Option<bool> = None;
let mut distance = Perbill::zero();
// get result of the computation
if let Some(median_result) = median_acc.get_median() {
let median = match median_result {
distance = match median_result {
MedianResult::One(m) => m,
MedianResult::Two(m1, m2) => m1 + (m2 - m1) / 2, // Avoid overflow (since max is 1)
};
// update distance result
distance_result = Some(median >= T::MinAccessibleReferees::get());
distance_result = Some(distance >= T::MinAccessibleReferees::get());
}
// take requester and perform unreserve or slash
......@@ -566,7 +579,7 @@ pub mod pallet {
&requester,
<T as Config>::EvaluationPrice::get(),
);
Self::do_valid_distance_status(idty);
Self::do_valid_distance_status(idty, distance);
weight = weight.saturating_add(
<T as pallet::Config>::WeightInfo::do_evaluation_success()
.saturating_sub(
......@@ -580,7 +593,10 @@ pub mod pallet {
&requester,
<T as Config>::EvaluationPrice::get(),
);
Self::deposit_event(Event::EvaluatedInvalid { idty_index: idty });
Self::deposit_event(Event::EvaluatedInvalid {
idty_index: idty,
distance,
});
weight = weight.saturating_add(
<T as pallet::Config>::WeightInfo::do_evaluation_failure()
.saturating_sub(
......
......@@ -97,7 +97,10 @@ macro_rules! impl_benchmark_setup_handler {
<T as pallet_certification::Config>::IdtyIndex: From<u32>,
{
fn force_valid_distance_status(idty_id: &IdtyIndex) -> () {
let _ = pallet_distance::Pallet::<T>::do_valid_distance_status(*idty_id);
let _ = pallet_distance::Pallet::<T>::do_valid_distance_status(
*idty_id,
sp_runtime::Perbill::one(),
);
}
fn add_cert(issuer: &IdtyIndex, receiver: &IdtyIndex) {
......
......@@ -373,7 +373,10 @@ fn test_validate_identity_when_claim() {
// Pass 3rd evaluation period
run_to_block(3 * eval_period);
System::assert_has_event(RuntimeEvent::Distance(
pallet_distance::Event::EvaluatedValid { idty_index: 5 },
pallet_distance::Event::EvaluatedValid {
idty_index: 5,
distance: Perbill::one(),
},
));
// eve can not claim her membership manually because it is done automatically
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment