(self)
| 22 | } |
| 23 | |
| 24 | async fn build(self) -> Result<TestRunner> { |
| 25 | let rpc_server_addr = Addr::new_mem(); |
| 26 | let rpc_client_addr = rpc_server_addr.clone(); |
| 27 | let mut network_config = Config::default_with_rpc(rpc_client_addr.clone()); |
| 28 | |
| 29 | // Bind to an open port |
| 30 | network_config.libp2p.listening_multiaddrs = vec!["/ip4/0.0.0.0/tcp/0".parse().unwrap()]; |
| 31 | // Do not bootstrap |
| 32 | network_config.libp2p.ceramic_peers = vec![]; |
| 33 | |
| 34 | // Using an in memory DB for the tests for realistic benchmark disk DB is needed. |
| 35 | let sql_pool = SqlitePool::connect_in_memory().await.unwrap(); |
| 36 | let peer_svc = Arc::new(ceramic_peer_svc::PeerService::new(sql_pool.clone())); |
| 37 | let interest_svc = Arc::new(ceramic_interest_svc::InterestService::new(sql_pool.clone())); |
| 38 | let event_svc = Arc::new( |
| 39 | ceramic_event_svc::EventService::try_new( |
| 40 | sql_pool, |
| 41 | ceramic_event_svc::UndeliveredEventReview::Skip, |
| 42 | true, |
| 43 | vec![], |
| 44 | ) |
| 45 | .await?, |
| 46 | ); |
| 47 | |
| 48 | let mut registry = prometheus_client::registry::Registry::default(); |
| 49 | let metrics = Metrics::register(&mut registry); |
| 50 | let recon_metrics = recon::Metrics::register(&mut registry); |
| 51 | let node_key = NodeKey::random(); |
| 52 | let peer_id = node_key.peer_id(); |
| 53 | let mut p2p = Node::new( |
| 54 | network_config, |
| 55 | rpc_server_addr, |
| 56 | node_key.clone(), |
| 57 | Arc::clone(&peer_svc), |
| 58 | Some(( |
| 59 | Recon::new(peer_svc, PeerKeyInterests, recon_metrics.clone()), |
| 60 | Recon::new( |
| 61 | Arc::clone(&event_svc), |
| 62 | ReconInterestProvider::new(node_key.id(), interest_svc), |
| 63 | recon_metrics.clone(), |
| 64 | ), |
| 65 | )), |
| 66 | event_svc, |
| 67 | metrics, |
| 68 | ) |
| 69 | .await?; |
| 70 | let cfg = iroh_rpc_client::Config { |
| 71 | p2p_addr: Some(rpc_client_addr), |
| 72 | channels: Some(1), |
| 73 | ..Default::default() |
| 74 | }; |
| 75 | |
| 76 | let client = iroh_rpc_client::Client::new(cfg).await?; |
| 77 | |
| 78 | let network_events = p2p.network_events(); |
| 79 | let task = tokio::task::spawn(async move { p2p.run().await.unwrap() }); |
| 80 | |
| 81 | let client = client.try_p2p()?; |
no test coverage detected