Skip to content
Snippets Groups Projects
Commit 1c35dc5d authored by bgallois's avatar bgallois Committed by Hugo Trentesaux
Browse files

fix #219

parent dd58310d
No related branches found
No related tags found
1 merge request!257Fix #219 and #220
...@@ -163,7 +163,13 @@ mod benchmarks { ...@@ -163,7 +163,13 @@ mod benchmarks {
#[extrinsic_call] #[extrinsic_call]
_(RawOrigin::Root, idty); _(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] #[benchmark]
...@@ -211,7 +217,13 @@ mod benchmarks { ...@@ -211,7 +217,13 @@ mod benchmarks {
Pallet::<T>::do_evaluation(0); 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(()) Ok(())
} }
...@@ -249,7 +261,13 @@ mod benchmarks { ...@@ -249,7 +261,13 @@ mod benchmarks {
Pallet::<T>::do_evaluation(0); 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(()) Ok(())
} }
......
...@@ -172,9 +172,15 @@ pub mod pallet { ...@@ -172,9 +172,15 @@ pub mod pallet {
who: T::AccountId, who: T::AccountId,
}, },
/// Distance rule was found valid. /// Distance rule was found valid.
EvaluatedValid { idty_index: T::IdtyIndex }, EvaluatedValid {
idty_index: T::IdtyIndex,
distance: Perbill,
},
/// Distance rule was found invalid. /// Distance rule was found invalid.
EvaluatedInvalid { idty_index: T::IdtyIndex }, EvaluatedInvalid {
idty_index: T::IdtyIndex,
distance: Perbill,
},
} }
// ERRORS // // ERRORS //
...@@ -313,7 +319,7 @@ pub mod pallet { ...@@ -313,7 +319,7 @@ pub mod pallet {
) -> DispatchResult { ) -> DispatchResult {
ensure_root(origin)?; ensure_root(origin)?;
Self::do_valid_distance_status(identity); Self::do_valid_distance_status(identity, Perbill::one());
Ok(()) Ok(())
} }
} }
...@@ -509,11 +515,17 @@ pub mod pallet { ...@@ -509,11 +515,17 @@ pub mod pallet {
} }
/// Set the distance status using IdtyIndex and AccountId /// 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 // callback
T::OnValidDistanceStatus::on_valid_distance_status(idty); T::OnValidDistanceStatus::on_valid_distance_status(idty);
// deposit event // 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 { pub fn do_evaluation(index: u32) -> Weight {
...@@ -532,15 +544,16 @@ pub mod pallet { ...@@ -532,15 +544,16 @@ pub mod pallet {
for (idty, median_acc) in current_pool.evaluations.into_iter() { for (idty, median_acc) in current_pool.evaluations.into_iter() {
// distance result // distance result
let mut distance_result: Option<bool> = None; let mut distance_result: Option<bool> = None;
let mut distance = Perbill::zero();
// get result of the computation // get result of the computation
if let Some(median_result) = median_acc.get_median() { if let Some(median_result) = median_acc.get_median() {
let median = match median_result { distance = match median_result {
MedianResult::One(m) => m, MedianResult::One(m) => m,
MedianResult::Two(m1, m2) => m1 + (m2 - m1) / 2, // Avoid overflow (since max is 1) MedianResult::Two(m1, m2) => m1 + (m2 - m1) / 2, // Avoid overflow (since max is 1)
}; };
// update distance result // update distance result
distance_result = Some(median >= T::MinAccessibleReferees::get()); distance_result = Some(distance >= T::MinAccessibleReferees::get());
} }
// take requester and perform unreserve or slash // take requester and perform unreserve or slash
...@@ -566,7 +579,7 @@ pub mod pallet { ...@@ -566,7 +579,7 @@ pub mod pallet {
&requester, &requester,
<T as Config>::EvaluationPrice::get(), <T as Config>::EvaluationPrice::get(),
); );
Self::do_valid_distance_status(idty); Self::do_valid_distance_status(idty, distance);
weight = weight.saturating_add( weight = weight.saturating_add(
<T as pallet::Config>::WeightInfo::do_evaluation_success() <T as pallet::Config>::WeightInfo::do_evaluation_success()
.saturating_sub( .saturating_sub(
...@@ -580,7 +593,10 @@ pub mod pallet { ...@@ -580,7 +593,10 @@ pub mod pallet {
&requester, &requester,
<T as Config>::EvaluationPrice::get(), <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( weight = weight.saturating_add(
<T as pallet::Config>::WeightInfo::do_evaluation_failure() <T as pallet::Config>::WeightInfo::do_evaluation_failure()
.saturating_sub( .saturating_sub(
......
...@@ -97,7 +97,10 @@ macro_rules! impl_benchmark_setup_handler { ...@@ -97,7 +97,10 @@ macro_rules! impl_benchmark_setup_handler {
<T as pallet_certification::Config>::IdtyIndex: From<u32>, <T as pallet_certification::Config>::IdtyIndex: From<u32>,
{ {
fn force_valid_distance_status(idty_id: &IdtyIndex) -> () { 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) { fn add_cert(issuer: &IdtyIndex, receiver: &IdtyIndex) {
......
...@@ -373,7 +373,10 @@ fn test_validate_identity_when_claim() { ...@@ -373,7 +373,10 @@ fn test_validate_identity_when_claim() {
// Pass 3rd evaluation period // Pass 3rd evaluation period
run_to_block(3 * eval_period); run_to_block(3 * eval_period);
System::assert_has_event(RuntimeEvent::Distance( 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 // 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