1#[cfg(test)]
6pub fn build_network(f: impl FnOnce(anemo::Router) -> anemo::Router) -> anemo::Network {
7 build_network_impl(f, None).0
8}
9
10#[cfg(test)]
11pub fn build_network_and_key(
12 f: impl FnOnce(anemo::Router) -> anemo::Router,
13) -> (anemo::Network, iota_types::crypto::NetworkKeyPair) {
14 build_network_impl(f, None)
15}
16
17#[cfg(test)]
18pub fn build_network_with_anemo_config(
19 f: impl FnOnce(anemo::Router) -> anemo::Router,
20 anemo_config: anemo::Config,
21) -> (anemo::Network, iota_types::crypto::NetworkKeyPair) {
22 build_network_impl(f, Some(anemo_config))
23}
24
25#[cfg(test)]
26fn build_network_impl(
27 f: impl FnOnce(anemo::Router) -> anemo::Router,
28 anemo_config: Option<anemo::Config>,
29) -> (anemo::Network, iota_types::crypto::NetworkKeyPair) {
30 use fastcrypto::traits::KeyPair;
31
32 let keypair = iota_types::crypto::NetworkKeyPair::generate(&mut rand::thread_rng());
33 let router = f(anemo::Router::new());
34 let network = anemo::Network::bind("localhost:0")
35 .private_key(keypair.copy().private().0.to_bytes())
36 .config(anemo_config.unwrap_or_default())
37 .server_name("test")
38 .start(router)
39 .unwrap();
40
41 println!(
42 "starting network {} {}",
43 network.local_addr(),
44 network.peer_id(),
45 );
46 (network, keypair)
47}