mina_node_testing/simulator/
config.rs

1use 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}