mina_node_testing/simulator/
config.rs1use std::{sync::Arc, time::Duration};
2
3use node::transition_frontier::genesis::GenesisConfig;
4use serde::{Deserialize, Serialize};
5
6use crate::{node::Recorder, scenarios::RunCfgAdvanceTime};
7
8#[derive(Serialize, Deserialize, Debug, Clone)]
9pub struct SimulatorConfig {
10 pub genesis: Arc<GenesisConfig>,
11 pub seed_nodes: usize,
12 pub normal_nodes: usize,
13 pub snark_workers: usize,
14 pub block_producers: usize,
15 #[serde(default)]
16 pub advance_time: RunCfgAdvanceTime,
17 #[serde(default)]
18 pub run_until: SimulatorRunUntil,
19 #[serde(default = "duration_max")]
20 pub run_until_timeout: Duration,
21 #[serde(default)]
22 pub recorder: Recorder,
23}
24
25#[derive(Serialize, Deserialize, Debug, Default, Clone)]
26pub enum SimulatorRunUntil {
27 #[default]
28 Forever,
29 Epoch(u32),
30 BlockchainLength(u32),
31}
32
33fn duration_max() -> Duration {
34 Duration::MAX
35}