mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 14:37:57 +00:00
Bound Election and Staking by MaxActiveValidators (#12436)
* bounding election provider with kian * multi phase implement bounded election provider * election provider blanket implementation * staking compiles * fix test for election provider support * fmt * fixing epmp tests, does not compile yet * fix epmp tests * fix staking tests * fmt * fix runtime tests * fmt * remove outdated wip tags * add enum error * sort and truncate supports * comment * error when unsupported number of election winners * compiling wip after kian's suggestions * fix TODOs * remove,fix tags * ensure validator count does not exceed maxwinners * clean up * some more clean up and todos * handle too many winners * rename parameter for mock * todo * add sort and truncate rule if there are too many winners * fmt * fail, not swallow emergency result bound not met * remove too many winners resolution as it can be guaranteed to be bounded * fix benchmark * give MaxWinners more contextual name * make ready solution generic over T * kian feedback * fix stuff * Kian's way of solvign this * comment fix * fix compile * remove use of BoundedExecution * fmt * comment out failing integrity test * cap validator count increment to max winners * dont panic * add test for bad data provider * Update frame/staking/src/pallet/impls.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * fix namespace conflict and add test for onchain max winners less than desired targets * defensive unwrap * early convert to bounded vec * fix syntax * fmt * fix doc * fix rustdoc * fmt * fix maxwinner count for benchmarking * add instant election for noelection * fmt * fix compile * pr feedbacks * always error at validator count exceeding max winners * add useful error message * pr comments * import fix * add checked_desired_targets * fmt * fmt * fix rust doc Co-authored-by: parity-processbot <> Co-authored-by: kianenigma <kian@parity.io> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
This commit is contained in:
@@ -5624,3 +5624,57 @@ fn reducing_max_unlocking_chunks_abrupt() {
|
||||
MaxUnlockingChunks::set(2);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn cannot_set_unsupported_validator_count() {
|
||||
ExtBuilder::default().build_and_execute(|| {
|
||||
MaxWinners::set(50);
|
||||
// set validator count works
|
||||
assert_ok!(Staking::set_validator_count(RuntimeOrigin::root(), 30));
|
||||
assert_ok!(Staking::set_validator_count(RuntimeOrigin::root(), 50));
|
||||
// setting validator count above 100 does not work
|
||||
assert_noop!(
|
||||
Staking::set_validator_count(RuntimeOrigin::root(), 51),
|
||||
Error::<Test>::TooManyValidators,
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn increase_validator_count_errors() {
|
||||
ExtBuilder::default().build_and_execute(|| {
|
||||
MaxWinners::set(50);
|
||||
assert_ok!(Staking::set_validator_count(RuntimeOrigin::root(), 40));
|
||||
|
||||
// increase works
|
||||
assert_ok!(Staking::increase_validator_count(RuntimeOrigin::root(), 6));
|
||||
assert_eq!(ValidatorCount::<Test>::get(), 46);
|
||||
|
||||
// errors
|
||||
assert_noop!(
|
||||
Staking::increase_validator_count(RuntimeOrigin::root(), 5),
|
||||
Error::<Test>::TooManyValidators,
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn scale_validator_count_errors() {
|
||||
ExtBuilder::default().build_and_execute(|| {
|
||||
MaxWinners::set(50);
|
||||
assert_ok!(Staking::set_validator_count(RuntimeOrigin::root(), 20));
|
||||
|
||||
// scale value works
|
||||
assert_ok!(Staking::scale_validator_count(
|
||||
RuntimeOrigin::root(),
|
||||
Percent::from_percent(200)
|
||||
));
|
||||
assert_eq!(ValidatorCount::<Test>::get(), 40);
|
||||
|
||||
// errors
|
||||
assert_noop!(
|
||||
Staking::scale_validator_count(RuntimeOrigin::root(), Percent::from_percent(126)),
|
||||
Error::<Test>::TooManyValidators,
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user