mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-18 03:41:02 +00:00
Abstracts elections-phragmen pallet to use NposSolver (#12588)
* Abstracts elections-phragmen pallet to use NposSolver * Update frame/elections-phragmen/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/elections-phragmen/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * changes the name of the pallet; adds changelog * update changelog * Adds weight testing * Adds log macro_rules * renames elections-phragment dir to elections * weights rename * fixes typo in cargo toml * pre/post solve weight scafolding * refactor do_post_election * refactors into pre and post election solve for independent benchmarking * deconstructs PreElectionResults struct * updates benchmarking pre and post election solve; mock weights * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * addresses PR comments * adds pre_solve and post_sove weights * Adds comments on election pallet id param name change * ".git/.scripts/bench-bot.sh" pallet dev pallet_elections * Finishes pre-post solve weights * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/elections/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Addresses PR comments: no panic in on_init path; nits * Fixes node build * Implements approval voting to use as a `NposSolver` (#13367) * Implements the approval voting methods in sp_npos_elections * fmt * remove unecessary file * comment clarification * re-run weights * fix typo * updates MaxVoters in tests for integrity_tests to pass * Refactors election provider support benchmarks outside its own crate (#13431) * Refactors election provider support benchmarks outside its own crate --------- Co-authored-by: command-bot <> --------- Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: parity-processbot <> Co-authored-by: Ross Bulat <ross@parity.io>
This commit is contained in:
@@ -185,7 +185,7 @@ impl<T: Config> ElectionProvider for OnChainExecution<T> {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::{ElectionProvider, PhragMMS, SequentialPhragmen};
|
||||
use crate::{ApprovalVoting, ElectionProvider, PhragMMS, SequentialPhragmen};
|
||||
use frame_support::{assert_noop, parameter_types, traits::ConstU32};
|
||||
use sp_npos_elections::Support;
|
||||
use sp_runtime::Perbill;
|
||||
@@ -235,6 +235,7 @@ mod tests {
|
||||
|
||||
struct PhragmenParams;
|
||||
struct PhragMMSParams;
|
||||
struct ApprovalVotingParams;
|
||||
|
||||
parameter_types! {
|
||||
pub static MaxWinners: u32 = 10;
|
||||
@@ -261,6 +262,16 @@ mod tests {
|
||||
type TargetsBound = ConstU32<400>;
|
||||
}
|
||||
|
||||
impl Config for ApprovalVotingParams {
|
||||
type System = Runtime;
|
||||
type Solver = ApprovalVoting<AccountId, Perbill>;
|
||||
type DataProvider = mock_data_provider::DataProvider;
|
||||
type WeightInfo = ();
|
||||
type MaxWinners = MaxWinners;
|
||||
type VotersBound = ConstU32<600>;
|
||||
type TargetsBound = ConstU32<400>;
|
||||
}
|
||||
|
||||
mod mock_data_provider {
|
||||
use frame_support::{bounded_vec, traits::ConstU32};
|
||||
|
||||
@@ -333,4 +344,21 @@ mod tests {
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn onchain_approval_voting_works() {
|
||||
sp_io::TestExternalities::new_empty().execute_with(|| {
|
||||
DesiredTargets::set(3);
|
||||
|
||||
// note that the `OnChainExecution::elect` implementation normalizes the vote weights.
|
||||
assert_eq!(
|
||||
<OnChainExecution::<ApprovalVotingParams> as ElectionProvider>::elect().unwrap(),
|
||||
vec![
|
||||
(10, Support { total: 20, voters: vec![(1, 5), (3, 15)] }),
|
||||
(20, Support { total: 15, voters: vec![(1, 5), (2, 10)] }),
|
||||
(30, Support { total: 25, voters: vec![(2, 10), (3, 15)] })
|
||||
]
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user