use clap3 instead of structopt (#10632)

* use clap3 instead of structopt

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* format

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* update ss58-registry and revert some nits

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Fix clippy and doc

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* update clap to 3.0.7

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Apply review suggestions

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* remove useless option long name

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* cargo fmt

Signed-off-by: koushiro <koushiro.cqx@gmail.com>
This commit is contained in:
Qinxuan Chen
2022-01-25 00:28:46 +08:00
committed by GitHub
parent d1ff02d31e
commit e327b734bc
66 changed files with 660 additions and 768 deletions
+4 -12
View File
@@ -21,10 +21,7 @@ scale-info = { version = "1.0", default-features = false, features = ["derive"]
log = { version = "0.4.11", default-features = false }
serde = { version = "1.0.132", optional = true, features = ["derive"] }
byteorder = { version = "1.3.2", default-features = false }
primitive-types = { version = "0.10.1", default-features = false, features = [
"codec",
"scale-info"
] }
primitive-types = { version = "0.10.1", default-features = false, features = ["codec", "scale-info"] }
impl-serde = { version = "0.3.0", optional = true }
wasmi = { version = "0.9.1", optional = true }
hash-db = { version = "0.15.2", default-features = false }
@@ -43,19 +40,14 @@ sp-std = { version = "4.0.0", default-features = false, path = "../std" }
sp-debug-derive = { version = "4.0.0", default-features = false, path = "../debug-derive" }
sp-storage = { version = "4.0.0", default-features = false, path = "../storage" }
sp-externalities = { version = "0.10.0", optional = true, path = "../externalities" }
parity-util-mem = { version = "0.10.2", default-features = false, features = [
"primitive-types",
] }
parity-util-mem = { version = "0.10.2", default-features = false, features = ["primitive-types"] }
futures = { version = "0.3.1", optional = true }
dyn-clonable = { version = "0.9.0", optional = true }
thiserror = { version = "1.0.30", optional = true }
bitflags = "1.3"
# full crypto
ed25519-dalek = { version = "1.0.1", default-features = false, features = [
"u64_backend",
"alloc",
], optional = true }
ed25519-dalek = { version = "1.0.1", default-features = false, features = ["u64_backend", "alloc"], optional = true }
blake2-rfc = { version = "0.2.18", default-features = false, optional = true }
tiny-keccak = { version = "2.0.1", features = ["keccak"], optional = true }
schnorrkel = { version = "0.9.1", features = [
@@ -67,7 +59,7 @@ hex = { version = "0.4", default-features = false, optional = true }
twox-hash = { version = "1.6.2", default-features = false, optional = true }
libsecp256k1 = { version = "0.7", default-features = false, features = ["hmac", "static-context"], optional = true }
merlin = { version = "2.0", default-features = false, optional = true }
ss58-registry = { version = "1.10.0", default-features = false }
ss58-registry = { version = "1.11.0", default-features = false }
sp-core-hashing = { version = "4.0.0", path = "./hashing", default-features = false, optional = true }
sp-runtime-interface = { version = "4.1.0-dev", default-features = false, path = "../runtime-interface" }
@@ -14,13 +14,14 @@ publish = false
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
clap = { version = "3.0", features = ["derive"] }
honggfuzz = "0.5"
rand = { version = "0.8", features = ["std", "small_rng"] }
codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] }
scale-info = { version = "1.0", default-features = false, features = ["derive"] }
honggfuzz = "0.5"
rand = { version = "0.7.3", features = ["std", "small_rng"] }
sp-npos-elections = { version = "4.0.0-dev", path = ".." }
sp-runtime = { version = "4.1.0-dev", path = "../../runtime" }
structopt = "0.3.25"
[[bin]]
name = "reduce"
@@ -68,7 +68,7 @@ pub fn generate_random_npos_inputs(
// always generate a sensible desired number of candidates: elections are uninteresting if we
// desire 0 candidates, or a number of candidates >= the actual number of candidates present
let rounds = rng.gen_range(1, candidate_count);
let rounds = rng.gen_range(1..candidate_count);
// candidates are easy: just a completely random set of IDs
let mut candidates: Vec<AccountId> = Vec::with_capacity(candidate_count);
@@ -95,7 +95,7 @@ pub fn generate_random_npos_inputs(
let vote_weight = rng.gen();
// it's not interesting if a voter chooses 0 or all candidates, so rule those cases out.
let n_candidates_chosen = rng.gen_range(1, candidates.len());
let n_candidates_chosen = rng.gen_range(1..candidates.len());
let mut chosen_candidates = Vec::with_capacity(n_candidates_chosen);
chosen_candidates.extend(candidates.choose_multiple(&mut rng, n_candidates_chosen));
@@ -132,25 +132,25 @@ pub fn generate_random_npos_result(
(1..=target_count).for_each(|acc| {
candidates.push(acc);
let stake_var = rng.gen_range(ed, 100 * ed);
let stake_var = rng.gen_range(ed..100 * ed);
stake_of.insert(acc, base_stake + stake_var);
});
let mut voters = Vec::with_capacity(voter_count as usize);
(prefix..=(prefix + voter_count)).for_each(|acc| {
let edge_per_this_voter = rng.gen_range(1, candidates.len());
let edge_per_this_voter = rng.gen_range(1..candidates.len());
// all possible targets
let mut all_targets = candidates.clone();
// we remove and pop into `targets` `edge_per_this_voter` times.
let targets = (0..edge_per_this_voter)
.map(|_| {
let upper = all_targets.len() - 1;
let idx = rng.gen_range(0, upper);
let idx = rng.gen_range(0..upper);
all_targets.remove(idx)
})
.collect::<Vec<AccountId>>();
let stake_var = rng.gen_range(ed, 100 * ed);
let stake_var = rng.gen_range(ed..100 * ed);
let stake = base_stake + stake_var;
stake_of.insert(acc, stake);
voters.push((acc, stake, targets));
@@ -42,7 +42,7 @@
use honggfuzz::fuzz;
#[cfg(not(fuzzing))]
use structopt::StructOpt;
use clap::Parser;
mod common;
use common::{generate_random_npos_inputs, to_range};
@@ -67,24 +67,25 @@ fn main() {
}
#[cfg(not(fuzzing))]
#[derive(Debug, StructOpt)]
#[derive(Debug, Parser)]
#[clap(author, version, about)]
struct Opt {
/// How many candidates participate in this election
#[structopt(short, long)]
#[clap(short, long)]
candidates: Option<usize>,
/// How many voters participate in this election
#[structopt(short, long)]
#[clap(short, long)]
voters: Option<usize>,
/// Random seed to use in this election
#[structopt(long)]
#[clap(long)]
seed: Option<u64>,
}
#[cfg(not(fuzzing))]
fn main() {
let opt = Opt::from_args();
let opt = Opt::parse();
// candidates and voters by default use the maxima, which turn out to be one less than
// the constant.
iteration(
@@ -79,8 +79,7 @@ fn generate_random_phragmen_assignment(
let mut targets_to_chose_from = all_targets.clone();
let targets_to_chose = if edge_per_voter_var > 0 {
rng.gen_range(
avg_edge_per_voter - edge_per_voter_var,
avg_edge_per_voter + edge_per_voter_var,
avg_edge_per_voter - edge_per_voter_var..avg_edge_per_voter + edge_per_voter_var,
)
} else {
avg_edge_per_voter
@@ -89,11 +88,11 @@ fn generate_random_phragmen_assignment(
let distribution = (0..targets_to_chose)
.map(|_| {
let target =
targets_to_chose_from.remove(rng.gen_range(0, targets_to_chose_from.len()));
targets_to_chose_from.remove(rng.gen_range(0..targets_to_chose_from.len()));
if winners.iter().all(|w| *w != target) {
winners.push(target.clone());
}
(target, rng.gen_range(1 * KSM, 100 * KSM))
(target, rng.gen_range(1 * KSM..100 * KSM))
})
.collect::<Vec<(AccountId, ExtendedBalance)>>();