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