Files
hse-2026/homework/06-membership/tests/src/common.rs
T

44 lines
1.1 KiB
Rust
Raw Normal View History

2026-10-18 22:39:08 +03:00
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
}