-
Notifications
You must be signed in to change notification settings - Fork 9
/
setup.rs
84 lines (73 loc) · 2.71 KB
/
setup.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
use jormungandr_scenario_tests::prepare_command;
use jormungandr_scenario_tests::scenario::Controller;
use jormungandr_scenario_tests::{Context, ProgressBarMode};
use jormungandr_testing_utils::testing::network_builder::Seed;
use std::path::Path;
use std::path::PathBuf;
use std::str::FromStr;
use vit_servicing_station_tests::common::data::ValidVotePlanParameters;
use vitup::builders::QuickVitBackendSettingsBuilder;
use vitup::config::VoteBlockchainTime;
use vitup::scenario::controller::VitController;
pub fn wait_until_folder_contains_all_qrs<P: AsRef<Path>>(qrs_count: usize, folder: P) {
println!("waiting for qr code in: {:?}", folder.as_ref());
loop {
let qrs = std::fs::read_dir(folder.as_ref()).unwrap();
let actual = qrs.into_iter().count();
println!("waiting for qr code in: {}/{}", actual, qrs_count);
if actual >= qrs_count {
break;
}
std::thread::sleep(std::time::Duration::from_secs(5));
}
}
pub fn context(testing_directory: &Path) -> Context {
let jormungandr = prepare_command(PathBuf::from_str("jormungandr").unwrap());
let jcli = prepare_command(PathBuf::from_str("jcli").unwrap());
let seed = Seed::generate(rand::rngs::OsRng);
let generate_documentation = true;
let log_level = "info".to_string();
Context::new(
seed,
jormungandr,
jcli,
Some(testing_directory.to_path_buf()),
generate_documentation,
ProgressBarMode::None,
log_level,
)
}
pub fn vitup_setup_default(
private: bool,
no_of_wallets: usize,
testing_directory: PathBuf,
) -> (VitController, Controller, ValidVotePlanParameters, String) {
let mut quick_setup = QuickVitBackendSettingsBuilder::new();
let vote_timing = VoteBlockchainTime {
vote_start: 0,
tally_start: 20,
tally_end: 21,
slots_per_epoch: 10,
};
quick_setup
.initials_count(no_of_wallets, "1234")
.slot_duration_in_seconds(5)
.vote_timing(vote_timing.into())
.proposals_count(100)
.voting_power(8_000)
.private(private);
vitup_setup(quick_setup, testing_directory)
}
pub fn vitup_setup(
mut quick_setup: QuickVitBackendSettingsBuilder,
mut testing_directory: PathBuf,
) -> (VitController, Controller, ValidVotePlanParameters, String) {
let context = context(&testing_directory);
testing_directory.push(quick_setup.title());
if testing_directory.exists() {
std::fs::remove_dir_all(&testing_directory).unwrap();
}
let fund_name = quick_setup.fund_name();
let (vit_controller, controller, vit_parameters, _) = quick_setup.build(context).unwrap();
(vit_controller, controller, vit_parameters, fund_name)
}