mina_node_testing/scenarios/p2p/
pubsub.rs1use std::time::Duration;
2
3use node::ActionKind;
4
5use crate::{
6 hosts,
7 node::RustNodeTestingConfig,
8 scenarios::{ClusterRunner, RunCfg, RunCfgAdvanceTime},
9};
10
11#[derive(documented::Documented, Default, Clone, Copy)]
17pub struct P2pReceiveMessage;
18
19impl P2pReceiveMessage {
20 pub async fn run(self, mut runner: ClusterRunner<'_>) {
21 let config = RustNodeTestingConfig::devnet_default()
22 .initial_peers(hosts::devnet())
23 .initial_time(redux::Timestamp::global_now());
24
25 let retransmitter_mina_rust_node = runner.add_rust_node(config);
26
27 let _ = runner
28 .run(
29 RunCfg::default()
30 .timeout(Duration::from_secs(120))
31 .advance_time(RunCfgAdvanceTime::Real)
32 .action_handler(|_, _, _, _| false),
33 )
34 .await;
35
36 let config = RustNodeTestingConfig::devnet_default()
37 .with_no_peer_discovery()
39 .initial_peers(vec![retransmitter_mina_rust_node.into()]);
40
41 let receiver_mina_rust_node = runner.add_rust_node(config);
42
43 runner
44 .run(
45 RunCfg::default()
46 .timeout(Duration::from_secs(60 * 30))
47 .advance_time(RunCfgAdvanceTime::Real)
48 .action_handler(move |node, _state, _, action| {
49 node == receiver_mina_rust_node
50 && matches!(
51 action.action().kind(),
52 ActionKind::P2pNetworkPubsubValidateIncomingMessage
53 )
54 }),
55 )
56 .await
57 .expect("Test failed");
58 }
59}