sui_network/
utils.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4#[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}