mina_node_testing/scenarios/simulation/
small_forever_real_time.rs1use std::time::Duration;
2
3use mina_p2p_messages::v2;
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 SimulationSmallForeverRealTime;
21
22impl SimulationSmallForeverRealTime {
23 pub async fn run(self, mut runner: ClusterRunner<'_>) {
24 let initial_time = redux::Timestamp::global_now();
25 let mut constants = v2::PROTOCOL_CONSTANTS.clone();
26 constants.genesis_state_timestamp =
27 v2::BlockTimeTimeStableV1((u64::from(initial_time) / 1_000_000).into());
28 let genesis_cfg = GenesisConfig::Counts {
29 whales: 1,
30 fish: 2,
31 non_stakers: NonStakers::Count(100),
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: 3,
40 advance_time: RunCfgAdvanceTime::Real,
41 run_until: SimulatorRunUntil::Forever,
42 run_until_timeout: Duration::MAX,
43 recorder: Default::default(),
44 };
45 let mut simulator = Simulator::new(initial_time, cfg);
46 simulator.setup_and_run(&mut runner).await;
47 }
48}