mina_node_testing/scenarios/simulation/
small.rs1use std::time::Duration;
2
3use mina_p2p_messages::v2::{BlockTimeTimeStableV1, PROTOCOL_CONSTANTS};
4use node::transition_frontier::genesis::{GenesisConfig, NonStakers};
5
6use crate::{
7 scenarios::{ClusterRunner, RunCfgAdvanceTime},
8 simulator::{Simulator, SimulatorConfig, SimulatorRunUntil},
9};
10
11#[derive(documented::Documented, Default, Clone, Copy)]
20pub struct SimulationSmall;
21
22impl SimulationSmall {
23 pub async fn run(self, mut runner: ClusterRunner<'_>) {
24 let initial_time = redux::Timestamp::global_now();
25 let mut constants = PROTOCOL_CONSTANTS.clone();
26 constants.genesis_state_timestamp =
27 BlockTimeTimeStableV1((u64::from(initial_time) / 1_000_000).into());
28 let genesis_cfg = GenesisConfig::Counts {
29 whales: 2,
30 fish: 4,
31 non_stakers: NonStakers::None,
32 constants,
33 };
34 let cfg = SimulatorConfig {
35 genesis: genesis_cfg.into(),
36 seed_nodes: 2,
37 normal_nodes: 2,
38 snark_workers: 1,
39 block_producers: 6,
40 advance_time: RunCfgAdvanceTime::Rand(10..=200),
41 run_until: SimulatorRunUntil::Epoch(3),
42 run_until_timeout: Duration::from_secs(30 * 60),
43 recorder: Default::default(),
44 };
45 let mut simulator = Simulator::new(initial_time, cfg);
46 simulator.setup_and_run(&mut runner).await;
47 }
48}