Add HW 6
This commit is contained in:
1 parent
94c1abb8a3
commit
9abecfdd33
17 files changed
+6001
No files matched your search
@@ -0,0 +1,44 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sugars::boxed;
|
||||
|
||||
use anysystem::python::PyProcessFactory;
|
||||
use anysystem::System;
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct JoinMessage<'a> {
|
||||
pub seed: &'a str,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct LeaveMessage {}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct GetMembersMessage {}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct MembersMessage {
|
||||
pub members: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct TestConfig<'a> {
|
||||
pub process_factory: &'a PyProcessFactory,
|
||||
pub process_count: u32,
|
||||
pub seed: u64,
|
||||
}
|
||||
|
||||
pub fn build_system(config: &TestConfig) -> System {
|
||||
crate::runner::progress(format!("creating simulation: N={}", config.process_count));
|
||||
let mut sys = System::new(config.seed);
|
||||
sys.network().set_delays(0.01, 0.1);
|
||||
for n in 0..config.process_count {
|
||||
// process and node on which it runs have the same name
|
||||
let name = n.to_string();
|
||||
sys.add_node(&name);
|
||||
let clock_skew = sys.gen_range(0.0..10.0);
|
||||
sys.set_node_clock_skew(&name, clock_skew);
|
||||
let process = config.process_factory.build((&name,), config.seed);
|
||||
sys.add_process(&name, boxed!(process), &name);
|
||||
}
|
||||
sys
|
||||
}
|
||||
Reference in new issue
Block a user