From 1e139513f35b9d304422c82a9a660bb4329c2bcd Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Tue, 6 Dec 2022 11:24:01 +0300 Subject: [PATCH 1/9] Reuse existing adapter in WrappedTransportSocket Fix problem with different noise keys used in bind and connect. --- p2p/src/net/mock/transport/impls/stream_adapter/identity.rs | 2 +- p2p/src/net/mock/transport/impls/stream_adapter/traits.rs | 2 +- .../impls/stream_adapter/wrapped_transport/wrapped_socket.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs b/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs index 973635473c..a0a559cd0a 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs @@ -19,7 +19,7 @@ use crate::net::mock::{peer::Role, transport::PeerStream}; use super::StreamAdapter; -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct IdentityStreamAdapter; /// A StreamAdapter that does nothing with no handshake (Identity operation on data that goes through it) diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs b/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs index f0f35f91a4..4dd81530e4 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs @@ -21,7 +21,7 @@ use crate::{ }; /// Represents a stream that requires a handshake to function (such as encrypted streams) -pub trait StreamAdapter: Send + Sync + 'static { +pub trait StreamAdapter: Clone + Send + Sync + 'static { type Stream: PeerStream; fn new() -> Self; diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs index 56d36353a2..92c1ba2624 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs @@ -53,7 +53,7 @@ impl, T: TransportSocket> TransportSocket } async fn bind(&self, address: Self::Address) -> Result { - let stream_adapter = S::new(); + let stream_adapter = self.stream_adapter.clone(); let listener = self.base_transport.bind(address).await?; Ok(AdaptedListener { listener, From 301eb16808e7e133f8032022c9cba8c00b7ba470 Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Tue, 6 Dec 2022 11:32:09 +0300 Subject: [PATCH 2/9] Remove pub from AdaptedListener's fields --- .../wrapped_transport/wrapped_listener.rs | 16 +++++++++++++--- .../wrapped_transport/wrapped_socket.rs | 6 +----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_listener.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_listener.rs index d105f134b7..588e6fb270 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_listener.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_listener.rs @@ -36,10 +36,20 @@ pub const MAX_CONCURRENT_HANDSHAKES: usize = 100; /// A listener (acceptor) object that handles new incoming connections, and does any required handshakes pub struct AdaptedListener, T: TransportSocket> { - pub stream_adapter: S, - pub listener: T::Listener, + stream_adapter: S, + listener: T::Listener, #[allow(clippy::type_complexity)] - pub handshakes: Vec<(BoxFuture<'static, Result>, T::Address)>, + handshakes: Vec<(BoxFuture<'static, Result>, T::Address)>, +} + +impl, T: TransportSocket> AdaptedListener { + pub fn new(stream_adapter: S, listener: T::Listener) -> Self { + Self { + stream_adapter, + listener, + handshakes: Vec::new(), + } + } } #[async_trait] diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs index 92c1ba2624..fd898a9bcd 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs @@ -55,11 +55,7 @@ impl, T: TransportSocket> TransportSocket async fn bind(&self, address: Self::Address) -> Result { let stream_adapter = self.stream_adapter.clone(); let listener = self.base_transport.bind(address).await?; - Ok(AdaptedListener { - listener, - stream_adapter, - handshakes: Vec::new(), - }) + Ok(AdaptedListener::new(stream_adapter, listener)) } async fn connect(&self, address: Self::Address) -> Result { From 0527e674aed1e0677b0342ff10fcb76c6bb6dda1 Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Wed, 7 Dec 2022 16:09:39 +0300 Subject: [PATCH 3/9] Transport initialization updates Add make_transport() to MakeTestAddress trait Move MakeTestAddress from p2p-test-utils to p2p to break circular dev dependency Replace most TransportSocket::new calls with MakeTestAddress::make_transport() --- Cargo.lock | 1 - node/src/runner.rs | 5 +- p2p/backend-test-suite/src/ban.rs | 11 +- .../src/block_announcement.rs | 81 ++++--- p2p/backend-test-suite/src/connect.rs | 53 +++-- p2p/backend-test-suite/src/lib.rs | 6 +- p2p/backend-test-suite/src/sync.rs | 200 +++++++++++++----- p2p/backend-test-suite/src/utils.rs | 2 +- p2p/p2p-test-utils/Cargo.toml | 1 - p2p/p2p-test-utils/src/lib.rs | 48 +---- p2p/src/lib.rs | 13 +- p2p/src/net/libp2p/backend.rs | 2 +- p2p/src/net/libp2p/mod.rs | 56 ++--- p2p/src/net/libp2p/tests/frontend.rs | 15 +- p2p/src/net/libp2p/tests/gossipsub.rs | 2 +- p2p/src/net/libp2p/tests/identify.rs | 2 +- p2p/src/net/libp2p/tests/mdns.rs | 2 +- p2p/src/net/libp2p/tests/ping.rs | 2 +- p2p/src/net/libp2p/tests/request_response.rs | 2 +- p2p/src/net/libp2p/tests/swarm.rs | 2 +- p2p/src/net/mock/mod.rs | 37 ++-- p2p/src/net/mock/peer.rs | 24 ++- .../stream_adapter/wrapped_transport/tests.rs | 2 +- p2p/src/net/mock/transport/impls/tcp.rs | 2 +- p2p/src/net/mod.rs | 6 + p2p/src/peer_manager/tests/ban.rs | 54 +++-- p2p/src/peer_manager/tests/connections.rs | 131 ++++++++---- p2p/src/peer_manager/tests/mod.rs | 10 +- p2p/src/sync/tests/block_response.rs | 44 ++-- p2p/src/sync/tests/connection.rs | 16 +- p2p/src/sync/tests/header_response.rs | 47 ++-- p2p/src/sync/tests/mod.rs | 12 +- p2p/src/sync/tests/request_response.rs | 34 +-- p2p/src/testing_utils.rs | 89 ++++++++ p2p/tests/backend_libp2p.rs | 2 +- p2p/tests/backend_mock_channels.rs | 2 +- p2p/tests/backend_mock_noise.rs | 4 +- p2p/tests/backend_mock_tcp.rs | 2 +- p2p/tests/block_announcement.rs | 31 ++- p2p/tests/libp2p-mdns.rs | 4 +- 40 files changed, 695 insertions(+), 364 deletions(-) create mode 100644 p2p/src/testing_utils.rs diff --git a/Cargo.lock b/Cargo.lock index af5a24947b..069b8175a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2982,7 +2982,6 @@ dependencies = [ "crypto", "libp2p", "mempool", - "p2p", "portpicker", "subsystem", "tokio", diff --git a/node/src/runner.rs b/node/src/runner.rs index 4329e344eb..ac2484ee4b 100644 --- a/node/src/runner.rs +++ b/node/src/runner.rs @@ -71,11 +71,14 @@ pub async fn initialize( }); // P2P subsystem + let p2p_config = node_config.p2p.into(); + let p2p_transport = p2p::net::libp2p::make_transport(&p2p_config); let p2p = manager.add_subsystem( "p2p", p2p::make_p2p::( + p2p_transport, Arc::clone(&chain_config), - Arc::new(node_config.p2p.into()), + Arc::new(p2p_config), chainstate.clone(), mempool.clone(), ) diff --git a/p2p/backend-test-suite/src/ban.rs b/p2p/backend-test-suite/src/ban.rs index 0bd58f299b..69722dd26d 100644 --- a/p2p/backend-test-suite/src/ban.rs +++ b/p2p/backend-test-suite/src/ban.rs @@ -17,6 +17,7 @@ use std::{fmt::Debug, sync::Arc}; use tokio::sync::mpsc; +use p2p::testing_utils::MakeTestAddress; use p2p::{ config::P2pConfig, error::{P2pError, PublishError}, @@ -28,7 +29,7 @@ use p2p::{ peer_manager::helpers::connect_services, sync::BlockSyncManager, }; -use p2p_test_utils::{MakeTestAddress, TestBlockInfo}; +use p2p_test_utils::TestBlockInfo; tests![invalid_pubsub_block, invalid_sync_block,]; @@ -37,7 +38,7 @@ tests![invalid_pubsub_block, invalid_sync_block,]; // receives a `AdjustPeerScore` event which bans the peer of the second service. async fn invalid_pubsub_block() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -49,6 +50,7 @@ where let handle = p2p_test_utils::start_chainstate(Arc::clone(&chain_config)).await; let (mut conn1, sync1) = S::start( + A::make_transport(), A::make_address(), Arc::clone(&chain_config), Default::default(), @@ -66,6 +68,7 @@ where ); let (mut conn2, mut sync2) = S::start( + A::make_transport(), A::make_address(), Arc::clone(&chain_config), Arc::clone(&p2p_config), @@ -131,7 +134,7 @@ where // Start two networking services and give an invalid block, verify that `PeerManager` is informed. async fn invalid_sync_block() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -142,6 +145,7 @@ where let handle = p2p_test_utils::start_chainstate(Arc::clone(&chain_config)).await; let (mut conn1, sync1) = S::start( + A::make_transport(), A::make_address(), Arc::clone(&chain_config), Default::default(), @@ -150,6 +154,7 @@ where .unwrap(); let (mut conn2, _sync2) = S::start( + A::make_transport(), A::make_address(), Arc::clone(&chain_config), Default::default(), diff --git a/p2p/backend-test-suite/src/block_announcement.rs b/p2p/backend-test-suite/src/block_announcement.rs index 776d6a4234..9418fcab1f 100644 --- a/p2p/backend-test-suite/src/block_announcement.rs +++ b/p2p/backend-test-suite/src/block_announcement.rs @@ -32,6 +32,7 @@ use common::{ }; use serialization::Encode; +use p2p::testing_utils::MakeTestAddress; use p2p::{ error::{P2pError, PublishError}, message::Announcement, @@ -42,7 +43,6 @@ use p2p::{ }, peer_manager::helpers::connect_services, }; -use p2p_test_utils::MakeTestAddress; tests![ block_announcement, @@ -52,20 +52,28 @@ tests![ async fn block_announcement() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, { let config = Arc::new(common::chain::config::create_mainnet()); - let (mut conn1, mut sync1) = - S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); - let (mut conn2, mut sync2) = - S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); + let (mut conn1, mut sync1) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); + let (mut conn2, mut sync2) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); connect_services::(&mut conn1, &mut conn2).await; @@ -130,19 +138,28 @@ where async fn block_announcement_no_subscription() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, { let config = Arc::new(common::chain::config::create_mainnet()); - let (mut conn1, mut sync1) = - S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); - let (mut conn2, _sync2) = S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); + let (mut conn1, mut sync1) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); + let (mut conn2, _sync2) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); connect_services::(&mut conn1, &mut conn2).await; @@ -169,21 +186,29 @@ where async fn block_announcement_too_big_message() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, { let config = Arc::new(common::chain::config::create_mainnet()); - let (mut conn1, mut sync1) = - S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); - - let (mut conn2, mut sync2) = - S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); + let (mut conn1, mut sync1) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); + + let (mut conn2, mut sync2) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); connect_services::(&mut conn1, &mut conn2).await; diff --git a/p2p/backend-test-suite/src/connect.rs b/p2p/backend-test-suite/src/connect.rs index a268cc9e55..10d71543db 100644 --- a/p2p/backend-test-suite/src/connect.rs +++ b/p2p/backend-test-suite/src/connect.rs @@ -17,11 +17,11 @@ use std::{fmt::Debug, sync::Arc}; +use p2p::testing_utils::MakeTestAddress; use p2p::{ error::{DialError, P2pError}, net::{ConnectivityService, NetworkingService, SyncingMessagingService}, }; -use p2p_test_utils::MakeTestAddress; tests![ connect, @@ -32,13 +32,20 @@ tests![ async fn connect() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, { let config = Arc::new(common::chain::config::create_mainnet()); - S::start(A::make_address(), config, Default::default()).await.unwrap(); + S::start( + A::make_transport(), + A::make_address(), + config, + Default::default(), + ) + .await + .unwrap(); } // Check that connecting twice to the same address isn't possible. @@ -46,19 +53,23 @@ where #[cfg(not(target_os = "windows"))] async fn connect_address_in_use() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, { let config = Arc::new(common::chain::config::create_mainnet()); - let (connectivity, _sync) = - S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); + let (connectivity, _sync) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); let address = connectivity.local_addr().await.unwrap().unwrap(); - let res = S::start(address, config, Default::default()) + let res = S::start(A::make_transport(), address, config, Default::default()) .await .expect_err("address is not in use"); assert_eq!( @@ -71,18 +82,28 @@ where // trying to connect to `service1`. async fn connect_accept() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + std::fmt::Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, { let config = Arc::new(common::chain::config::create_mainnet()); - let (mut service1, _) = S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); - let (mut service2, _) = S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); + let (mut service1, _) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); + let (mut service2, _) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); let conn_addr = service1.local_addr().await.unwrap().unwrap(); let (res1, res2) = tokio::join!(service1.poll_next(), service2.connect(conn_addr)); diff --git a/p2p/backend-test-suite/src/lib.rs b/p2p/backend-test-suite/src/lib.rs index 74bc8b1f7c..70ec0c3b24 100644 --- a/p2p/backend-test-suite/src/lib.rs +++ b/p2p/backend-test-suite/src/lib.rs @@ -29,12 +29,12 @@ use std::fmt::Debug; use libtest_mimic::{Arguments, Trial}; use p2p::net::{ConnectivityService, NetworkingService, SyncingMessagingService}; -use p2p_test_utils::MakeTestAddress; +use p2p::testing_utils::MakeTestAddress; /// Runs all tests. pub fn run() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, @@ -47,7 +47,7 @@ where /// Collects all backend agnostic tests. fn tests() -> Vec where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, diff --git a/p2p/backend-test-suite/src/sync.rs b/p2p/backend-test-suite/src/sync.rs index 0383c80f28..dd38cddfc1 100644 --- a/p2p/backend-test-suite/src/sync.rs +++ b/p2p/backend-test-suite/src/sync.rs @@ -27,6 +27,7 @@ use common::{ chain::{config::ChainConfig, GenBlock}, primitives::{Id, Idable}, }; +use p2p::testing_utils::MakeTestAddress; use p2p::{ config::{MdnsConfig, P2pConfig}, error::P2pError, @@ -40,7 +41,7 @@ use p2p::{ sync::BlockSyncManager, sync::SyncState, }; -use p2p_test_utils::{MakeTestAddress, TestBlockInfo}; +use p2p_test_utils::TestBlockInfo; tests![ local_and_remote_in_sync, @@ -57,7 +58,7 @@ tests![ async fn local_and_remote_in_sync() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -67,10 +68,20 @@ where let mgr1_handle = handle1.clone(); let mgr2_handle = handle2.clone(); - let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(A::make_address(), handle1, P2pConfig::default()).await; - let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(A::make_address(), handle2, P2pConfig::default()).await; + let (mut mgr1, mut conn1, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle1, + P2pConfig::default(), + ) + .await; + let (mut mgr2, mut conn2, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle2, + P2pConfig::default(), + ) + .await; // connect the two managers together so that they can exchange messages connect_services::(&mut conn1, &mut conn2).await; @@ -96,7 +107,7 @@ where // no blocks are downloaded whereas local node downloads the 7 new blocks from remote async fn remote_ahead_by_7_blocks() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -106,10 +117,20 @@ where let mgr1_handle = handle1.clone(); let mgr2_handle = handle2.clone(); - let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(A::make_address(), handle1, P2pConfig::default()).await; - let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(A::make_address(), handle2, P2pConfig::default()).await; + let (mut mgr1, mut conn1, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle1, + P2pConfig::default(), + ) + .await; + let (mut mgr2, mut conn2, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle2, + P2pConfig::default(), + ) + .await; // add 7 more blocks on top of the best block (which is also known by mgr1) assert!(same_tip(&mgr1_handle, &mgr2_handle).await); @@ -188,7 +209,7 @@ where // local and remote nodes are in the same chain but local is ahead of remote by 12 blocks async fn local_ahead_by_12_blocks() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -202,9 +223,9 @@ where let mgr2_handle = handle2.clone(); let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(addr1, handle1, P2pConfig::default()).await; + make_sync_manager::(A::make_transport(), addr1, handle1, P2pConfig::default()).await; let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(addr2, handle2, P2pConfig::default()).await; + make_sync_manager::(A::make_transport(), addr2, handle2, P2pConfig::default()).await; // add 12 more blocks on top of the best block (which is also known by mgr2) assert!(same_tip(&mgr1_handle, &mgr2_handle).await); @@ -309,7 +330,7 @@ where // verify that remote nodes does a reorg async fn remote_local_diff_chains_local_higher() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -323,9 +344,9 @@ where let mgr2_handle = handle2.clone(); let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(addr1, handle1, P2pConfig::default()).await; + make_sync_manager::(A::make_transport(), addr1, handle1, P2pConfig::default()).await; let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(addr2, handle2, P2pConfig::default()).await; + make_sync_manager::(A::make_transport(), addr2, handle2, P2pConfig::default()).await; // add 14 more blocks to local chain and 7 more blocks to remote chain assert!(same_tip(&mgr1_handle, &mgr2_handle).await); @@ -455,7 +476,7 @@ where // verify that local node does a reorg async fn remote_local_diff_chains_remote_higher() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -469,9 +490,9 @@ where let mgr2_handle = handle2.clone(); let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(addr1, handle1, P2pConfig::default()).await; + make_sync_manager::(A::make_transport(), addr1, handle1, P2pConfig::default()).await; let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(addr2, handle2, P2pConfig::default()).await; + make_sync_manager::(A::make_transport(), addr2, handle2, P2pConfig::default()).await; // add 5 more blocks to local chain and 12 more blocks to remote chain assert!(same_tip(&mgr1_handle, &mgr2_handle).await); @@ -599,7 +620,7 @@ where async fn two_remote_nodes_different_chains() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -610,12 +631,27 @@ where let mgr2_handle = handle2.clone(); let mgr3_handle = handle3.clone(); - let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(A::make_address(), handle1, P2pConfig::default()).await; - let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(A::make_address(), handle2, P2pConfig::default()).await; - let (mut mgr3, mut conn3, _, _) = - make_sync_manager::(A::make_address(), handle3, P2pConfig::default()).await; + let (mut mgr1, mut conn1, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle1, + P2pConfig::default(), + ) + .await; + let (mut mgr2, mut conn2, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle2, + P2pConfig::default(), + ) + .await; + let (mut mgr3, mut conn3, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle3, + P2pConfig::default(), + ) + .await; // add 5 more blocks for first remote and 7 blocks to second remote p2p_test_utils::add_more_blocks(Arc::clone(&config), &mgr2_handle, 5).await; @@ -706,7 +742,7 @@ where async fn two_remote_nodes_same_chains() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -717,12 +753,27 @@ where let mgr2_handle = handle2.clone(); let mgr3_handle = handle3.clone(); - let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(A::make_address(), handle1, P2pConfig::default()).await; - let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(A::make_address(), handle2, P2pConfig::default()).await; - let (mut mgr3, mut conn3, _, _) = - make_sync_manager::(A::make_address(), handle3, P2pConfig::default()).await; + let (mut mgr1, mut conn1, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle1, + P2pConfig::default(), + ) + .await; + let (mut mgr2, mut conn2, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle2, + P2pConfig::default(), + ) + .await; + let (mut mgr3, mut conn3, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle3, + P2pConfig::default(), + ) + .await; // add the same 32 new blocks for both mgr2 and mgr3 let blocks = p2p_test_utils::create_n_blocks( @@ -829,7 +880,7 @@ where async fn two_remote_nodes_same_chains_new_blocks() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -840,12 +891,27 @@ where let mgr2_handle = handle2.clone(); let mgr3_handle = handle3.clone(); - let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(A::make_address(), handle1, P2pConfig::default()).await; - let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(A::make_address(), handle2, P2pConfig::default()).await; - let (mut mgr3, mut conn3, _, _) = - make_sync_manager::(A::make_address(), handle3, P2pConfig::default()).await; + let (mut mgr1, mut conn1, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle1, + P2pConfig::default(), + ) + .await; + let (mut mgr2, mut conn2, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle2, + P2pConfig::default(), + ) + .await; + let (mut mgr3, mut conn3, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle3, + P2pConfig::default(), + ) + .await; // add the same 32 new blocks for both mgr2 and mgr3 let blocks = p2p_test_utils::create_n_blocks( @@ -966,7 +1032,7 @@ where // // verify that local node downloads the blocks and after that they are in sync async fn connect_disconnect_resyncing() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -976,10 +1042,20 @@ where let mgr1_handle = handle1.clone(); let mgr2_handle = handle2.clone(); - let (mut mgr1, mut conn1, _, _) = - make_sync_manager::(A::make_address(), handle1, P2pConfig::default()).await; - let (mut mgr2, mut conn2, _, _) = - make_sync_manager::(A::make_address(), handle2, P2pConfig::default()).await; + let (mut mgr1, mut conn1, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle1, + P2pConfig::default(), + ) + .await; + let (mut mgr2, mut conn2, _, _) = make_sync_manager::( + A::make_transport(), + A::make_address(), + handle2, + P2pConfig::default(), + ) + .await; connect_services::(&mut conn1, &mut conn2).await; assert_eq!(mgr1.register_peer(*conn2.peer_id()).await, Ok(())); @@ -1083,7 +1159,7 @@ where // Check that the peer that ignores requests is disconnected. async fn disconnect_unresponsive_peer() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -1097,10 +1173,20 @@ where mdns_config: MdnsConfig::Disabled.into(), request_timeout: Duration::from_secs(1).into(), }; - let (mut mgr1, mut conn1, _sync1, mut pm1) = - make_sync_manager::(A::make_address(), chainstate1, p2p_config).await; - let (_mgr2, mut conn2, _sync2, _pm2) = - make_sync_manager::(A::make_address(), chainstate2, P2pConfig::default()).await; + let (mut mgr1, mut conn1, _sync1, mut pm1) = make_sync_manager::( + A::make_transport(), + A::make_address(), + chainstate1, + p2p_config, + ) + .await; + let (_mgr2, mut conn2, _sync2, _pm2) = make_sync_manager::( + A::make_transport(), + A::make_address(), + chainstate2, + P2pConfig::default(), + ) + .await; connect_services::(&mut conn1, &mut conn2).await; let peer2_id = *conn2.peer_id(); @@ -1117,6 +1203,7 @@ where } async fn make_sync_manager( + transport: T::Transport, addr: T::Address, chainstate: subsystem::Handle>, p2p_config: P2pConfig, @@ -1138,9 +1225,14 @@ where let chain_config = Arc::new(common::chain::config::create_mainnet()); let p2p_config = Arc::new(p2p_config); - let (conn, sync) = T::start(addr, Arc::clone(&chain_config), Arc::clone(&p2p_config)) - .await - .unwrap(); + let (conn, sync) = T::start( + transport, + addr, + Arc::clone(&chain_config), + Arc::clone(&p2p_config), + ) + .await + .unwrap(); ( BlockSyncManager::::new( diff --git a/p2p/backend-test-suite/src/utils.rs b/p2p/backend-test-suite/src/utils.rs index 39b4c2710a..cc22136c21 100644 --- a/p2p/backend-test-suite/src/utils.rs +++ b/p2p/backend-test-suite/src/utils.rs @@ -17,7 +17,7 @@ macro_rules! tests { ($($(#[$meta:meta])* $name:ident,)+) => { pub fn tests() -> impl Iterator where - A: p2p_test_utils::MakeTestAddress
, + A: p2p::testing_utils::MakeTestAddress, S: p2p::net::NetworkingService + std::fmt::Debug + 'static, S::ConnectivityHandle: p2p::net::ConnectivityService + std::fmt::Debug, S::SyncingMessagingHandle: p2p::net::SyncingMessagingService + std::fmt::Debug, diff --git a/p2p/p2p-test-utils/Cargo.toml b/p2p/p2p-test-utils/Cargo.toml index 174496a155..c1265b7635 100644 --- a/p2p/p2p-test-utils/Cargo.toml +++ b/p2p/p2p-test-utils/Cargo.toml @@ -10,7 +10,6 @@ chainstate = { path = "../../chainstate/" } common = { path = "../../common/" } crypto = { path = "../../crypto/" } mempool = { path = "../../mempool/" } -p2p = { path = "../" } subsystem = { path = "../../subsystem/" } portpicker = "0.1" diff --git a/p2p/p2p-test-utils/src/lib.rs b/p2p/p2p-test-utils/src/lib.rs index 762d8c8e28..cd9e0a08fa 100644 --- a/p2p/p2p-test-utils/src/lib.rs +++ b/p2p/p2p-test-utils/src/lib.rs @@ -15,9 +15,7 @@ #![allow(clippy::unwrap_used)] -use std::{fmt::Debug, net::SocketAddr, sync::Arc}; - -use libp2p::Multiaddr; +use std::{fmt::Debug, sync::Arc}; use chainstate::{ chainstate_interface::ChainstateInterface, make_chainstate, BlockSource, ChainstateConfig, @@ -235,47 +233,3 @@ pub async fn add_more_blocks( let blocks = create_n_blocks(config, base_block, nblocks); import_blocks(handle, blocks).await; } - -/// An interface for creating the address. -/// -/// This abstraction layer is needed to uniformly create an address in the tests for different -/// mocks transport implementations. -pub trait MakeTestAddress { - /// An address type. - type Address: Clone + Debug + Eq + std::hash::Hash + Send + Sync + ToString; - - /// Creates a new unused address. - /// - /// This should work similar to requesting a port of number 0 when opening a TCP connection. - fn make_address() -> Self::Address; -} - -pub struct MakeP2pAddress {} - -impl MakeTestAddress for MakeP2pAddress { - type Address = Multiaddr; - - fn make_address() -> Self::Address { - "/ip6/::1/tcp/0".parse().unwrap() - } -} - -pub struct MakeTcpAddress {} - -impl MakeTestAddress for MakeTcpAddress { - type Address = SocketAddr; - - fn make_address() -> Self::Address { - "[::1]:0".parse().unwrap() - } -} - -pub struct MakeChannelAddress {} - -impl MakeTestAddress for MakeChannelAddress { - type Address = u64; - - fn make_address() -> Self::Address { - 0 - } -} diff --git a/p2p/src/lib.rs b/p2p/src/lib.rs index 9f6032ae44..afe2abb2e5 100644 --- a/p2p/src/lib.rs +++ b/p2p/src/lib.rs @@ -23,6 +23,7 @@ pub mod net; pub mod peer_manager; pub mod rpc; pub mod sync; +pub mod testing_utils; use std::{fmt::Debug, str::FromStr, sync::Arc}; @@ -63,6 +64,7 @@ where /// /// This function starts the networking backend and individual manager objects. pub async fn new( + transport: T::Transport, chain_config: Arc, p2p_config: Arc, chainstate_handle: subsystem::Handle>, @@ -73,6 +75,7 @@ where <::Address as FromStr>::Err: Debug, { let (conn, sync) = T::start( + transport, p2p_config.bind_address.parse::().map_err(|_| { P2pError::ConversionError(ConversionError::InvalidAddress( p2p_config.bind_address.clone().into(), @@ -143,6 +146,7 @@ impl subsystem::Subsystem for Box {} pub type P2pHandle = subsystem::Handle>; pub async fn make_p2p( + transport: T::Transport, chain_config: Arc, p2p_config: Arc, chainstate_handle: subsystem::Handle>, @@ -157,6 +161,13 @@ where ::PeerId: FromStr, <::PeerId as FromStr>::Err: Debug, { - let p2p = P2p::::new(chain_config, p2p_config, chainstate_handle, mempool_handle).await?; + let p2p = P2p::::new( + transport, + chain_config, + p2p_config, + chainstate_handle, + mempool_handle, + ) + .await?; Ok(Box::new(p2p)) } diff --git a/p2p/src/net/libp2p/backend.rs b/p2p/src/net/libp2p/backend.rs index 3ba32c0b5a..06ab95f9fe 100644 --- a/p2p/src/net/libp2p/backend.rs +++ b/p2p/src/net/libp2p/backend.rs @@ -341,6 +341,7 @@ mod tests { self, connection_manager, discovery, sync_codec::{SyncMessagingCodec, SyncingProtocol}, }; + use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use libp2p::{ core::upgrade, gossipsub::{Gossipsub, GossipsubConfigBuilder, MessageAuthenticity}, @@ -351,7 +352,6 @@ mod tests { tcp::{GenTcpConfig, TcpTransport}, Transport, }; - use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; use std::{ collections::{HashMap, VecDeque}, iter, diff --git a/p2p/src/net/libp2p/mod.rs b/p2p/src/net/libp2p/mod.rs index 2c4027db3e..1b256433f5 100644 --- a/p2p/src/net/libp2p/mod.rs +++ b/p2p/src/net/libp2p/mod.rs @@ -27,10 +27,13 @@ use std::{net::IpAddr, sync::Arc}; use async_trait::async_trait; use libp2p::{ - core::{upgrade, PeerId}, + core::{ + muxing::StreamMuxerBox, + transport::{self, upgrade}, + PeerId, + }, gossipsub::MessageId, - identity, mplex, - noise::{self, AuthenticKeypair}, + identity, mplex, noise, request_response::RequestId, swarm::SwarmBuilder, tcp::{GenTcpConfig, TokioTcpTransport}, @@ -51,23 +54,15 @@ use crate::{ #[derive(Debug)] pub struct Libp2pService; -// TODO: Check the data directory first, and use keys from there if available -fn make_libp2p_keys() -> ( +pub type Libp2pTransport = ( + transport::Boxed<(PeerId, StreamMuxerBox)>, PeerId, identity::Keypair, - AuthenticKeypair, -) { - let id_keys = identity::Keypair::generate_ed25519(); - let peer_id = id_keys.public().to_peer_id(); - let noise_keys = noise::Keypair::::new() - .into_authentic(&id_keys) - .expect("Noise key creation to succeed"); - - (peer_id, id_keys, noise_keys) -} +); #[async_trait] impl NetworkingService for Libp2pService { + type Transport = Libp2pTransport; type Address = Multiaddr; type BannableAddress = IpAddr; type PeerId = PeerId; @@ -77,19 +72,12 @@ impl NetworkingService for Libp2pService { type SyncingMessagingHandle = service::syncing::Libp2pSyncHandle; async fn start( + transport: Self::Transport, bind_addr: Self::Address, chain_config: Arc, p2p_config: Arc, ) -> crate::Result<(Self::ConnectivityHandle, Self::SyncingMessagingHandle)> { - let (peer_id, id_keys, noise_keys) = make_libp2p_keys(); - let transport = TokioTcpTransport::new(GenTcpConfig::new().nodelay(true)) - .upgrade(upgrade::Version::V1) - .authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated()) - .multiplex(mplex::MplexConfig::new()) - .outbound_timeout(std::time::Duration::from_secs( - *p2p_config.outbound_connection_timeout, - )) - .boxed(); + let (transport, peer_id, id_keys) = transport; let swarm = SwarmBuilder::new( transport, @@ -160,3 +148,23 @@ fn get_ip(address: &Multiaddr) -> Option { } None } + +// TODO: Check the data directory first, and use keys from there if available +pub fn make_transport(p2p_config: &config::P2pConfig) -> Libp2pTransport { + let id_keys = identity::Keypair::generate_ed25519(); + let peer_id = id_keys.public().to_peer_id(); + let noise_keys = noise::Keypair::::new() + .into_authentic(&id_keys) + .expect("Noise key creation to succeed"); + + let transport = TokioTcpTransport::new(GenTcpConfig::new().nodelay(true)) + .upgrade(upgrade::Version::V1) + .authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated()) + .multiplex(mplex::MplexConfig::new()) + .outbound_timeout(std::time::Duration::from_secs( + *p2p_config.outbound_connection_timeout, + )) + .boxed(); + + (transport, peer_id, id_keys) +} diff --git a/p2p/src/net/libp2p/tests/frontend.rs b/p2p/src/net/libp2p/tests/frontend.rs index 4ea08f9537..872d19abb1 100644 --- a/p2p/src/net/libp2p/tests/frontend.rs +++ b/p2p/src/net/libp2p/tests/frontend.rs @@ -18,7 +18,7 @@ use std::{sync::Arc, time::Duration}; use libp2p::{core::PeerId, multiaddr::Protocol, Multiaddr}; use tokio::net::TcpListener; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use serialization::{Decode, Encode}; use crate::{ @@ -46,10 +46,14 @@ struct Transaction { async fn test_connect_peer_id_missing() { let config = Arc::new(common::chain::config::create_mainnet()); let addr: Multiaddr = "/ip6/::1/tcp/8904".parse().unwrap(); - let (mut service, _) = - Libp2pService::start(MakeP2pAddress::make_address(), config, Default::default()) - .await - .unwrap(); + let (mut service, _) = Libp2pService::start( + MakeP2pAddress::make_transport(), + MakeP2pAddress::make_address(), + config, + Default::default(), + ) + .await + .unwrap(); match service.connect(addr.clone()).await { Ok(_) => panic!("connect succeeded without peer id"), @@ -229,6 +233,7 @@ fn test_parse_peers_valid_3_peers_1_valid() { async fn test_connect_with_timeout() { let config = Arc::new(common::chain::config::create_mainnet()); let (mut service, _) = Libp2pService::start( + MakeP2pAddress::make_transport(), MakeP2pAddress::make_address(), config, Arc::new(P2pConfig { diff --git a/p2p/src/net/libp2p/tests/gossipsub.rs b/p2p/src/net/libp2p/tests/gossipsub.rs index d135d269e8..be0fc20c6d 100644 --- a/p2p/src/net/libp2p/tests/gossipsub.rs +++ b/p2p/src/net/libp2p/tests/gossipsub.rs @@ -16,9 +16,9 @@ use super::*; use crate::net::libp2p::{behaviour, types::*}; +use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use futures::StreamExt; use libp2p::gossipsub::IdentTopic as Topic; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; use serialization::Encode; #[tokio::test] diff --git a/p2p/src/net/libp2p/tests/identify.rs b/p2p/src/net/libp2p/tests/identify.rs index 5a1206921b..c87c7806b1 100644 --- a/p2p/src/net/libp2p/tests/identify.rs +++ b/p2p/src/net/libp2p/tests/identify.rs @@ -15,8 +15,8 @@ use super::*; use crate::net::libp2p::behaviour; +use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use libp2p::ping; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; use std::time::Duration; #[tokio::test] diff --git a/p2p/src/net/libp2p/tests/mdns.rs b/p2p/src/net/libp2p/tests/mdns.rs index 3b64a05cb8..f16d7c43fd 100644 --- a/p2p/src/net/libp2p/tests/mdns.rs +++ b/p2p/src/net/libp2p/tests/mdns.rs @@ -18,7 +18,7 @@ use std::{sync::Arc, time::Duration}; use futures::StreamExt; use libp2p::swarm::SwarmEvent; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use crate::{ config::{MdnsConfig, P2pConfig}, diff --git a/p2p/src/net/libp2p/tests/ping.rs b/p2p/src/net/libp2p/tests/ping.rs index d874480ff7..3304c24571 100644 --- a/p2p/src/net/libp2p/tests/ping.rs +++ b/p2p/src/net/libp2p/tests/ping.rs @@ -15,12 +15,12 @@ use super::*; use crate::net::libp2p::behaviour; +use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use futures::StreamExt; use libp2p::{ ping, swarm::{SwarmBuilder, SwarmEvent}, }; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; use std::time::Duration; #[tokio::test] diff --git a/p2p/src/net/libp2p/tests/request_response.rs b/p2p/src/net/libp2p/tests/request_response.rs index 71becc909c..8c999dee46 100644 --- a/p2p/src/net/libp2p/tests/request_response.rs +++ b/p2p/src/net/libp2p/tests/request_response.rs @@ -14,13 +14,13 @@ // limitations under the License. use super::*; +use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use crate::{ error::{P2pError, PeerError}, net::libp2p::{behaviour::sync_codec::message_types::SyncRequest, types}, }; use futures::StreamExt; use libp2p::swarm::SwarmEvent; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; use tokio::sync::oneshot; // try to send request to an unknown peer and verify that the request is not rejected diff --git a/p2p/src/net/libp2p/tests/swarm.rs b/p2p/src/net/libp2p/tests/swarm.rs index a39916f4ed..3a37f7ed57 100644 --- a/p2p/src/net/libp2p/tests/swarm.rs +++ b/p2p/src/net/libp2p/tests/swarm.rs @@ -15,6 +15,7 @@ use super::*; use crate::error::P2pError; +use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; use futures::StreamExt; use libp2p::{ core::upgrade, @@ -22,7 +23,6 @@ use libp2p::{ swarm::{DialError, SwarmBuilder, SwarmEvent}, PeerId, Swarm, }; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; // TODO: add more tests at some point diff --git a/p2p/src/net/mock/mod.rs b/p2p/src/net/mock/mod.rs index e71e171b85..88cee8fc17 100644 --- a/p2p/src/net/mock/mod.rs +++ b/p2p/src/net/mock/mod.rs @@ -110,6 +110,7 @@ where #[async_trait] impl NetworkingService for MockService { + type Transport = T; type Address = T::Address; type BannableAddress = T::BannableAddress; type PeerId = MockPeerId; @@ -119,11 +120,11 @@ impl NetworkingService for MockService { type SyncingMessagingHandle = MockSyncingMessagingHandle; async fn start( + transport: Self::Transport, addr: Self::Address, chain_config: Arc, p2p_config: Arc, ) -> crate::Result<(Self::ConnectivityHandle, Self::SyncingMessagingHandle)> { - let transport = T::new(); let (cmd_tx, cmd_rx) = mpsc::channel(16); let (conn_tx, conn_rx) = mpsc::channel(16); let (sync_tx, sync_rx) = mpsc::channel(16); @@ -385,24 +386,28 @@ where #[cfg(test)] mod tests { use super::{transport::NoiseTcpTransport, *}; - use crate::net::{ - self, - mock::transport::{MockChannelTransport, TcpTransportSocket}, - types::{Protocol, ProtocolType}, + use crate::testing_utils::{MakeChannelAddress, MakeTcpAddress, MakeTestAddress}; + use crate::{ + net::{ + self, + mock::transport::{MockChannelTransport, TcpTransportSocket}, + types::{Protocol, ProtocolType}, + }, + testing_utils::MakeNoiseAddress, }; use common::primitives::semver::SemVer; - use p2p_test_utils::{MakeChannelAddress, MakeTcpAddress, MakeTestAddress}; use std::fmt::Debug; async fn connect_to_remote() where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket + Debug, { let config = Arc::new(common::chain::config::create_mainnet()); let p2p_config: Arc = Arc::new(Default::default()); let (mut conn1, _) = MockService::::start( + A::make_transport(), A::make_address(), Arc::clone(&config), Arc::clone(&p2p_config), @@ -411,6 +416,7 @@ mod tests { .unwrap(); let (conn2, _) = MockService::::start( + A::make_transport(), A::make_address(), Arc::clone(&config), Arc::clone(&p2p_config), @@ -458,18 +464,19 @@ mod tests { #[tokio::test] async fn connect_to_remote_noise() { - connect_to_remote::().await; + connect_to_remote::().await; } async fn accept_incoming() where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket, { let config = Arc::new(common::chain::config::create_mainnet()); let p2p_config: Arc = Arc::new(Default::default()); let (mut conn1, _) = MockService::::start( + A::make_transport(), A::make_address(), Arc::clone(&config), Arc::clone(&p2p_config), @@ -478,6 +485,7 @@ mod tests { .unwrap(); let (mut conn2, _) = MockService::::start( + A::make_transport(), A::make_address(), Arc::clone(&config), Arc::clone(&p2p_config), @@ -525,18 +533,19 @@ mod tests { #[tokio::test] async fn accept_incoming_noise() { - accept_incoming::().await; + accept_incoming::().await; } async fn disconnect() where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket, { let config = Arc::new(common::chain::config::create_mainnet()); let p2p_config: Arc = Arc::new(Default::default()); let (mut conn1, _) = MockService::::start( + A::make_transport(), A::make_address(), Arc::clone(&config), Arc::clone(&p2p_config), @@ -544,7 +553,9 @@ mod tests { .await .unwrap(); let (mut conn2, _) = - MockService::::start(A::make_address(), config, p2p_config).await.unwrap(); + MockService::::start(A::make_transport(), A::make_address(), config, p2p_config) + .await + .unwrap(); let (_res1, res2) = tokio::join!( conn1.connect(conn2.local_addr().await.unwrap().unwrap()), @@ -574,6 +585,6 @@ mod tests { #[tokio::test] async fn disconnect_noise() { - disconnect::().await; + disconnect::().await; } } diff --git a/p2p/src/net/mock/peer.rs b/p2p/src/net/mock/peer.rs index 5124a32fa1..ace9a8c5ed 100644 --- a/p2p/src/net/mock/peer.rs +++ b/p2p/src/net/mock/peer.rs @@ -232,6 +232,9 @@ where #[cfg(test)] mod tests { use super::*; + use crate::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeTcpAddress, MakeTestAddress, + }; use crate::{ message, net::mock::{ @@ -244,11 +247,10 @@ mod tests { use chainstate::Locator; use common::primitives::semver::SemVer; use futures::FutureExt; - use p2p_test_utils::{MakeChannelAddress, MakeTcpAddress, MakeTestAddress}; async fn handshake_inbound() where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -325,12 +327,12 @@ mod tests { #[tokio::test] async fn handshake_inbound_noise() { - handshake_inbound::().await; + handshake_inbound::().await; } async fn handshake_outbound() where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -410,12 +412,12 @@ mod tests { #[tokio::test] async fn handshake_outbound_noise() { - handshake_outbound::().await; + handshake_outbound::().await; } async fn handshake_different_network() where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -471,12 +473,12 @@ mod tests { #[tokio::test] async fn handshake_different_network_noise() { - handshake_different_network::().await; + handshake_different_network::().await; } async fn invalid_handshake_message() where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -528,15 +530,15 @@ mod tests { #[tokio::test] async fn invalid_handshake_message_noise() { - invalid_handshake_message::().await; + invalid_handshake_message::().await; } pub async fn get_two_connected_sockets() -> (T::Stream, T::Stream) where - A: MakeTestAddress
, + A: MakeTestAddress, T: TransportSocket, { - let transport = T::new(); + let transport = A::make_transport(); let addr = A::make_address(); let mut server = transport.bind(addr).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs index 03920a6534..72ec98f180 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs @@ -18,9 +18,9 @@ use std::{ time::Duration, }; +use crate::testing_utils::{MakeChannelAddress, MakeTcpAddress, MakeTestAddress}; use async_trait::async_trait; use futures::StreamExt; -use p2p_test_utils::{MakeChannelAddress, MakeTcpAddress, MakeTestAddress}; use tokio::{ io::{AsyncReadExt, AsyncWriteExt}, time::timeout, diff --git a/p2p/src/net/mock/transport/impls/tcp.rs b/p2p/src/net/mock/transport/impls/tcp.rs index 1449e2dcfa..9d7f7252d6 100644 --- a/p2p/src/net/mock/transport/impls/tcp.rs +++ b/p2p/src/net/mock/transport/impls/tcp.rs @@ -102,7 +102,7 @@ impl PeerStream for TcpTransportStream {} #[cfg(test)] mod tests { - use p2p_test_utils::{MakeTcpAddress, MakeTestAddress}; + use crate::testing_utils::{MakeTcpAddress, MakeTestAddress}; use super::*; use crate::net::{ diff --git a/p2p/src/net/mod.rs b/p2p/src/net/mod.rs index 5c756f5a9e..bee95441a5 100644 --- a/p2p/src/net/mod.rs +++ b/p2p/src/net/mod.rs @@ -32,6 +32,11 @@ use crate::{config, message, message::Announcement}; /// that each network service provider must implement #[async_trait] pub trait NetworkingService { + /// A generic networking transport. + /// + /// Can be used to initialize networking transport with authentification keys for example. + type Transport; + /// A generic network address. /// /// Although the `Address` allows a fallible conversion to `BannableAddress`, a valid address @@ -81,6 +86,7 @@ pub trait NetworkingService { /// `bind_addr` - socket address for incoming P2P traffic /// `chain_config` - chain config of the node async fn start( + transport: Self::Transport, bind_addr: Self::Address, chain_config: Arc, p2p_config: Arc, diff --git a/p2p/src/peer_manager/tests/ban.rs b/p2p/src/peer_manager/tests/ban.rs index 9b48772f96..d581e70e0d 100644 --- a/p2p/src/peer_manager/tests/ban.rs +++ b/p2p/src/peer_manager/tests/ban.rs @@ -15,8 +15,10 @@ use std::sync::Arc; +use crate::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, +}; use common::{chain::config, primitives::semver::SemVer}; -use p2p_test_utils::{MakeChannelAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress}; use crate::{ error::{P2pError, PeerError}, @@ -38,7 +40,7 @@ use crate::{ // ban peer whose connected to us async fn ban_connected_peer() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -48,8 +50,8 @@ where let addr2 = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; - let mut pm2 = make_peer_manager::(addr2, config).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; + let mut pm2 = make_peer_manager::(A::make_transport(), addr2, config).await; let (address, peer_info) = connect_services::( &mut pm1.peer_connectivity_handle, @@ -88,12 +90,12 @@ async fn ban_connected_peer_mock_channels() { #[tokio::test] async fn ban_connected_peer_mock_noise() { - ban_connected_peer::>().await; + ban_connected_peer::>().await; } async fn banned_peer_attempts_to_connect() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + std::fmt::Debug + 'static, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -103,8 +105,8 @@ where let addr2 = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; - let mut pm2 = make_peer_manager::(addr2, config).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; + let mut pm2 = make_peer_manager::(A::make_transport(), addr2, config).await; let (address, peer_info) = connect_services::( &mut pm1.peer_connectivity_handle, @@ -158,13 +160,13 @@ async fn banned_peer_attempts_to_connect_mock_channel() { #[tokio::test] async fn banned_peer_attempts_to_connect_mock_noise() { // TODO: implement proper peer banning - banned_peer_attempts_to_connect::>().await; + banned_peer_attempts_to_connect::>().await; } // attempt to connect to banned peer async fn connect_to_banned_peer() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -174,8 +176,8 @@ where let addr2 = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; - let mut pm2 = make_peer_manager::(addr2, config).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; + let mut pm2 = make_peer_manager::(A::make_transport(), addr2, config).await; let (address, peer_info) = connect_services::( &mut pm1.peer_connectivity_handle, @@ -234,19 +236,20 @@ async fn connect_to_banned_peer_mock_channels() { #[tokio::test] async fn connect_to_banned_peer_mock_noise() { - connect_to_banned_peer::>().await; + connect_to_banned_peer::>().await; } async fn validate_invalid_outbound_connection(peer_address: S::Address, peer_id: S::PeerId) where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + std::fmt::Debug, S::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, <::Address as std::str::FromStr>::Err: std::fmt::Debug, { let config = Arc::new(config::create_mainnet()); - let mut peer_manager = make_peer_manager::(A::make_address(), Arc::clone(&config)).await; + let mut peer_manager = + make_peer_manager::(A::make_transport(), A::make_address(), Arc::clone(&config)).await; // valid connection let res = peer_manager.accept_connection( @@ -341,7 +344,7 @@ async fn validate_invalid_outbound_connection_mock_channels() { #[tokio::test] async fn validate_invalid_outbound_connection_mock_noise() { - validate_invalid_outbound_connection::>( + validate_invalid_outbound_connection::>( "210.113.67.107:2525".parse().unwrap(), MockPeerId::random(), ) @@ -350,14 +353,15 @@ async fn validate_invalid_outbound_connection_mock_noise() { async fn validate_invalid_inbound_connection(peer_address: S::Address, peer_id: S::PeerId) where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + 'static + std::fmt::Debug, S::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, <::Address as std::str::FromStr>::Err: std::fmt::Debug, { let config = Arc::new(config::create_mainnet()); - let mut peer_manager = make_peer_manager::(A::make_address(), Arc::clone(&config)).await; + let mut peer_manager = + make_peer_manager::(A::make_transport(), A::make_address(), Arc::clone(&config)).await; // invalid magic bytes let res = peer_manager.accept_inbound_connection( @@ -451,7 +455,7 @@ async fn validate_invalid_inbound_connection_mock_channels() { #[tokio::test] async fn validate_invalid_inbound_connection_mock_noise() { - validate_invalid_inbound_connection::>( + validate_invalid_inbound_connection::>( "210.113.67.107:2525".parse().unwrap(), MockPeerId::random(), ) @@ -460,7 +464,7 @@ async fn validate_invalid_inbound_connection_mock_noise() { async fn inbound_connection_invalid_magic() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -469,8 +473,14 @@ where let addr1 = A::make_address(); let addr2 = A::make_address(); - let mut pm1 = make_peer_manager::(addr1, Arc::new(config::create_mainnet())).await; + let mut pm1 = make_peer_manager::( + A::make_transport(), + addr1, + Arc::new(config::create_mainnet()), + ) + .await; let mut pm2 = make_peer_manager::( + A::make_transport(), addr2, Arc::new(common::chain::config::Builder::test_chain().magic_bytes([1, 2, 3, 4]).build()), ) @@ -514,5 +524,5 @@ async fn inbound_connection_invalid_magic_mock_channels() { #[tokio::test] async fn inbound_connection_invalid_magic_mock_noise() { - inbound_connection_invalid_magic::>().await; + inbound_connection_invalid_magic::>().await; } diff --git a/p2p/src/peer_manager/tests/connections.rs b/p2p/src/peer_manager/tests/connections.rs index 9e989273be..dd8783f3eb 100644 --- a/p2p/src/peer_manager/tests/connections.rs +++ b/p2p/src/peer_manager/tests/connections.rs @@ -18,8 +18,10 @@ use std::{net::SocketAddr, sync::Arc, time::Duration}; use libp2p::{Multiaddr, PeerId}; use tokio::{sync::oneshot, time::timeout}; +use crate::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, +}; use common::{chain::config, primitives::semver::SemVer}; -use p2p_test_utils::{MakeChannelAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress}; use crate::{ error::{DialError, P2pError, ProtocolError}, @@ -44,6 +46,7 @@ use crate::{ // try to connect to an address that no one listening on and verify it fails async fn test_peer_manager_connect( + transport: T::Transport, bind_addr: T::Address, remote_addr: T::Address, ) where @@ -53,7 +56,7 @@ async fn test_peer_manager_connect( <::Address as std::str::FromStr>::Err: std::fmt::Debug, { let config = Arc::new(config::create_mainnet()); - let mut peer_manager = make_peer_manager::(bind_addr, config).await; + let mut peer_manager = make_peer_manager::(transport, bind_addr, config).await; peer_manager.connect(remote_addr).await.unwrap(); @@ -68,28 +71,31 @@ async fn test_peer_manager_connect( #[tokio::test] async fn test_peer_manager_connect_mock() { + let transport = MakeTcpAddress::make_transport(); let bind_addr = MakeTcpAddress::make_address(); let remote_addr: SocketAddr = "[::1]:1".parse().unwrap(); - test_peer_manager_connect::>(bind_addr, remote_addr).await; + test_peer_manager_connect::>(transport, bind_addr, remote_addr) + .await; } #[tokio::test] async fn test_peer_manager_connect_libp2p() { + let transport = MakeP2pAddress::make_transport(); let bind_addr = MakeP2pAddress::make_address(); let remote_addr: Multiaddr = "/ip6/::1/tcp/6666/p2p/12D3KooWRn14SemPVxwzdQNg8e8Trythiww1FWrNfPbukYBmZEbJ" .parse() .unwrap(); - test_peer_manager_connect::(bind_addr, remote_addr).await; + test_peer_manager_connect::(transport, bind_addr, remote_addr).await; } // verify that the auto-connect functionality works if the number of active connections // is below the desired threshold and there are idle peers in the peerdb async fn test_auto_connect() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -99,8 +105,8 @@ where let addr2 = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; - let mut pm2 = make_peer_manager::(addr2, config).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; + let mut pm2 = make_peer_manager::(A::make_transport(), addr2, config).await; let addr = pm2.peer_connectivity_handle.local_addr().await.unwrap().unwrap(); let peer_id = *pm2.peer_connectivity_handle.peer_id(); @@ -143,12 +149,12 @@ async fn test_auto_connect_mock_channels() { #[tokio::test] async fn test_auto_connect_mock_noise() { - test_auto_connect::>().await; + test_auto_connect::>().await; } async fn connect_outbound_same_network() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -158,8 +164,8 @@ where let addr2 = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; - let mut pm2 = make_peer_manager::(addr2, config).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; + let mut pm2 = make_peer_manager::(A::make_transport(), addr2, config).await; connect_services::( &mut pm1.peer_connectivity_handle, @@ -185,14 +191,18 @@ async fn connect_outbound_same_network_mock_channels() { #[tokio::test] async fn connect_outbound_same_network_mock_noise() { - connect_outbound_same_network::>().await; + connect_outbound_same_network::>().await; } #[tokio::test] async fn test_validate_supported_protocols() { let config = Arc::new(config::create_mainnet()); - let peer_manager = - make_peer_manager::(MakeP2pAddress::make_address(), config).await; + let peer_manager = make_peer_manager::( + MakeP2pAddress::make_transport(), + MakeP2pAddress::make_address(), + config, + ) + .await; // all needed protocols assert!(peer_manager.validate_supported_protocols(&default_protocols())); @@ -237,7 +247,7 @@ async fn test_validate_supported_protocols() { async fn connect_outbound_different_network() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -247,8 +257,9 @@ where let addr2 = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; let mut pm2 = make_peer_manager::( + A::make_transport(), addr2, Arc::new(common::chain::config::Builder::test_chain().magic_bytes([1, 2, 3, 4]).build()), ) @@ -280,12 +291,12 @@ async fn connect_outbound_different_network_mock_channels() { #[tokio::test] async fn connect_outbound_different_network_mock_noise() { - connect_outbound_different_network::>().await; + connect_outbound_different_network::>().await; } async fn connect_inbound_same_network() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -295,8 +306,8 @@ where let addr2 = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; - let mut pm2 = make_peer_manager::(addr2, config).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; + let mut pm2 = make_peer_manager::(A::make_transport(), addr2, config).await; let (address, peer_info) = connect_services::( &mut pm1.peer_connectivity_handle, @@ -323,12 +334,12 @@ async fn connect_inbound_same_network_mock_channel() { #[tokio::test] async fn connect_inbound_same_network_mock_noise() { - connect_inbound_same_network::>().await; + connect_inbound_same_network::>().await; } async fn connect_inbound_different_network() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -337,8 +348,14 @@ where let addr1 = A::make_address(); let addr2 = A::make_address(); - let mut pm1 = make_peer_manager::(addr1, Arc::new(config::create_mainnet())).await; + let mut pm1 = make_peer_manager::( + A::make_transport(), + addr1, + Arc::new(config::create_mainnet()), + ) + .await; let mut pm2 = make_peer_manager::( + A::make_transport(), addr2, Arc::new(common::chain::config::Builder::test_chain().magic_bytes([1, 2, 3, 4]).build()), ) @@ -377,12 +394,12 @@ async fn connect_inbound_different_network_mock_channels() { #[tokio::test] async fn connect_inbound_different_network_mock_noise() { - connect_inbound_different_network::>().await; + connect_inbound_different_network::>().await; } async fn remote_closes_connection() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -391,8 +408,18 @@ where let addr1 = A::make_address(); let addr2 = A::make_address(); - let mut pm1 = make_peer_manager::(addr1, Arc::new(config::create_mainnet())).await; - let mut pm2 = make_peer_manager::(addr2, Arc::new(config::create_mainnet())).await; + let mut pm1 = make_peer_manager::( + A::make_transport(), + addr1, + Arc::new(config::create_mainnet()), + ) + .await; + let mut pm2 = make_peer_manager::( + A::make_transport(), + addr2, + Arc::new(config::create_mainnet()), + ) + .await; let (_address, _peer_info) = connect_services::( &mut pm1.peer_connectivity_handle, @@ -429,12 +456,12 @@ async fn remote_closes_connection_mock_channels() { #[tokio::test] async fn remote_closes_connection_mock_noise() { - remote_closes_connection::>().await; + remote_closes_connection::>().await; } async fn inbound_connection_too_many_peers(peers: Vec>) where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -445,8 +472,8 @@ where let default_addr = A::make_address(); let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; - let mut pm2 = make_peer_manager::(addr2, Arc::clone(&config)).await; + let mut pm1 = make_peer_manager::(A::make_transport(), addr1, Arc::clone(&config)).await; + let mut pm2 = make_peer_manager::(A::make_transport(), addr2, Arc::clone(&config)).await; peers.into_iter().for_each(|info| { pm1.peerdb.peer_connected(default_addr.clone(), info); @@ -560,11 +587,11 @@ async fn inbound_connection_too_many_peers_mock_noise() { }) .collect::>(); - inbound_connection_too_many_peers::>(peers) + inbound_connection_too_many_peers::>(peers) .await; } -async fn connection_timeout(addr1: T::Address, addr2: T::Address) +async fn connection_timeout(transport: T::Transport, addr1: T::Address, addr2: T::Address) where T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, @@ -572,7 +599,7 @@ where <::Address as std::str::FromStr>::Err: std::fmt::Debug, { let config = Arc::new(config::create_mainnet()); - let mut pm1 = make_peer_manager::(addr1, Arc::clone(&config)).await; + let mut pm1 = make_peer_manager::(transport, addr1, Arc::clone(&config)).await; pm1.peer_connectivity_handle.connect(addr2).await.expect("dial to succeed"); @@ -596,6 +623,7 @@ where #[tokio::test] async fn connection_timeout_libp2p() { connection_timeout::( + MakeP2pAddress::make_transport(), MakeP2pAddress::make_address(), format!("/ip4/255.255.255.255/tcp/8888/p2p/{}", PeerId::random()) .parse() @@ -607,6 +635,7 @@ async fn connection_timeout_libp2p() { #[tokio::test] async fn connection_timeout_mock_tcp() { connection_timeout::>( + MakeTcpAddress::make_transport(), MakeTcpAddress::make_address(), MakeTcpAddress::make_address(), ) @@ -616,6 +645,7 @@ async fn connection_timeout_mock_tcp() { #[tokio::test] async fn connection_timeout_mock_channels() { connection_timeout::>( + MakeChannelAddress::make_transport(), MakeChannelAddress::make_address(), 65_535, ) @@ -625,15 +655,19 @@ async fn connection_timeout_mock_channels() { #[tokio::test] async fn connection_timeout_mock_noise() { connection_timeout::>( - MakeTcpAddress::make_address(), - MakeTcpAddress::make_address(), + MakeNoiseAddress::make_transport(), + MakeNoiseAddress::make_address(), + MakeNoiseAddress::make_address(), ) .await; } // try to establish a new connection through RPC and verify that it is notified of the timeout -async fn connection_timeout_rpc_notified(addr1: T::Address, addr2: T::Address) -where +async fn connection_timeout_rpc_notified( + transport: T::Transport, + addr1: T::Address, + addr2: T::Address, +) where T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -641,7 +675,14 @@ where { let config = Arc::new(config::create_mainnet()); let p2p_config = Arc::new(Default::default()); - let (conn, _) = T::start(addr1, Arc::clone(&config), Arc::clone(&p2p_config)).await.unwrap(); + let (conn, _) = T::start( + transport, + addr1, + Arc::clone(&config), + Arc::clone(&p2p_config), + ) + .await + .unwrap(); let (tx, rx) = tokio::sync::mpsc::unbounded_channel(); let (tx_sync, mut rx_sync) = tokio::sync::mpsc::unbounded_channel(); @@ -682,6 +723,7 @@ where #[tokio::test] async fn connection_timeout_rpc_notified_libp2p() { connection_timeout_rpc_notified::( + MakeP2pAddress::make_transport(), MakeP2pAddress::make_address(), format!("/ip4/255.255.255.255/tcp/8888/p2p/{}", PeerId::random()) .parse() @@ -693,6 +735,7 @@ async fn connection_timeout_rpc_notified_libp2p() { #[tokio::test] async fn connection_timeout_rpc_notified_mock_tcp() { connection_timeout_rpc_notified::>( + MakeTcpAddress::make_transport(), MakeTcpAddress::make_address(), MakeTcpAddress::make_address(), ) @@ -702,6 +745,7 @@ async fn connection_timeout_rpc_notified_mock_tcp() { #[tokio::test] async fn connection_timeout_rpc_notified_mock_channels() { connection_timeout_rpc_notified::>( + MakeChannelAddress::make_transport(), MakeChannelAddress::make_address(), 9999, ) @@ -711,8 +755,9 @@ async fn connection_timeout_rpc_notified_mock_channels() { #[tokio::test] async fn connection_timeout_rpc_notified_mock_noise() { connection_timeout_rpc_notified::>( - MakeTcpAddress::make_address(), - MakeTcpAddress::make_address(), + MakeNoiseAddress::make_transport(), + MakeNoiseAddress::make_address(), + MakeNoiseAddress::make_address(), ) .await; } @@ -722,7 +767,9 @@ async fn connection_timeout_rpc_notified_mock_noise() { async fn connect_no_ip_in_address_libp2p() { let config = Arc::new(config::create_mainnet()); let bind_address = MakeP2pAddress::make_address(); - let mut peer_manager = make_peer_manager::(bind_address, config).await; + let mut peer_manager = + make_peer_manager::(MakeP2pAddress::make_transport(), bind_address, config) + .await; let no_ip_addresses = [ Multiaddr::empty(), diff --git a/p2p/src/peer_manager/tests/mod.rs b/p2p/src/peer_manager/tests/mod.rs index 4e48055b10..6c27ca1405 100644 --- a/p2p/src/peer_manager/tests/mod.rs +++ b/p2p/src/peer_manager/tests/mod.rs @@ -31,6 +31,7 @@ use crate::{ }; async fn make_peer_manager( + transport: T::Transport, addr: T::Address, chain_config: Arc, ) -> PeerManager @@ -40,7 +41,14 @@ where ::Address: FromStr, <::Address as FromStr>::Err: Debug, { - let (conn, _) = T::start(addr, Arc::clone(&chain_config), Default::default()).await.unwrap(); + let (conn, _) = T::start( + transport, + addr, + Arc::clone(&chain_config), + Default::default(), + ) + .await + .unwrap(); let (_, rx) = tokio::sync::mpsc::unbounded_channel(); let (tx_sync, mut rx_sync) = tokio::sync::mpsc::unbounded_channel(); diff --git a/p2p/src/sync/tests/block_response.rs b/p2p/src/sync/tests/block_response.rs index cc40991ce2..2ead39097d 100644 --- a/p2p/src/sync/tests/block_response.rs +++ b/p2p/src/sync/tests/block_response.rs @@ -16,12 +16,13 @@ use std::sync::Arc; use libp2p::PeerId; +use p2p_test_utils::TestBlockInfo; +use crate::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, +}; use chainstate::ChainstateError; use common::{chain::block::consensus_data::PoWData, primitives::Idable}; -use p2p_test_utils::{ - MakeChannelAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, TestBlockInfo, -}; use crate::{ error::{P2pError, PeerError, ProtocolError}, @@ -43,7 +44,7 @@ use crate::{ // peer doesn't exist async fn peer_doesnt_exist() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -52,7 +53,7 @@ where let addr = A::make_address(); let peer_id = P::random(); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; assert_eq!( mgr.validate_header_response(&peer_id, vec![]).await, @@ -77,13 +78,13 @@ async fn peer_doesnt_exist_mock_channels() { #[tokio::test] async fn peer_doesnt_exist_mock_noise() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>().await; } // submit valid block but the peer is in invalid state async fn valid_block() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -93,7 +94,7 @@ where let peer_id = P::random(); let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let blocks = p2p_test_utils::create_n_blocks( @@ -131,13 +132,13 @@ async fn valid_block_mock_channels() { #[tokio::test] async fn valid_block_mock_noise() { - valid_block::>().await; + valid_block::>().await; } // submit valid block async fn valid_block_invalid_state() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -147,7 +148,7 @@ where let peer_id = P::random(); let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let blocks = p2p_test_utils::create_n_blocks( @@ -182,13 +183,14 @@ async fn valid_block_invalid_state_mock_channels() { #[tokio::test] async fn valid_block_invalid_state_mock_noise() { - valid_block_invalid_state::>().await; + valid_block_invalid_state::>() + .await; } // submit the same block twice async fn valid_block_resubmitted_chainstate() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -199,7 +201,7 @@ where let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let blocks = p2p_test_utils::create_n_blocks( @@ -246,14 +248,18 @@ async fn valid_block_resubmitted_chainstate_mock_channels() { #[tokio::test] async fn valid_block_resubmitted_chainstate_mock_noise() { - valid_block_resubmitted_chainstate::>() - .await; + valid_block_resubmitted_chainstate::< + MakeNoiseAddress, + MockPeerId, + MockService, + >() + .await; } // block validation fails async fn invalid_block() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -264,7 +270,7 @@ where let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let mut blocks = p2p_test_utils::create_n_blocks( @@ -307,5 +313,5 @@ async fn invalid_block_mock_channels() { #[tokio::test] async fn invalid_block_mock_noise() { - invalid_block::>().await; + invalid_block::>().await; } diff --git a/p2p/src/sync/tests/connection.rs b/p2p/src/sync/tests/connection.rs index dc2a41018a..e8149c77be 100644 --- a/p2p/src/sync/tests/connection.rs +++ b/p2p/src/sync/tests/connection.rs @@ -15,7 +15,9 @@ use libp2p::PeerId; -use p2p_test_utils::{MakeChannelAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress}; +use crate::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, +}; use crate::{ error::{P2pError, PeerError}, @@ -34,7 +36,7 @@ use crate::{ // handle peer reconnection async fn test_peer_reconnected() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -43,7 +45,7 @@ where let addr = A::make_address(); let peer_id = P::random(); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; assert_eq!(mgr.peers.len(), 1); @@ -71,13 +73,13 @@ async fn test_peer_reconnected_mock_channels() { #[tokio::test] async fn test_peer_reconnected_mock_noise() { - test_peer_reconnected::>().await; + test_peer_reconnected::>().await; } // handle peer disconnection event async fn test_peer_disconnected() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -87,7 +89,7 @@ where let peer_id1 = P::random(); let peer_id2 = P::random(); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; // send Connected event to SyncManager register_peer(&mut mgr, peer_id1).await; @@ -119,5 +121,5 @@ async fn test_peer_disconnected_mock_channels() { #[tokio::test] async fn test_peer_disconnected_mock_noise() { - test_peer_disconnected::>().await; + test_peer_disconnected::>().await; } diff --git a/p2p/src/sync/tests/header_response.rs b/p2p/src/sync/tests/header_response.rs index 6202f1e7b9..2aac70da83 100644 --- a/p2p/src/sync/tests/header_response.rs +++ b/p2p/src/sync/tests/header_response.rs @@ -18,9 +18,10 @@ use std::sync::Arc; use crypto::random::{Rng, SliceRandom}; use libp2p::PeerId; -use p2p_test_utils::{ - MakeChannelAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, TestBlockInfo, +use crate::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, }; +use p2p_test_utils::TestBlockInfo; use crate::{ error::{P2pError, PeerError, ProtocolError}, @@ -42,7 +43,7 @@ use crate::{ // response contains more than 2000 headers async fn too_many_headers() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -52,7 +53,7 @@ where let peer_id = P::random(); let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let headers = p2p_test_utils::create_n_blocks( @@ -87,13 +88,13 @@ async fn too_many_headers_mock_channels() { #[tokio::test] async fn too_many_headers_mock_noise() { - too_many_headers::>().await; + too_many_headers::>().await; } // header response is empty async fn empty_response() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -102,7 +103,7 @@ where let addr = A::make_address(); let peer_id = P::random(); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; assert_eq!( @@ -128,13 +129,13 @@ async fn empty_response_mock_channels() { #[tokio::test] async fn empty_response_mock_noise() { - empty_response::>().await; + empty_response::>().await; } // valid response with headers in order and the first header attaching to local chain async fn valid_response() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -146,7 +147,7 @@ where let mut rng = crypto::random::make_pseudo_rng(); let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let headers = p2p_test_utils::create_n_blocks( @@ -182,13 +183,13 @@ async fn valid_response_mock_channles() { #[tokio::test] async fn valid_response_mock_noise() { - valid_response::>().await; + valid_response::>().await; } // the first header doesn't attach to local chain async fn header_doesnt_attach_to_local_chain() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -200,7 +201,7 @@ where let mut rng = crypto::random::make_pseudo_rng(); let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let headers = p2p_test_utils::create_n_blocks( @@ -246,7 +247,7 @@ async fn header_doesnt_attach_to_local_chain_mock_channel() { #[tokio::test] async fn header_doesnt_attach_to_local_chain_mock_noise() { header_doesnt_attach_to_local_chain::< - MakeTcpAddress, + MakeNoiseAddress, MockPeerId, MockService, >() @@ -256,7 +257,7 @@ async fn header_doesnt_attach_to_local_chain_mock_noise() { // valid headers but they are not in order async fn headers_not_in_order() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -268,7 +269,7 @@ where let mut rng = crypto::random::make_pseudo_rng(); let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; let mut headers = p2p_test_utils::create_n_blocks( @@ -305,13 +306,13 @@ async fn headers_not_in_order_mock_channels() { #[tokio::test] async fn headers_not_in_order_mock_noise() { - headers_not_in_order::>().await; + headers_not_in_order::>().await; } // peer state is incorrect to be sending header responses async fn invalid_state() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -323,7 +324,7 @@ where let mut rng = crypto::random::make_pseudo_rng(); let config = Arc::new(common::chain::config::create_unit_test_config()); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; register_peer(&mut mgr, peer_id).await; mgr.peers.get_mut(&peer_id).unwrap().set_state(peer::PeerSyncState::Unknown); @@ -360,13 +361,13 @@ async fn invalid_state_mock_channels() { #[tokio::test] async fn invalid_state_mock_noise() { - invalid_state::>().await; + invalid_state::>().await; } // peer doesn't exist async fn peer_doesnt_exist() where - A: MakeTestAddress
, + A: MakeTestAddress, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -375,7 +376,7 @@ where let addr = A::make_address(); let peer_id = P::random(); - let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(addr).await; + let (mut mgr, _conn, _sync, _pm) = make_sync_manager::(A::make_transport(), addr).await; assert_eq!( mgr.validate_header_response(&peer_id, vec![]).await, @@ -400,5 +401,5 @@ async fn peer_doesnt_exist_mock_channels() { #[tokio::test] async fn peer_doesnt_exist_mock_noise() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>().await; } diff --git a/p2p/src/sync/tests/mod.rs b/p2p/src/sync/tests/mod.rs index c8ee879d5f..733d7055de 100644 --- a/p2p/src/sync/tests/mod.rs +++ b/p2p/src/sync/tests/mod.rs @@ -34,6 +34,7 @@ use crate::{ }; async fn make_sync_manager( + transport: T::Transport, addr: T::Address, ) -> ( BlockSyncManager, @@ -76,9 +77,14 @@ where mdns_config: MdnsConfig::Disabled.into(), request_timeout: Duration::from_secs(1).into(), }); - let (conn, sync) = T::start(addr, Arc::clone(&chain_config), Arc::clone(&p2p_config)) - .await - .unwrap(); + let (conn, sync) = T::start( + transport, + addr, + Arc::clone(&chain_config), + Arc::clone(&p2p_config), + ) + .await + .unwrap(); ( BlockSyncManager::::new(chain_config, p2p_config, sync, handle, rx_p2p_sync, tx_pm), diff --git a/p2p/src/sync/tests/request_response.rs b/p2p/src/sync/tests/request_response.rs index 4479514924..445e17808a 100644 --- a/p2p/src/sync/tests/request_response.rs +++ b/p2p/src/sync/tests/request_response.rs @@ -19,6 +19,9 @@ use tokio::time::timeout; use chainstate::Locator; +use crate::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, +}; use crate::{ event::PeerManagerEvent, message::{HeaderListRequest, HeaderListResponse, Request, Response}, @@ -34,17 +37,18 @@ use crate::{ sync::tests::make_sync_manager, ConnectivityService, NetworkingService, SyncingMessagingService, }; -use p2p_test_utils::{MakeChannelAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress}; async fn request_response() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + Debug + 'static, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, { - let (mut mgr1, mut conn1, _sync1, _pm1) = make_sync_manager::(A::make_address()).await; - let (mut mgr2, mut conn2, _sync2, _pm2) = make_sync_manager::(A::make_address()).await; + let (mut mgr1, mut conn1, _sync1, _pm1) = + make_sync_manager::(A::make_transport(), A::make_address()).await; + let (mut mgr2, mut conn2, _sync2, _pm2) = + make_sync_manager::(A::make_transport(), A::make_address()).await; // connect the two managers together so that they can exchange messages connect_services::(&mut conn1, &mut conn2).await; @@ -97,12 +101,12 @@ async fn request_response_mock_channels() { #[tokio::test] async fn test_request_response_mock_noise() { - request_response::>().await; + request_response::>().await; } async fn multiple_requests_and_responses() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -110,8 +114,10 @@ where let addr1 = A::make_address(); let addr2 = A::make_address(); - let (mut mgr1, mut conn1, _sync1, _pm1) = make_sync_manager::(addr1).await; - let (mut mgr2, mut conn2, _sync2, _pm2) = make_sync_manager::(addr2).await; + let (mut mgr1, mut conn1, _sync1, _pm1) = + make_sync_manager::(A::make_transport(), addr1).await; + let (mut mgr2, mut conn2, _sync2, _pm2) = + make_sync_manager::(A::make_transport(), addr2).await; // connect the two managers together so that they can exchange messages connect_services::(&mut conn1, &mut conn2).await; @@ -190,20 +196,22 @@ async fn multiple_requests_and_responses_mock_channels() { #[tokio::test] async fn multiple_requests_and_responses_mock_noise() { - multiple_requests_and_responses::>().await; + multiple_requests_and_responses::>().await; } // Receive getheaders before receiving the `Connected` event from the peer manager which makes the // request be rejected and time out in the sender's end. async fn request_timeout() where - A: MakeTestAddress
, + A: MakeTestAddress, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, { - let (mut mgr1, mut conn1, _sync1, mut pm1) = make_sync_manager::(A::make_address()).await; - let (mut mgr2, mut conn2, _sync2, _pm2) = make_sync_manager::(A::make_address()).await; + let (mut mgr1, mut conn1, _sync1, mut pm1) = + make_sync_manager::(A::make_transport(), A::make_address()).await; + let (mut mgr2, mut conn2, _sync2, _pm2) = + make_sync_manager::(A::make_transport(), A::make_address()).await; // connect the two managers together so that they can exchange messages connect_services::(&mut conn1, &mut conn2).await; @@ -255,5 +263,5 @@ async fn request_timeout_mock_channels() { #[tokio::test] async fn request_timeout_mock_noise() { - request_timeout::>().await; + request_timeout::>().await; } diff --git a/p2p/src/testing_utils.rs b/p2p/src/testing_utils.rs new file mode 100644 index 0000000000..1bee53ae7c --- /dev/null +++ b/p2p/src/testing_utils.rs @@ -0,0 +1,89 @@ +use crate::net::mock::transport::TransportSocket; + +use libp2p::Multiaddr; +use std::net::SocketAddr; + +/// An interface for creating the address. +/// +/// This abstraction layer is needed to uniformly create an address in the tests for different +/// mocks transport implementations. +pub trait MakeTestAddress { + /// A transport type. + type Transport; + + /// An address type. + type Address: Clone + Eq + std::fmt::Debug + std::hash::Hash + Send + Sync + ToString; + + /// Creates new transport instance, generating new keys if needed. + fn make_transport() -> Self::Transport; + + /// Creates a new unused address. + /// + /// This should work similar to requesting a port of number 0 when opening a TCP connection. + fn make_address() -> Self::Address; +} + +pub struct MakeP2pAddress {} + +impl MakeTestAddress for MakeP2pAddress { + type Transport = crate::net::libp2p::Libp2pTransport; + + type Address = Multiaddr; + + fn make_transport() -> Self::Transport { + let p2p_config = Default::default(); + crate::net::libp2p::make_transport(&p2p_config) + } + + fn make_address() -> Self::Address { + "/ip6/::1/tcp/0".parse().unwrap() + } +} + +pub struct MakeTcpAddress {} + +impl MakeTestAddress for MakeTcpAddress { + type Transport = crate::net::mock::transport::TcpTransportSocket; + + type Address = SocketAddr; + + fn make_transport() -> Self::Transport { + crate::net::mock::transport::TcpTransportSocket::new() + } + + fn make_address() -> Self::Address { + "[::1]:0".parse().unwrap() + } +} + +pub struct MakeChannelAddress {} + +impl MakeTestAddress for MakeChannelAddress { + type Transport = crate::net::mock::transport::MockChannelTransport; + + type Address = u64; + + fn make_transport() -> Self::Transport { + crate::net::mock::transport::MockChannelTransport::new() + } + + fn make_address() -> Self::Address { + 0 + } +} + +pub struct MakeNoiseAddress {} + +impl MakeTestAddress for MakeNoiseAddress { + type Transport = crate::net::mock::transport::NoiseTcpTransport; + + type Address = SocketAddr; + + fn make_transport() -> Self::Transport { + crate::net::mock::transport::NoiseTcpTransport::new() + } + + fn make_address() -> Self::Address { + "[::1]:0".parse().unwrap() + } +} diff --git a/p2p/tests/backend_libp2p.rs b/p2p/tests/backend_libp2p.rs index 86c1b7c570..bfe63ed0d7 100644 --- a/p2p/tests/backend_libp2p.rs +++ b/p2p/tests/backend_libp2p.rs @@ -14,7 +14,7 @@ // limitations under the License. use p2p::net::libp2p::Libp2pService; -use p2p_test_utils::MakeP2pAddress; +use p2p::testing_utils::MakeP2pAddress; fn main() { p2p_backend_test_suite::run::(); diff --git a/p2p/tests/backend_mock_channels.rs b/p2p/tests/backend_mock_channels.rs index 8e3d81f5b6..992a5b08c2 100644 --- a/p2p/tests/backend_mock_channels.rs +++ b/p2p/tests/backend_mock_channels.rs @@ -14,7 +14,7 @@ // limitations under the License. use p2p::net::mock::{transport::MockChannelTransport, MockService}; -use p2p_test_utils::MakeChannelAddress; +use p2p::testing_utils::MakeChannelAddress; fn main() { p2p_backend_test_suite::run::>(); diff --git a/p2p/tests/backend_mock_noise.rs b/p2p/tests/backend_mock_noise.rs index 1f8b2fbe9f..5608385c43 100644 --- a/p2p/tests/backend_mock_noise.rs +++ b/p2p/tests/backend_mock_noise.rs @@ -17,11 +17,11 @@ use p2p::net::mock::{ transport::{NoiseEncryptionAdapter, TcpTransportSocket, WrappedTransportSocket}, MockService, }; -use p2p_test_utils::MakeTcpAddress; +use p2p::testing_utils::MakeNoiseAddress; fn main() { p2p_backend_test_suite::run::< - MakeTcpAddress, + MakeNoiseAddress, MockService>, >(); } diff --git a/p2p/tests/backend_mock_tcp.rs b/p2p/tests/backend_mock_tcp.rs index 0ec16bcca7..5aabb7def6 100644 --- a/p2p/tests/backend_mock_tcp.rs +++ b/p2p/tests/backend_mock_tcp.rs @@ -14,7 +14,7 @@ // limitations under the License. use p2p::net::mock::{transport::TcpTransportSocket, MockService}; -use p2p_test_utils::MakeTcpAddress; +use p2p::testing_utils::MakeTcpAddress; fn main() { p2p_backend_test_suite::run::>(); diff --git a/p2p/tests/block_announcement.rs b/p2p/tests/block_announcement.rs index 0eac0a5fe7..c33dfa0b81 100644 --- a/p2p/tests/block_announcement.rs +++ b/p2p/tests/block_announcement.rs @@ -20,6 +20,9 @@ use common::{ primitives::{Id, H256}, }; +use p2p::testing_utils::{ + MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, +}; use p2p::{ error::{P2pError, PublishError}, message::Announcement, @@ -34,28 +37,36 @@ use p2p::{ }, peer_manager::helpers::connect_services, }; -use p2p_test_utils::{MakeChannelAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress}; // Test announcements with multiple peers and verify that the message validation is done and peers // don't automatically forward the messages. async fn block_announcement_3_peers() where - A: MakeTestAddress
, + A: MakeTestAddress, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, { let config = Arc::new(common::chain::config::create_mainnet()); - let (mut conn1, mut sync1) = - S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); + let (mut conn1, mut sync1) = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); let (mut peer1, mut peer2, mut peer3) = { let mut peers = futures::future::join_all((0..3).map(|_| async { - let res = S::start(A::make_address(), Arc::clone(&config), Default::default()) - .await - .unwrap(); + let res = S::start( + A::make_transport(), + A::make_address(), + Arc::clone(&config), + Default::default(), + ) + .await + .unwrap(); (res.0, res.1) })) .await; @@ -199,5 +210,5 @@ async fn block_announcement_3_peers_channels() { #[ignore] #[tokio::test] async fn block_announcement_3_peers_noise() { - block_announcement_3_peers::>().await; + block_announcement_3_peers::>().await; } diff --git a/p2p/tests/libp2p-mdns.rs b/p2p/tests/libp2p-mdns.rs index d9f622d079..97f5b95c97 100644 --- a/p2p/tests/libp2p-mdns.rs +++ b/p2p/tests/libp2p-mdns.rs @@ -17,19 +17,20 @@ use std::{sync::Arc, time::Duration}; use libp2p::multiaddr::Protocol; +use p2p::testing_utils::{MakeP2pAddress, MakeTestAddress}; use p2p::{ config::{MdnsConfig, P2pConfig}, net::{ libp2p::Libp2pService, types::ConnectivityEvent, ConnectivityService, NetworkingService, }, }; -use p2p_test_utils::{MakeP2pAddress, MakeTestAddress}; // verify that libp2p mdns peer discovery works #[tokio::test] async fn test_libp2p_peer_discovery() { let config = Arc::new(common::chain::config::create_mainnet()); let (mut serv, _) = Libp2pService::start( + MakeP2pAddress::make_transport(), MakeP2pAddress::make_address(), Arc::clone(&config), Arc::new(P2pConfig { @@ -48,6 +49,7 @@ async fn test_libp2p_peer_discovery() { .unwrap(); let (mut serv2, _) = Libp2pService::start( + MakeP2pAddress::make_transport(), MakeP2pAddress::make_address(), Arc::clone(&config), Arc::new(P2pConfig { From 56e2f50faa0bf3c21244cf8d7f22be9c454e991d Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Wed, 7 Dec 2022 17:43:02 +0300 Subject: [PATCH 4/9] Remove new from StreamAdapter trait --- p2p/src/net/mock/transport/impls/channel.rs | 10 +-- .../impls/stream_adapter/identity.rs | 10 +-- .../transport/impls/stream_adapter/noise.rs | 16 +++-- .../transport/impls/stream_adapter/traits.rs | 2 - .../stream_adapter/wrapped_transport/tests.rs | 68 +++++++++++++------ .../wrapped_transport/wrapped_socket.rs | 18 ++--- p2p/src/net/mock/transport/impls/tcp.rs | 4 -- p2p/src/net/mock/transport/traits/socket.rs | 3 - p2p/src/testing_utils.rs | 25 +++++-- 9 files changed, 96 insertions(+), 60 deletions(-) diff --git a/p2p/src/net/mock/transport/impls/channel.rs b/p2p/src/net/mock/transport/impls/channel.rs index 8f15b81183..27c423d14f 100644 --- a/p2p/src/net/mock/transport/impls/channel.rs +++ b/p2p/src/net/mock/transport/impls/channel.rs @@ -48,6 +48,12 @@ static CONNECTIONS: Lazy Self { + MockChannelTransport + } +} + #[async_trait] impl TransportSocket for MockChannelTransport { type Address = Address; @@ -55,10 +61,6 @@ impl TransportSocket for MockChannelTransport { type Listener = MockChannelListener; type Stream = ChannelMockStream; - fn new() -> Self { - Self - } - async fn bind(&self, address: Self::Address) -> Result { let mut connections = CONNECTIONS.lock().expect("Connections mutex is poisoned"); diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs b/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs index a0a559cd0a..03fa2e225d 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/identity.rs @@ -22,14 +22,16 @@ use super::StreamAdapter; #[derive(Debug, Clone)] pub struct IdentityStreamAdapter; +impl IdentityStreamAdapter { + pub fn new() -> Self { + Self + } +} + /// A StreamAdapter that does nothing with no handshake (Identity operation on data that goes through it) impl StreamAdapter for IdentityStreamAdapter { type Stream = T; - fn new() -> Self { - Self - } - fn handshake(&self, base: T, _role: Role) -> BoxFuture<'static, crate::Result> { Box::pin(ready(Ok(base))) } diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/noise.rs b/p2p/src/net/mock/transport/impls/stream_adapter/noise.rs index 6029d07e9e..84c4b5f6e0 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/noise.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/noise.rs @@ -38,6 +38,15 @@ pub struct NoiseEncryptionAdapter { local_key: snowstorm::Keypair, } +impl NoiseEncryptionAdapter { + pub fn gen_new() -> Self { + let local_key = snowstorm::Builder::new(NOISE_HANDSHAKE_PARAMS.clone()) + .generate_keypair() + .expect("key generation must succeed"); + Self { local_key } + } +} + impl std::fmt::Debug for NoiseEncryptionAdapter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("NoiseEncryptionAdapter").finish() @@ -59,13 +68,6 @@ impl Clone for NoiseEncryptionAdapter { impl StreamAdapter for NoiseEncryptionAdapter { type Stream = snowstorm::NoiseStream; - fn new() -> Self { - let local_key = snowstorm::Builder::new(NOISE_HANDSHAKE_PARAMS.clone()) - .generate_keypair() - .expect("key generation must succeed"); - Self { local_key } - } - fn handshake(&self, base: T, role: Role) -> BoxFuture<'static, crate::Result> { let local_key = self.clone().local_key; Box::pin(async move { diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs b/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs index 4dd81530e4..f177d8159e 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/traits.rs @@ -24,8 +24,6 @@ use crate::{ pub trait StreamAdapter: Clone + Send + Sync + 'static { type Stream: PeerStream; - fn new() -> Self; - /// Wraps base async stream into AsyncRead/AsyncWrite stream that may implement encryption. fn handshake(&self, base: T, role: Role) -> BoxFuture<'static, Result>; } diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs index 72ec98f180..675243216b 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs @@ -51,8 +51,7 @@ async fn send_recv(sender: &mut T, receiver: &mut T, len: usize) assert_eq!(send_data, recv_data); } -async fn test, T: TransportSocket>() { - let transport = T::new(); +async fn test, T: TransportSocket>(transport: T) { let mut server = transport.bind(A::make_address()).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); @@ -69,22 +68,30 @@ async fn test, T: TransportSocket>() { #[tokio::test] async fn test_send_recv() { - test::().await; - test::().await; + test::(TcpTransportSocket::new()).await; + + test::(MockChannelTransport::new()).await; + + test::>( + WrappedTransportSocket::new(NoiseEncryptionAdapter::gen_new(), TcpTransportSocket::new()), + ) + .await; - test::>() - .await; test::< MakeChannelAddress, WrappedTransportSocket, - >() + >(WrappedTransportSocket::new(NoiseEncryptionAdapter::gen_new(), MockChannelTransport::new())) .await; - test::>() - .await; + + test::>( + WrappedTransportSocket::new(IdentityStreamAdapter::new(), TcpTransportSocket::new()), + ) + .await; + test::< MakeChannelAddress, WrappedTransportSocket, - >() + >(WrappedTransportSocket::new(IdentityStreamAdapter::new(), MockChannelTransport::new())) .await; test::< @@ -93,7 +100,10 @@ async fn test_send_recv() { NoiseEncryptionAdapter, WrappedTransportSocket, >, - >() + >(WrappedTransportSocket::new( + NoiseEncryptionAdapter::gen_new(), + WrappedTransportSocket::new(NoiseEncryptionAdapter::gen_new(), TcpTransportSocket::new()), + )) .await; } @@ -107,19 +117,21 @@ pub struct TestMockListener { port_open: Arc>, } -#[async_trait] -impl TransportSocket for TestMockTransport { - type Address = ::Address; - type BannableAddress = ::BannableAddress; - type Listener = TestMockListener; - type Stream = ::Stream; - +impl TestMockTransport { fn new() -> Self { Self { transport: MockChannelTransport::new(), port_open: Default::default(), } } +} + +#[async_trait] +impl TransportSocket for TestMockTransport { + type Address = ::Address; + type BannableAddress = ::BannableAddress; + type Listener = TestMockListener; + type Stream = ::Stream; async fn bind(&self, address: Self::Address) -> crate::Result { let listener = self.transport.bind(address).await.unwrap(); @@ -165,7 +177,10 @@ impl Drop for TestMockListener { #[tokio::test] // Test that the base listener is dropped after AdaptedMockTransport::Listener is dropped. async fn test_bind_port_closed() { - let transport = WrappedTransportSocket::::new(); + let transport = WrappedTransportSocket::::new( + NoiseEncryptionAdapter::gen_new(), + TestMockTransport::new(), + ); assert!(!*transport.base_transport.port_open.lock().unwrap()); let listener = transport.bind(0).await.unwrap(); @@ -177,7 +192,10 @@ async fn test_bind_port_closed() { #[tokio::test] async fn send_2_reqs() { - let transport = WrappedTransportSocket::::new(); + let transport = WrappedTransportSocket::::new( + NoiseEncryptionAdapter::gen_new(), + TcpTransportSocket::new(), + ); let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); @@ -224,7 +242,10 @@ async fn send_2_reqs() { #[tokio::test] async fn pending_handshakes() { - let transport = WrappedTransportSocket::::new(); + let transport = WrappedTransportSocket::::new( + NoiseEncryptionAdapter::gen_new(), + TcpTransportSocket::new(), + ); let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); let local_addr = server.local_address().unwrap(); @@ -256,7 +277,10 @@ async fn pending_handshakes() { #[tokio::test] async fn handshake_timeout() { - let transport = WrappedTransportSocket::::new(); + let transport = WrappedTransportSocket::::new( + NoiseEncryptionAdapter::gen_new(), + TcpTransportSocket::new(), + ); let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); let local_addr = server.local_address().unwrap(); diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs index fd898a9bcd..b05fa1cd04 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/wrapped_socket.rs @@ -34,6 +34,15 @@ pub struct WrappedTransportSocket { pub base_transport: T, } +impl WrappedTransportSocket { + pub fn new(stream_adapter: S, base_transport: T) -> Self { + Self { + stream_adapter, + base_transport, + } + } +} + #[async_trait] impl, T: TransportSocket> TransportSocket for WrappedTransportSocket @@ -43,15 +52,6 @@ impl, T: TransportSocket> TransportSocket type Listener = AdaptedListener; type Stream = S::Stream; - fn new() -> Self { - let base_transport = T::new(); - let stream_adapter = S::new(); - Self { - stream_adapter, - base_transport, - } - } - async fn bind(&self, address: Self::Address) -> Result { let stream_adapter = self.stream_adapter.clone(); let listener = self.base_transport.bind(address).await?; diff --git a/p2p/src/net/mock/transport/impls/tcp.rs b/p2p/src/net/mock/transport/impls/tcp.rs index 9d7f7252d6..53843af9f5 100644 --- a/p2p/src/net/mock/transport/impls/tcp.rs +++ b/p2p/src/net/mock/transport/impls/tcp.rs @@ -42,10 +42,6 @@ impl TransportSocket for TcpTransportSocket { type Listener = TcpTransportListener; type Stream = TcpTransportStream; - fn new() -> Self { - Self - } - async fn bind(&self, address: Self::Address) -> Result { TcpTransportListener::new(address).await } diff --git a/p2p/src/net/mock/transport/traits/socket.rs b/p2p/src/net/mock/transport/traits/socket.rs index bd9e2479c9..7a6c5ff2f4 100644 --- a/p2p/src/net/mock/transport/traits/socket.rs +++ b/p2p/src/net/mock/transport/traits/socket.rs @@ -51,9 +51,6 @@ pub trait TransportSocket: Send + Sync + 'static { /// A messages stream. type Stream: PeerStream; - /// Creates a new transport. - fn new() -> Self; - /// Creates a new listener bound to the specified address. async fn bind(&self, address: Self::Address) -> Result; diff --git a/p2p/src/testing_utils.rs b/p2p/src/testing_utils.rs index 1bee53ae7c..43bb1aa105 100644 --- a/p2p/src/testing_utils.rs +++ b/p2p/src/testing_utils.rs @@ -1,4 +1,17 @@ -use crate::net::mock::transport::TransportSocket; +// Copyright (c) 2022 RBB S.r.l +// opensource@mintlayer.org +// SPDX-License-Identifier: MIT +// Licensed under the MIT License; +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://github.com/mintlayer/mintlayer-core/blob/master/LICENSE +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use libp2p::Multiaddr; use std::net::SocketAddr; @@ -36,7 +49,7 @@ impl MakeTestAddress for MakeP2pAddress { } fn make_address() -> Self::Address { - "/ip6/::1/tcp/0".parse().unwrap() + "/ip6/::1/tcp/0".parse().expect("valid address") } } @@ -52,7 +65,7 @@ impl MakeTestAddress for MakeTcpAddress { } fn make_address() -> Self::Address { - "[::1]:0".parse().unwrap() + "[::1]:0".parse().expect("valid address") } } @@ -80,10 +93,12 @@ impl MakeTestAddress for MakeNoiseAddress { type Address = SocketAddr; fn make_transport() -> Self::Transport { - crate::net::mock::transport::NoiseTcpTransport::new() + let stream_adapter = crate::net::mock::transport::NoiseEncryptionAdapter::gen_new(); + let base_transport = crate::net::mock::transport::TcpTransportSocket::new(); + crate::net::mock::transport::NoiseTcpTransport::new(stream_adapter, base_transport) } fn make_address() -> Self::Address { - "[::1]:0".parse().unwrap() + MakeTcpAddress::make_address() } } From bfd8ce86b622cb47f45e4ad6b7ba1dc432500bd8 Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Thu, 8 Dec 2022 11:01:39 +0300 Subject: [PATCH 5/9] Make testing_utils in p2p optional --- p2p/Cargo.toml | 4 ++++ p2p/backend-test-suite/Cargo.toml | 2 +- p2p/src/lib.rs | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/p2p/Cargo.toml b/p2p/Cargo.toml index d83c4ae825..10c343b08e 100644 --- a/p2p/Cargo.toml +++ b/p2p/Cargo.toml @@ -4,6 +4,10 @@ version = "0.1.0" edition = "2021" license = "MIT" +[features] +default = [] +testing_utils = [] + [dependencies] common = { path = "../common/" } crypto = { path = "../crypto/" } diff --git a/p2p/backend-test-suite/Cargo.toml b/p2p/backend-test-suite/Cargo.toml index b8f4d0532e..3b68dc3217 100644 --- a/p2p/backend-test-suite/Cargo.toml +++ b/p2p/backend-test-suite/Cargo.toml @@ -6,7 +6,7 @@ license = "MIT" [dependencies] common = { path = "../../common" } -p2p = { path = "../../p2p" } +p2p = { path = "../../p2p", features = ["testing_utils"] } p2p-test-utils = { path = "../p2p-test-utils" } logging = { path = "../../logging" } serialization = { path = "../../serialization" } diff --git a/p2p/src/lib.rs b/p2p/src/lib.rs index afe2abb2e5..82991b7659 100644 --- a/p2p/src/lib.rs +++ b/p2p/src/lib.rs @@ -23,6 +23,7 @@ pub mod net; pub mod peer_manager; pub mod rpc; pub mod sync; +#[cfg(feature = "testing_utils")] pub mod testing_utils; use std::{fmt::Debug, str::FromStr, sync::Arc}; From 7c25dc8203dc590de6445f220f9dcc901f55608b Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Thu, 8 Dec 2022 13:01:26 +0300 Subject: [PATCH 6/9] Revert make_libp2p_keys --- p2p/src/net/libp2p/mod.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/p2p/src/net/libp2p/mod.rs b/p2p/src/net/libp2p/mod.rs index 1b256433f5..1559552551 100644 --- a/p2p/src/net/libp2p/mod.rs +++ b/p2p/src/net/libp2p/mod.rs @@ -33,7 +33,8 @@ use libp2p::{ PeerId, }, gossipsub::MessageId, - identity, mplex, noise, + identity, mplex, + noise::{self, AuthenticKeypair}, request_response::RequestId, swarm::SwarmBuilder, tcp::{GenTcpConfig, TokioTcpTransport}, @@ -150,13 +151,24 @@ fn get_ip(address: &Multiaddr) -> Option { } // TODO: Check the data directory first, and use keys from there if available -pub fn make_transport(p2p_config: &config::P2pConfig) -> Libp2pTransport { +fn make_libp2p_keys() -> ( + PeerId, + identity::Keypair, + AuthenticKeypair, +) { let id_keys = identity::Keypair::generate_ed25519(); let peer_id = id_keys.public().to_peer_id(); let noise_keys = noise::Keypair::::new() .into_authentic(&id_keys) .expect("Noise key creation to succeed"); + (peer_id, id_keys, noise_keys) +} + +// TODO: Check the data directory first, and use keys from there if available +pub fn make_transport(p2p_config: &config::P2pConfig) -> Libp2pTransport { + let (peer_id, id_keys, noise_keys) = make_libp2p_keys(); + let transport = TokioTcpTransport::new(GenTcpConfig::new().nodelay(true)) .upgrade(upgrade::Version::V1) .authenticate(noise::NoiseConfig::xx(noise_keys).into_authenticated()) From 3084de4c95ae077cc5656a1480915cefb4e1992c Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Thu, 8 Dec 2022 15:23:12 +0300 Subject: [PATCH 7/9] Rename MakeTestAddress to TestTransport --- p2p/backend-test-suite/src/ban.rs | 6 +- .../src/block_announcement.rs | 8 +- p2p/backend-test-suite/src/connect.rs | 8 +- p2p/backend-test-suite/src/lib.rs | 6 +- p2p/backend-test-suite/src/sync.rs | 22 +-- p2p/backend-test-suite/src/utils.rs | 2 +- p2p/src/net/libp2p/backend.rs | 8 +- p2p/src/net/libp2p/tests/frontend.rs | 10 +- p2p/src/net/libp2p/tests/gossipsub.rs | 8 +- p2p/src/net/libp2p/tests/identify.rs | 4 +- p2p/src/net/libp2p/tests/mdns.rs | 6 +- p2p/src/net/libp2p/tests/ping.rs | 6 +- p2p/src/net/libp2p/tests/request_response.rs | 6 +- p2p/src/net/libp2p/tests/swarm.rs | 6 +- p2p/src/net/mock/mod.rs | 28 ++-- p2p/src/net/mock/peer.rs | 36 ++--- .../stream_adapter/wrapped_transport/tests.rs | 29 ++-- p2p/src/net/mock/transport/impls/tcp.rs | 6 +- p2p/src/net/mod.rs | 2 +- p2p/src/peer_manager/tests/ban.rs | 62 ++++---- p2p/src/peer_manager/tests/connections.rs | 137 +++++++++--------- p2p/src/sync/tests/block_response.rs | 59 ++++---- p2p/src/sync/tests/connection.rs | 23 +-- p2p/src/sync/tests/header_response.rs | 73 +++++----- p2p/src/sync/tests/request_response.rs | 32 ++-- p2p/src/testing_utils.rs | 26 ++-- p2p/tests/backend_libp2p.rs | 4 +- p2p/tests/backend_mock_channels.rs | 4 +- p2p/tests/backend_mock_noise.rs | 4 +- p2p/tests/backend_mock_tcp.rs | 4 +- p2p/tests/block_announcement.rs | 12 +- p2p/tests/libp2p-mdns.rs | 10 +- 32 files changed, 336 insertions(+), 321 deletions(-) diff --git a/p2p/backend-test-suite/src/ban.rs b/p2p/backend-test-suite/src/ban.rs index 69722dd26d..1896560efa 100644 --- a/p2p/backend-test-suite/src/ban.rs +++ b/p2p/backend-test-suite/src/ban.rs @@ -17,7 +17,7 @@ use std::{fmt::Debug, sync::Arc}; use tokio::sync::mpsc; -use p2p::testing_utils::MakeTestAddress; +use p2p::testing_utils::TestTransport; use p2p::{ config::P2pConfig, error::{P2pError, PublishError}, @@ -38,7 +38,7 @@ tests![invalid_pubsub_block, invalid_sync_block,]; // receives a `AdjustPeerScore` event which bans the peer of the second service. async fn invalid_pubsub_block() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -134,7 +134,7 @@ where // Start two networking services and give an invalid block, verify that `PeerManager` is informed. async fn invalid_sync_block() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, diff --git a/p2p/backend-test-suite/src/block_announcement.rs b/p2p/backend-test-suite/src/block_announcement.rs index 9418fcab1f..c667ec5f1d 100644 --- a/p2p/backend-test-suite/src/block_announcement.rs +++ b/p2p/backend-test-suite/src/block_announcement.rs @@ -32,7 +32,7 @@ use common::{ }; use serialization::Encode; -use p2p::testing_utils::MakeTestAddress; +use p2p::testing_utils::TestTransport; use p2p::{ error::{P2pError, PublishError}, message::Announcement, @@ -52,7 +52,7 @@ tests![ async fn block_announcement() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, @@ -138,7 +138,7 @@ where async fn block_announcement_no_subscription() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, @@ -186,7 +186,7 @@ where async fn block_announcement_too_big_message() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, diff --git a/p2p/backend-test-suite/src/connect.rs b/p2p/backend-test-suite/src/connect.rs index 10d71543db..c1e44df81d 100644 --- a/p2p/backend-test-suite/src/connect.rs +++ b/p2p/backend-test-suite/src/connect.rs @@ -17,7 +17,7 @@ use std::{fmt::Debug, sync::Arc}; -use p2p::testing_utils::MakeTestAddress; +use p2p::testing_utils::TestTransport; use p2p::{ error::{DialError, P2pError}, net::{ConnectivityService, NetworkingService, SyncingMessagingService}, @@ -32,7 +32,7 @@ tests![ async fn connect() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -53,7 +53,7 @@ where #[cfg(not(target_os = "windows"))] async fn connect_address_in_use() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, @@ -82,7 +82,7 @@ where // trying to connect to `service1`. async fn connect_accept() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + std::fmt::Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, diff --git a/p2p/backend-test-suite/src/lib.rs b/p2p/backend-test-suite/src/lib.rs index 70ec0c3b24..49768d20b8 100644 --- a/p2p/backend-test-suite/src/lib.rs +++ b/p2p/backend-test-suite/src/lib.rs @@ -29,12 +29,12 @@ use std::fmt::Debug; use libtest_mimic::{Arguments, Trial}; use p2p::net::{ConnectivityService, NetworkingService, SyncingMessagingService}; -use p2p::testing_utils::MakeTestAddress; +use p2p::testing_utils::TestTransport; /// Runs all tests. pub fn run() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, @@ -47,7 +47,7 @@ where /// Collects all backend agnostic tests. fn tests() -> Vec where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, diff --git a/p2p/backend-test-suite/src/sync.rs b/p2p/backend-test-suite/src/sync.rs index dd38cddfc1..109ecda5ea 100644 --- a/p2p/backend-test-suite/src/sync.rs +++ b/p2p/backend-test-suite/src/sync.rs @@ -27,7 +27,7 @@ use common::{ chain::{config::ChainConfig, GenBlock}, primitives::{Id, Idable}, }; -use p2p::testing_utils::MakeTestAddress; +use p2p::testing_utils::TestTransport; use p2p::{ config::{MdnsConfig, P2pConfig}, error::P2pError, @@ -58,7 +58,7 @@ tests![ async fn local_and_remote_in_sync() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -107,7 +107,7 @@ where // no blocks are downloaded whereas local node downloads the 7 new blocks from remote async fn remote_ahead_by_7_blocks() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -209,7 +209,7 @@ where // local and remote nodes are in the same chain but local is ahead of remote by 12 blocks async fn local_ahead_by_12_blocks() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -330,7 +330,7 @@ where // verify that remote nodes does a reorg async fn remote_local_diff_chains_local_higher() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -476,7 +476,7 @@ where // verify that local node does a reorg async fn remote_local_diff_chains_remote_higher() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -620,7 +620,7 @@ where async fn two_remote_nodes_different_chains() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -742,7 +742,7 @@ where async fn two_remote_nodes_same_chains() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -880,7 +880,7 @@ where async fn two_remote_nodes_same_chains_new_blocks() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -1032,7 +1032,7 @@ where // // verify that local node downloads the blocks and after that they are in sync async fn connect_disconnect_resyncing() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -1159,7 +1159,7 @@ where // Check that the peer that ignores requests is disconnected. async fn disconnect_unresponsive_peer() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, diff --git a/p2p/backend-test-suite/src/utils.rs b/p2p/backend-test-suite/src/utils.rs index cc22136c21..fdfa257e3d 100644 --- a/p2p/backend-test-suite/src/utils.rs +++ b/p2p/backend-test-suite/src/utils.rs @@ -17,7 +17,7 @@ macro_rules! tests { ($($(#[$meta:meta])* $name:ident,)+) => { pub fn tests() -> impl Iterator where - A: p2p::testing_utils::MakeTestAddress, + A: p2p::testing_utils::TestTransport, S: p2p::net::NetworkingService + std::fmt::Debug + 'static, S::ConnectivityHandle: p2p::net::ConnectivityService + std::fmt::Debug, S::SyncingMessagingHandle: p2p::net::SyncingMessagingService + std::fmt::Debug, diff --git a/p2p/src/net/libp2p/backend.rs b/p2p/src/net/libp2p/backend.rs index 06ab95f9fe..0d0724e84e 100644 --- a/p2p/src/net/libp2p/backend.rs +++ b/p2p/src/net/libp2p/backend.rs @@ -341,7 +341,7 @@ mod tests { self, connection_manager, discovery, sync_codec::{SyncMessagingCodec, SyncingProtocol}, }; - use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; + use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use libp2p::{ core::upgrade, gossipsub::{Gossipsub, GossipsubConfigBuilder, MessageAuthenticity}, @@ -422,7 +422,7 @@ mod tests { let (tx, rx) = oneshot::channel(); let res = cmd_tx.send(types::Command::Listen { - addr: MakeP2pAddress::make_address(), + addr: TestTransportLibp2p::make_address(), response: tx, }); assert!(res.is_ok()); @@ -446,7 +446,7 @@ mod tests { let (tx, rx) = oneshot::channel(); let res = cmd_tx.send(types::Command::Listen { - addr: MakeP2pAddress::make_address(), + addr: TestTransportLibp2p::make_address(), response: tx, }); assert!(res.is_ok()); @@ -458,7 +458,7 @@ mod tests { // try to bind to the same interface again let (tx, rx) = oneshot::channel(); let res = cmd_tx.send(types::Command::Listen { - addr: MakeP2pAddress::make_address(), + addr: TestTransportLibp2p::make_address(), response: tx, }); assert!(res.is_ok()); diff --git a/p2p/src/net/libp2p/tests/frontend.rs b/p2p/src/net/libp2p/tests/frontend.rs index 872d19abb1..9040a3328e 100644 --- a/p2p/src/net/libp2p/tests/frontend.rs +++ b/p2p/src/net/libp2p/tests/frontend.rs @@ -18,7 +18,7 @@ use std::{sync::Arc, time::Duration}; use libp2p::{core::PeerId, multiaddr::Protocol, Multiaddr}; use tokio::net::TcpListener; -use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use serialization::{Decode, Encode}; use crate::{ @@ -47,8 +47,8 @@ async fn test_connect_peer_id_missing() { let config = Arc::new(common::chain::config::create_mainnet()); let addr: Multiaddr = "/ip6/::1/tcp/8904".parse().unwrap(); let (mut service, _) = Libp2pService::start( - MakeP2pAddress::make_transport(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_transport(), + TestTransportLibp2p::make_address(), config, Default::default(), ) @@ -233,8 +233,8 @@ fn test_parse_peers_valid_3_peers_1_valid() { async fn test_connect_with_timeout() { let config = Arc::new(common::chain::config::create_mainnet()); let (mut service, _) = Libp2pService::start( - MakeP2pAddress::make_transport(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_transport(), + TestTransportLibp2p::make_address(), config, Arc::new(P2pConfig { bind_address: "/ip6/::1/tcp/3031".to_owned().into(), diff --git a/p2p/src/net/libp2p/tests/gossipsub.rs b/p2p/src/net/libp2p/tests/gossipsub.rs index be0fc20c6d..fb6ff96edf 100644 --- a/p2p/src/net/libp2p/tests/gossipsub.rs +++ b/p2p/src/net/libp2p/tests/gossipsub.rs @@ -16,7 +16,7 @@ use super::*; use crate::net::libp2p::{behaviour, types::*}; -use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use futures::StreamExt; use libp2p::gossipsub::IdentTopic as Topic; use serialization::Encode; @@ -26,7 +26,7 @@ async fn test_invalid_message() { let (mut backend1, _cmd1, _conn1, _sync1) = make_libp2p( common::chain::config::create_mainnet(), Default::default(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[net::types::PubSubTopic::Blocks], ) .await; @@ -34,7 +34,7 @@ async fn test_invalid_message() { let (mut backend2, _cmd2, _conn2, _sync2) = make_libp2p( common::chain::config::create_mainnet(), Default::default(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[net::types::PubSubTopic::Blocks], ) .await; @@ -87,7 +87,7 @@ async fn test_gossipsub_not_supported() { let (mut backend1, _cmd, _conn_rx, _sync_rx) = make_libp2p( config.clone(), Default::default(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[net::types::PubSubTopic::Blocks], ) .await; diff --git a/p2p/src/net/libp2p/tests/identify.rs b/p2p/src/net/libp2p/tests/identify.rs index c87c7806b1..ede9e7f606 100644 --- a/p2p/src/net/libp2p/tests/identify.rs +++ b/p2p/src/net/libp2p/tests/identify.rs @@ -15,7 +15,7 @@ use super::*; use crate::net::libp2p::behaviour; -use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use libp2p::ping; use std::time::Duration; @@ -25,7 +25,7 @@ async fn test_identify_not_supported() { let (mut backend1, _cmd1, _conn1, _sync1) = make_libp2p( config.clone(), Default::default(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[], ) .await; diff --git a/p2p/src/net/libp2p/tests/mdns.rs b/p2p/src/net/libp2p/tests/mdns.rs index f16d7c43fd..c27c1427a7 100644 --- a/p2p/src/net/libp2p/tests/mdns.rs +++ b/p2p/src/net/libp2p/tests/mdns.rs @@ -18,7 +18,7 @@ use std::{sync::Arc, time::Duration}; use futures::StreamExt; use libp2p::swarm::SwarmEvent; -use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use crate::{ config::{MdnsConfig, P2pConfig}, @@ -44,7 +44,7 @@ async fn test_discovered_and_expired() { .into(), request_timeout: Duration::from_secs(10).into(), }), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[], ) .await; @@ -62,7 +62,7 @@ async fn test_discovered_and_expired() { .into(), request_timeout: Duration::from_secs(10).into(), }), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[], ) .await; diff --git a/p2p/src/net/libp2p/tests/ping.rs b/p2p/src/net/libp2p/tests/ping.rs index 3304c24571..9c42aa9a3e 100644 --- a/p2p/src/net/libp2p/tests/ping.rs +++ b/p2p/src/net/libp2p/tests/ping.rs @@ -15,7 +15,7 @@ use super::*; use crate::net::libp2p::behaviour; -use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use futures::StreamExt; use libp2p::{ ping, @@ -28,7 +28,7 @@ async fn test_remote_doesnt_respond() { let (mut backend1, _cmd, _conn_rx, _sync_rx) = make_libp2p_with_ping( common::chain::config::create_mainnet(), Arc::new(Default::default()), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[], make_ping( Some(Duration::from_secs(2)), @@ -72,7 +72,7 @@ async fn test_ping_not_supported() { let (mut backend1, _cmd, _conn_rx, _) = make_libp2p_with_ping( config.clone(), Arc::new(Default::default()), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[], make_ping( Some(Duration::from_secs(2)), diff --git a/p2p/src/net/libp2p/tests/request_response.rs b/p2p/src/net/libp2p/tests/request_response.rs index 8c999dee46..48dfdd5d44 100644 --- a/p2p/src/net/libp2p/tests/request_response.rs +++ b/p2p/src/net/libp2p/tests/request_response.rs @@ -14,7 +14,7 @@ // limitations under the License. use super::*; -use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use crate::{ error::{P2pError, PeerError}, net::libp2p::{behaviour::sync_codec::message_types::SyncRequest, types}, @@ -29,7 +29,7 @@ async fn request_sent_directly_but_peer_not_part_of_swarm() { let (mut backend, _cmd, _conn_rx, _sync_rx) = make_libp2p( common::chain::config::create_mainnet(), Arc::new(Default::default()), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[], ) .await; @@ -52,7 +52,7 @@ async fn request_sent_but_peer_not_part_of_swarm() { let (mut backend, _cmd, _conn_rx, _sync_rx) = make_libp2p( common::chain::config::create_mainnet(), Arc::new(Default::default()), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_address(), &[], ) .await; diff --git a/p2p/src/net/libp2p/tests/swarm.rs b/p2p/src/net/libp2p/tests/swarm.rs index 3a37f7ed57..292e2071dd 100644 --- a/p2p/src/net/libp2p/tests/swarm.rs +++ b/p2p/src/net/libp2p/tests/swarm.rs @@ -15,7 +15,7 @@ use super::*; use crate::error::P2pError; -use crate::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportLibp2p}; use futures::StreamExt; use libp2p::{ core::upgrade, @@ -62,7 +62,7 @@ async fn dial_then_disconnect() { let (_peer_id1, mut swarm1) = make_dummy_swarm(); let (peer_id2, mut swarm2) = make_dummy_swarm(); - swarm2.listen_on(MakeP2pAddress::make_address()).unwrap(); + swarm2.listen_on(TestTransportLibp2p::make_address()).unwrap(); let addr = get_address::(&mut swarm2).await; tokio::spawn(async move { @@ -89,7 +89,7 @@ async fn disconnect_closing_connection() { let (_peer_id1, mut swarm1) = make_dummy_swarm(); let (peer_id2, mut swarm2) = make_dummy_swarm(); - swarm2.listen_on(MakeP2pAddress::make_address()).unwrap(); + swarm2.listen_on(TestTransportLibp2p::make_address()).unwrap(); let addr = get_address(&mut swarm2).await; tokio::spawn(async move { diff --git a/p2p/src/net/mock/mod.rs b/p2p/src/net/mock/mod.rs index 88cee8fc17..d79328948a 100644 --- a/p2p/src/net/mock/mod.rs +++ b/p2p/src/net/mock/mod.rs @@ -386,21 +386,21 @@ where #[cfg(test)] mod tests { use super::{transport::NoiseTcpTransport, *}; - use crate::testing_utils::{MakeChannelAddress, MakeTcpAddress, MakeTestAddress}; + use crate::testing_utils::{TestTransport, TestTransportChannel, TestTransportTcp}; use crate::{ net::{ self, mock::transport::{MockChannelTransport, TcpTransportSocket}, types::{Protocol, ProtocolType}, }, - testing_utils::MakeNoiseAddress, + testing_utils::TestTransportNoise, }; use common::primitives::semver::SemVer; use std::fmt::Debug; async fn connect_to_remote() where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket + Debug, { let config = Arc::new(common::chain::config::create_mainnet()); @@ -454,22 +454,22 @@ mod tests { #[tokio::test] async fn connect_to_remote_tcp() { - connect_to_remote::().await; + connect_to_remote::().await; } #[tokio::test] async fn connect_to_remote_channels() { - connect_to_remote::().await; + connect_to_remote::().await; } #[tokio::test] async fn connect_to_remote_noise() { - connect_to_remote::().await; + connect_to_remote::().await; } async fn accept_incoming() where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket, { let config = Arc::new(common::chain::config::create_mainnet()); @@ -523,22 +523,22 @@ mod tests { #[tokio::test] async fn accept_incoming_tcp() { - accept_incoming::().await; + accept_incoming::().await; } #[tokio::test] async fn accept_incoming_channels() { - accept_incoming::().await; + accept_incoming::().await; } #[tokio::test] async fn accept_incoming_noise() { - accept_incoming::().await; + accept_incoming::().await; } async fn disconnect() where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket, { let config = Arc::new(common::chain::config::create_mainnet()); @@ -575,16 +575,16 @@ mod tests { #[tokio::test] async fn disconnect_tcp() { - disconnect::().await; + disconnect::().await; } #[tokio::test] async fn disconnect_channels() { - disconnect::().await; + disconnect::().await; } #[tokio::test] async fn disconnect_noise() { - disconnect::().await; + disconnect::().await; } } diff --git a/p2p/src/net/mock/peer.rs b/p2p/src/net/mock/peer.rs index ace9a8c5ed..2e911f2060 100644 --- a/p2p/src/net/mock/peer.rs +++ b/p2p/src/net/mock/peer.rs @@ -233,7 +233,7 @@ where mod tests { use super::*; use crate::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportNoise, TestTransportTcp, }; use crate::{ message, @@ -250,7 +250,7 @@ mod tests { async fn handshake_inbound() where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -317,22 +317,22 @@ mod tests { #[tokio::test] async fn handshake_inbound_tcp() { - handshake_inbound::().await; + handshake_inbound::().await; } #[tokio::test] async fn handshake_inbound_channels() { - handshake_inbound::().await; + handshake_inbound::().await; } #[tokio::test] async fn handshake_inbound_noise() { - handshake_inbound::().await; + handshake_inbound::().await; } async fn handshake_outbound() where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -402,22 +402,22 @@ mod tests { #[tokio::test] async fn handshake_outbound_tcp() { - handshake_outbound::().await; + handshake_outbound::().await; } #[tokio::test] async fn handshake_outbound_channels() { - handshake_outbound::().await; + handshake_outbound::().await; } #[tokio::test] async fn handshake_outbound_noise() { - handshake_outbound::().await; + handshake_outbound::().await; } async fn handshake_different_network() where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -463,22 +463,22 @@ mod tests { #[tokio::test] async fn handshake_different_network_tcp() { - handshake_different_network::().await; + handshake_different_network::().await; } #[tokio::test] async fn handshake_different_network_channels() { - handshake_different_network::().await; + handshake_different_network::().await; } #[tokio::test] async fn handshake_different_network_noise() { - handshake_different_network::().await; + handshake_different_network::().await; } async fn invalid_handshake_message() where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -520,22 +520,22 @@ mod tests { #[tokio::test] async fn invalid_handshake_message_tcp() { - invalid_handshake_message::().await; + invalid_handshake_message::().await; } #[tokio::test] async fn invalid_handshake_message_channels() { - invalid_handshake_message::().await; + invalid_handshake_message::().await; } #[tokio::test] async fn invalid_handshake_message_noise() { - invalid_handshake_message::().await; + invalid_handshake_message::().await; } pub async fn get_two_connected_sockets() -> (T::Stream, T::Stream) where - A: MakeTestAddress, + A: TestTransport, T: TransportSocket, { let transport = A::make_transport(); diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs index 675243216b..83a55a11a5 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs @@ -18,7 +18,7 @@ use std::{ time::Duration, }; -use crate::testing_utils::{MakeChannelAddress, MakeTcpAddress, MakeTestAddress}; +use crate::testing_utils::{TestTransport, TestTransportChannel, TestTransportTcp}; use async_trait::async_trait; use futures::StreamExt; use tokio::{ @@ -51,7 +51,7 @@ async fn send_recv(sender: &mut T, receiver: &mut T, len: usize) assert_eq!(send_data, recv_data); } -async fn test, T: TransportSocket>(transport: T) { +async fn test, T: TransportSocket>(transport: T) { let mut server = transport.bind(A::make_address()).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); @@ -68,34 +68,37 @@ async fn test, T: TransportSocket>(tran #[tokio::test] async fn test_send_recv() { - test::(TcpTransportSocket::new()).await; + test::(TcpTransportSocket::new()).await; - test::(MockChannelTransport::new()).await; + test::(MockChannelTransport::new()).await; - test::>( + test::>( WrappedTransportSocket::new(NoiseEncryptionAdapter::gen_new(), TcpTransportSocket::new()), ) .await; test::< - MakeChannelAddress, + TestTransportChannel, WrappedTransportSocket, - >(WrappedTransportSocket::new(NoiseEncryptionAdapter::gen_new(), MockChannelTransport::new())) + >(WrappedTransportSocket::new( + NoiseEncryptionAdapter::gen_new(), + MockChannelTransport::new(), + )) .await; - test::>( + test::>( WrappedTransportSocket::new(IdentityStreamAdapter::new(), TcpTransportSocket::new()), ) .await; test::< - MakeChannelAddress, + TestTransportChannel, WrappedTransportSocket, >(WrappedTransportSocket::new(IdentityStreamAdapter::new(), MockChannelTransport::new())) .await; test::< - MakeTcpAddress, + TestTransportTcp, WrappedTransportSocket< NoiseEncryptionAdapter, WrappedTransportSocket, @@ -196,7 +199,7 @@ async fn send_2_reqs() { NoiseEncryptionAdapter::gen_new(), TcpTransportSocket::new(), ); - let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); + let mut server = transport.bind(TestTransportTcp::make_address()).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); let (server_res, peer_res) = tokio::join!(server.accept(), peer_fut); @@ -246,7 +249,7 @@ async fn pending_handshakes() { NoiseEncryptionAdapter::gen_new(), TcpTransportSocket::new(), ); - let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); + let mut server = transport.bind(TestTransportTcp::make_address()).await.unwrap(); let local_addr = server.local_address().unwrap(); let join_handle = tokio::spawn(async move { @@ -281,7 +284,7 @@ async fn handshake_timeout() { NoiseEncryptionAdapter::gen_new(), TcpTransportSocket::new(), ); - let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); + let mut server = transport.bind(TestTransportTcp::make_address()).await.unwrap(); let local_addr = server.local_address().unwrap(); let join_handle = tokio::spawn(async move { diff --git a/p2p/src/net/mock/transport/impls/tcp.rs b/p2p/src/net/mock/transport/impls/tcp.rs index 53843af9f5..d6eb82c5c5 100644 --- a/p2p/src/net/mock/transport/impls/tcp.rs +++ b/p2p/src/net/mock/transport/impls/tcp.rs @@ -98,7 +98,7 @@ impl PeerStream for TcpTransportStream {} #[cfg(test)] mod tests { - use crate::testing_utils::{MakeTcpAddress, MakeTestAddress}; + use crate::testing_utils::{TestTransport, TestTransportTcp}; use super::*; use crate::net::{ @@ -112,7 +112,7 @@ mod tests { #[tokio::test] async fn send_recv() { let transport = TcpTransportSocket::new(); - let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); + let mut server = transport.bind(TestTransportTcp::make_address()).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); let (server_res, peer_res) = tokio::join!(server.accept(), peer_fut); @@ -143,7 +143,7 @@ mod tests { #[tokio::test] async fn send_2_reqs() { let transport = TcpTransportSocket::new(); - let mut server = transport.bind(MakeTcpAddress::make_address()).await.unwrap(); + let mut server = transport.bind(TestTransportTcp::make_address()).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); let (server_res, peer_res) = tokio::join!(server.accept(), peer_fut); diff --git a/p2p/src/net/mod.rs b/p2p/src/net/mod.rs index bee95441a5..d00343ace6 100644 --- a/p2p/src/net/mod.rs +++ b/p2p/src/net/mod.rs @@ -34,7 +34,7 @@ use crate::{config, message, message::Announcement}; pub trait NetworkingService { /// A generic networking transport. /// - /// Can be used to initialize networking transport with authentification keys for example. + /// Can be used to initialize networking transport with authentication keys for example. type Transport; /// A generic network address. diff --git a/p2p/src/peer_manager/tests/ban.rs b/p2p/src/peer_manager/tests/ban.rs index d581e70e0d..fe2ce6e9a7 100644 --- a/p2p/src/peer_manager/tests/ban.rs +++ b/p2p/src/peer_manager/tests/ban.rs @@ -16,7 +16,7 @@ use std::sync::Arc; use crate::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, }; use common::{chain::config, primitives::semver::SemVer}; @@ -40,7 +40,7 @@ use crate::{ // ban peer whose connected to us async fn ban_connected_peer() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -72,12 +72,12 @@ where #[tokio::test] async fn ban_connected_peer_libp2p() { - ban_connected_peer::().await; + ban_connected_peer::().await; } #[tokio::test] async fn ban_connected_peer_mock_tcp() { - ban_connected_peer::>().await; + ban_connected_peer::>().await; } #[ignore] @@ -85,17 +85,17 @@ async fn ban_connected_peer_mock_tcp() { async fn ban_connected_peer_mock_channels() { // TODO: Currently in the channels backend peer receives a new address every time it connects. // For the banning to work properly the addresses must be persistent. - ban_connected_peer::>().await; + ban_connected_peer::>().await; } #[tokio::test] async fn ban_connected_peer_mock_noise() { - ban_connected_peer::>().await; + ban_connected_peer::>().await; } async fn banned_peer_attempts_to_connect() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + std::fmt::Debug + 'static, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -138,21 +138,21 @@ where #[tokio::test] async fn banned_peer_attempts_to_connect_libp2p() { - banned_peer_attempts_to_connect::().await; + banned_peer_attempts_to_connect::().await; } #[ignore] #[tokio::test] async fn banned_peer_attempts_to_connect_mock_tcp() { // TODO: implement proper peer banning - banned_peer_attempts_to_connect::>().await; + banned_peer_attempts_to_connect::>().await; } #[ignore] #[tokio::test] async fn banned_peer_attempts_to_connect_mock_channel() { // TODO: implement proper peer banning - banned_peer_attempts_to_connect::>() + banned_peer_attempts_to_connect::>() .await; } @@ -160,13 +160,13 @@ async fn banned_peer_attempts_to_connect_mock_channel() { #[tokio::test] async fn banned_peer_attempts_to_connect_mock_noise() { // TODO: implement proper peer banning - banned_peer_attempts_to_connect::>().await; + banned_peer_attempts_to_connect::>().await; } // attempt to connect to banned peer async fn connect_to_banned_peer() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -218,12 +218,12 @@ where #[tokio::test] async fn connect_to_banned_peer_libp2p() { - connect_to_banned_peer::().await; + connect_to_banned_peer::().await; } #[tokio::test] async fn connect_to_banned_peer_mock_tcp() { - connect_to_banned_peer::>().await; + connect_to_banned_peer::>().await; } #[ignore] @@ -231,17 +231,17 @@ async fn connect_to_banned_peer_mock_tcp() { async fn connect_to_banned_peer_mock_channels() { // TODO: Currently in the channels backend peer receives a new address every time it connects. // For the banning to work properly the addresses must be persistent. - connect_to_banned_peer::>().await; + connect_to_banned_peer::>().await; } #[tokio::test] async fn connect_to_banned_peer_mock_noise() { - connect_to_banned_peer::>().await; + connect_to_banned_peer::>().await; } async fn validate_invalid_outbound_connection(peer_address: S::Address, peer_id: S::PeerId) where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + std::fmt::Debug, S::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -317,7 +317,7 @@ where #[tokio::test] async fn validate_invalid_outbound_connection_libp2p() { - validate_invalid_outbound_connection::( + validate_invalid_outbound_connection::( "/ip4/175.69.140.46".parse().unwrap(), libp2p::PeerId::random(), ) @@ -326,7 +326,7 @@ async fn validate_invalid_outbound_connection_libp2p() { #[tokio::test] async fn validate_invalid_outbound_connection_mock_tcp() { - validate_invalid_outbound_connection::>( + validate_invalid_outbound_connection::>( "210.113.67.107:2525".parse().unwrap(), MockPeerId::random(), ) @@ -335,7 +335,7 @@ async fn validate_invalid_outbound_connection_mock_tcp() { #[tokio::test] async fn validate_invalid_outbound_connection_mock_channels() { - validate_invalid_outbound_connection::>( + validate_invalid_outbound_connection::>( 1, MockPeerId::random(), ) @@ -344,7 +344,7 @@ async fn validate_invalid_outbound_connection_mock_channels() { #[tokio::test] async fn validate_invalid_outbound_connection_mock_noise() { - validate_invalid_outbound_connection::>( + validate_invalid_outbound_connection::>( "210.113.67.107:2525".parse().unwrap(), MockPeerId::random(), ) @@ -353,7 +353,7 @@ async fn validate_invalid_outbound_connection_mock_noise() { async fn validate_invalid_inbound_connection(peer_address: S::Address, peer_id: S::PeerId) where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + 'static + std::fmt::Debug, S::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -428,7 +428,7 @@ where #[tokio::test] async fn validate_invalid_inbound_connection_libp2p() { - validate_invalid_inbound_connection::( + validate_invalid_inbound_connection::( "/ip4/175.69.140.46".parse().unwrap(), libp2p::PeerId::random(), ) @@ -437,7 +437,7 @@ async fn validate_invalid_inbound_connection_libp2p() { #[tokio::test] async fn validate_invalid_inbound_connection_mock_tcp() { - validate_invalid_inbound_connection::>( + validate_invalid_inbound_connection::>( "210.113.67.107:2525".parse().unwrap(), MockPeerId::random(), ) @@ -446,7 +446,7 @@ async fn validate_invalid_inbound_connection_mock_tcp() { #[tokio::test] async fn validate_invalid_inbound_connection_mock_channels() { - validate_invalid_inbound_connection::>( + validate_invalid_inbound_connection::>( 1, MockPeerId::random(), ) @@ -455,7 +455,7 @@ async fn validate_invalid_inbound_connection_mock_channels() { #[tokio::test] async fn validate_invalid_inbound_connection_mock_noise() { - validate_invalid_inbound_connection::>( + validate_invalid_inbound_connection::>( "210.113.67.107:2525".parse().unwrap(), MockPeerId::random(), ) @@ -464,7 +464,7 @@ async fn validate_invalid_inbound_connection_mock_noise() { async fn inbound_connection_invalid_magic() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -508,21 +508,21 @@ where #[tokio::test] async fn inbound_connection_invalid_magic_libp2p() { - inbound_connection_invalid_magic::().await; + inbound_connection_invalid_magic::().await; } #[tokio::test] async fn inbound_connection_invalid_magic_mock_tcp() { - inbound_connection_invalid_magic::>().await; + inbound_connection_invalid_magic::>().await; } #[tokio::test] async fn inbound_connection_invalid_magic_mock_channels() { - inbound_connection_invalid_magic::>() + inbound_connection_invalid_magic::>() .await; } #[tokio::test] async fn inbound_connection_invalid_magic_mock_noise() { - inbound_connection_invalid_magic::>().await; + inbound_connection_invalid_magic::>().await; } diff --git a/p2p/src/peer_manager/tests/connections.rs b/p2p/src/peer_manager/tests/connections.rs index dd8783f3eb..ea8451bc93 100644 --- a/p2p/src/peer_manager/tests/connections.rs +++ b/p2p/src/peer_manager/tests/connections.rs @@ -19,7 +19,7 @@ use libp2p::{Multiaddr, PeerId}; use tokio::{sync::oneshot, time::timeout}; use crate::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, }; use common::{chain::config, primitives::semver::SemVer}; @@ -71,8 +71,8 @@ async fn test_peer_manager_connect( #[tokio::test] async fn test_peer_manager_connect_mock() { - let transport = MakeTcpAddress::make_transport(); - let bind_addr = MakeTcpAddress::make_address(); + let transport = TestTransportTcp::make_transport(); + let bind_addr = TestTransportTcp::make_address(); let remote_addr: SocketAddr = "[::1]:1".parse().unwrap(); test_peer_manager_connect::>(transport, bind_addr, remote_addr) @@ -81,8 +81,8 @@ async fn test_peer_manager_connect_mock() { #[tokio::test] async fn test_peer_manager_connect_libp2p() { - let transport = MakeP2pAddress::make_transport(); - let bind_addr = MakeP2pAddress::make_address(); + let transport = TestTransportLibp2p::make_transport(); + let bind_addr = TestTransportLibp2p::make_address(); let remote_addr: Multiaddr = "/ip6/::1/tcp/6666/p2p/12D3KooWRn14SemPVxwzdQNg8e8Trythiww1FWrNfPbukYBmZEbJ" .parse() @@ -95,7 +95,7 @@ async fn test_peer_manager_connect_libp2p() { // is below the desired threshold and there are idle peers in the peerdb async fn test_auto_connect() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -134,27 +134,27 @@ where #[tokio::test] async fn test_auto_connect_libp2p() { - test_auto_connect::().await; + test_auto_connect::().await; } #[tokio::test] async fn test_auto_connect_mock_tcp() { - test_auto_connect::>().await; + test_auto_connect::>().await; } #[tokio::test] async fn test_auto_connect_mock_channels() { - test_auto_connect::>().await; + test_auto_connect::>().await; } #[tokio::test] async fn test_auto_connect_mock_noise() { - test_auto_connect::>().await; + test_auto_connect::>().await; } async fn connect_outbound_same_network() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -176,30 +176,31 @@ where #[tokio::test] async fn connect_outbound_same_network_libp2p() { - connect_outbound_same_network::().await; + connect_outbound_same_network::().await; } #[tokio::test] async fn connect_outbound_same_network_mock_tcp() { - connect_outbound_same_network::>().await; + connect_outbound_same_network::>().await; } #[tokio::test] async fn connect_outbound_same_network_mock_channels() { - connect_outbound_same_network::>().await; + connect_outbound_same_network::>() + .await; } #[tokio::test] async fn connect_outbound_same_network_mock_noise() { - connect_outbound_same_network::>().await; + connect_outbound_same_network::>().await; } #[tokio::test] async fn test_validate_supported_protocols() { let config = Arc::new(config::create_mainnet()); let peer_manager = make_peer_manager::( - MakeP2pAddress::make_transport(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_transport(), + TestTransportLibp2p::make_address(), config, ) .await; @@ -247,7 +248,7 @@ async fn test_validate_supported_protocols() { async fn connect_outbound_different_network() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -275,28 +276,29 @@ where #[tokio::test] async fn connect_outbound_different_network_libp2p() { - connect_outbound_different_network::().await; + connect_outbound_different_network::().await; } #[tokio::test] async fn connect_outbound_different_network_mock_tcp() { - connect_outbound_different_network::>().await; + connect_outbound_different_network::>().await; } #[tokio::test] async fn connect_outbound_different_network_mock_channels() { - connect_outbound_different_network::>() + connect_outbound_different_network::>() .await; } #[tokio::test] async fn connect_outbound_different_network_mock_noise() { - connect_outbound_different_network::>().await; + connect_outbound_different_network::>() + .await; } async fn connect_inbound_same_network() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -319,27 +321,27 @@ where #[tokio::test] async fn connect_inbound_same_network_libp2p() { - connect_inbound_same_network::().await; + connect_inbound_same_network::().await; } #[tokio::test] async fn connect_inbound_same_network_mock_tcp() { - connect_inbound_same_network::>().await; + connect_inbound_same_network::>().await; } #[tokio::test] async fn connect_inbound_same_network_mock_channel() { - connect_inbound_same_network::>().await; + connect_inbound_same_network::>().await; } #[tokio::test] async fn connect_inbound_same_network_mock_noise() { - connect_inbound_same_network::>().await; + connect_inbound_same_network::>().await; } async fn connect_inbound_different_network() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -378,28 +380,28 @@ where #[tokio::test] async fn connect_inbound_different_network_libp2p() { - connect_inbound_different_network::().await; + connect_inbound_different_network::().await; } #[tokio::test] async fn connect_inbound_different_network_mock_tcp() { - connect_inbound_different_network::>().await; + connect_inbound_different_network::>().await; } #[tokio::test] async fn connect_inbound_different_network_mock_channels() { - connect_inbound_different_network::>() + connect_inbound_different_network::>() .await; } #[tokio::test] async fn connect_inbound_different_network_mock_noise() { - connect_inbound_different_network::>().await; + connect_inbound_different_network::>().await; } async fn remote_closes_connection() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -441,27 +443,27 @@ where #[tokio::test] async fn remote_closes_connection_libp2p() { - remote_closes_connection::().await; + remote_closes_connection::().await; } #[tokio::test] async fn remote_closes_connection_mock_tcp() { - remote_closes_connection::>().await; + remote_closes_connection::>().await; } #[tokio::test] async fn remote_closes_connection_mock_channels() { - remote_closes_connection::>().await; + remote_closes_connection::>().await; } #[tokio::test] async fn remote_closes_connection_mock_noise() { - remote_closes_connection::>().await; + remote_closes_connection::>().await; } async fn inbound_connection_too_many_peers(peers: Vec>) where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -516,7 +518,7 @@ async fn inbound_connection_too_many_peers_libp2p() { }) .collect::>(); - inbound_connection_too_many_peers::(peers).await; + inbound_connection_too_many_peers::(peers).await; } #[tokio::test] @@ -539,7 +541,7 @@ async fn inbound_connection_too_many_peers_mock_tcp() { ) .collect::>(); - inbound_connection_too_many_peers::>(peers) + inbound_connection_too_many_peers::>(peers) .await; } @@ -563,7 +565,7 @@ async fn inbound_connection_too_many_peers_mock_channels() { ) .collect::>(); - inbound_connection_too_many_peers::>( + inbound_connection_too_many_peers::>( peers, ) .await; @@ -587,7 +589,7 @@ async fn inbound_connection_too_many_peers_mock_noise() { }) .collect::>(); - inbound_connection_too_many_peers::>(peers) + inbound_connection_too_many_peers::>(peers) .await; } @@ -623,8 +625,8 @@ where #[tokio::test] async fn connection_timeout_libp2p() { connection_timeout::( - MakeP2pAddress::make_transport(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_transport(), + TestTransportLibp2p::make_address(), format!("/ip4/255.255.255.255/tcp/8888/p2p/{}", PeerId::random()) .parse() .unwrap(), @@ -635,9 +637,9 @@ async fn connection_timeout_libp2p() { #[tokio::test] async fn connection_timeout_mock_tcp() { connection_timeout::>( - MakeTcpAddress::make_transport(), - MakeTcpAddress::make_address(), - MakeTcpAddress::make_address(), + TestTransportTcp::make_transport(), + TestTransportTcp::make_address(), + TestTransportTcp::make_address(), ) .await; } @@ -645,8 +647,8 @@ async fn connection_timeout_mock_tcp() { #[tokio::test] async fn connection_timeout_mock_channels() { connection_timeout::>( - MakeChannelAddress::make_transport(), - MakeChannelAddress::make_address(), + TestTransportChannel::make_transport(), + TestTransportChannel::make_address(), 65_535, ) .await; @@ -655,9 +657,9 @@ async fn connection_timeout_mock_channels() { #[tokio::test] async fn connection_timeout_mock_noise() { connection_timeout::>( - MakeNoiseAddress::make_transport(), - MakeNoiseAddress::make_address(), - MakeNoiseAddress::make_address(), + TestTransportNoise::make_transport(), + TestTransportNoise::make_address(), + TestTransportNoise::make_address(), ) .await; } @@ -723,8 +725,8 @@ async fn connection_timeout_rpc_notified( #[tokio::test] async fn connection_timeout_rpc_notified_libp2p() { connection_timeout_rpc_notified::( - MakeP2pAddress::make_transport(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_transport(), + TestTransportLibp2p::make_address(), format!("/ip4/255.255.255.255/tcp/8888/p2p/{}", PeerId::random()) .parse() .unwrap(), @@ -735,9 +737,9 @@ async fn connection_timeout_rpc_notified_libp2p() { #[tokio::test] async fn connection_timeout_rpc_notified_mock_tcp() { connection_timeout_rpc_notified::>( - MakeTcpAddress::make_transport(), - MakeTcpAddress::make_address(), - MakeTcpAddress::make_address(), + TestTransportTcp::make_transport(), + TestTransportTcp::make_address(), + TestTransportTcp::make_address(), ) .await; } @@ -745,8 +747,8 @@ async fn connection_timeout_rpc_notified_mock_tcp() { #[tokio::test] async fn connection_timeout_rpc_notified_mock_channels() { connection_timeout_rpc_notified::>( - MakeChannelAddress::make_transport(), - MakeChannelAddress::make_address(), + TestTransportChannel::make_transport(), + TestTransportChannel::make_address(), 9999, ) .await; @@ -755,9 +757,9 @@ async fn connection_timeout_rpc_notified_mock_channels() { #[tokio::test] async fn connection_timeout_rpc_notified_mock_noise() { connection_timeout_rpc_notified::>( - MakeNoiseAddress::make_transport(), - MakeNoiseAddress::make_address(), - MakeNoiseAddress::make_address(), + TestTransportNoise::make_transport(), + TestTransportNoise::make_address(), + TestTransportNoise::make_address(), ) .await; } @@ -766,10 +768,13 @@ async fn connection_timeout_rpc_notified_mock_noise() { #[tokio::test] async fn connect_no_ip_in_address_libp2p() { let config = Arc::new(config::create_mainnet()); - let bind_address = MakeP2pAddress::make_address(); - let mut peer_manager = - make_peer_manager::(MakeP2pAddress::make_transport(), bind_address, config) - .await; + let bind_address = TestTransportLibp2p::make_address(); + let mut peer_manager = make_peer_manager::( + TestTransportLibp2p::make_transport(), + bind_address, + config, + ) + .await; let no_ip_addresses = [ Multiaddr::empty(), diff --git a/p2p/src/sync/tests/block_response.rs b/p2p/src/sync/tests/block_response.rs index 2ead39097d..0ec1815d3e 100644 --- a/p2p/src/sync/tests/block_response.rs +++ b/p2p/src/sync/tests/block_response.rs @@ -19,7 +19,7 @@ use libp2p::PeerId; use p2p_test_utils::TestBlockInfo; use crate::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, }; use chainstate::ChainstateError; use common::{chain::block::consensus_data::PoWData, primitives::Idable}; @@ -44,7 +44,7 @@ use crate::{ // peer doesn't exist async fn peer_doesnt_exist() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -63,28 +63,29 @@ where #[tokio::test] async fn peer_doesnt_exist_libp2p() { - peer_doesnt_exist::().await; + peer_doesnt_exist::().await; } #[tokio::test] async fn peer_doesnt_exist_mock_tcp() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>().await; } #[tokio::test] async fn peer_doesnt_exist_mock_channels() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>() + .await; } #[tokio::test] async fn peer_doesnt_exist_mock_noise() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>().await; } // submit valid block but the peer is in invalid state async fn valid_block() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -117,28 +118,28 @@ where #[tokio::test] async fn valid_block_libp2p() { - valid_block::().await; + valid_block::().await; } #[tokio::test] async fn valid_block_mock_tcp() { - valid_block::>().await; + valid_block::>().await; } #[tokio::test] async fn valid_block_mock_channels() { - valid_block::>().await; + valid_block::>().await; } #[tokio::test] async fn valid_block_mock_noise() { - valid_block::>().await; + valid_block::>().await; } // submit valid block async fn valid_block_invalid_state() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -165,32 +166,32 @@ where #[tokio::test] async fn valid_block_invalid_state_libp2p() { - valid_block_invalid_state::().await; + valid_block_invalid_state::().await; } #[tokio::test] async fn valid_block_invalid_state_mock_tcp() { - valid_block_invalid_state::>() + valid_block_invalid_state::>() .await; } #[tokio::test] async fn valid_block_invalid_state_mock_channels() { - valid_block_invalid_state::>( + valid_block_invalid_state::>( ) .await; } #[tokio::test] async fn valid_block_invalid_state_mock_noise() { - valid_block_invalid_state::>() + valid_block_invalid_state::>() .await; } // submit the same block twice async fn valid_block_resubmitted_chainstate() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -227,19 +228,23 @@ where #[tokio::test] async fn valid_block_resubmitted_chainstate_libp2p() { - valid_block_resubmitted_chainstate::().await; + valid_block_resubmitted_chainstate::().await; } #[tokio::test] async fn valid_block_resubmitted_chainstate_mock_tcp() { - valid_block_resubmitted_chainstate::>() - .await; + valid_block_resubmitted_chainstate::< + TestTransportTcp, + MockPeerId, + MockService, + >() + .await; } #[tokio::test] async fn valid_block_resubmitted_chainstate_mock_channels() { valid_block_resubmitted_chainstate::< - MakeChannelAddress, + TestTransportChannel, MockPeerId, MockService, >() @@ -249,7 +254,7 @@ async fn valid_block_resubmitted_chainstate_mock_channels() { #[tokio::test] async fn valid_block_resubmitted_chainstate_mock_noise() { valid_block_resubmitted_chainstate::< - MakeNoiseAddress, + TestTransportNoise, MockPeerId, MockService, >() @@ -259,7 +264,7 @@ async fn valid_block_resubmitted_chainstate_mock_noise() { // block validation fails async fn invalid_block() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -298,20 +303,20 @@ where #[tokio::test] async fn invalid_block_libp2p() { - invalid_block::().await; + invalid_block::().await; } #[tokio::test] async fn invalid_block_mock_tcp() { - invalid_block::>().await; + invalid_block::>().await; } #[tokio::test] async fn invalid_block_mock_channels() { - invalid_block::>().await; + invalid_block::>().await; } #[tokio::test] async fn invalid_block_mock_noise() { - invalid_block::>().await; + invalid_block::>().await; } diff --git a/p2p/src/sync/tests/connection.rs b/p2p/src/sync/tests/connection.rs index e8149c77be..5c59a0f018 100644 --- a/p2p/src/sync/tests/connection.rs +++ b/p2p/src/sync/tests/connection.rs @@ -16,7 +16,7 @@ use libp2p::PeerId; use crate::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, }; use crate::{ @@ -36,7 +36,7 @@ use crate::{ // handle peer reconnection async fn test_peer_reconnected() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -57,29 +57,29 @@ where #[tokio::test] async fn test_peer_reconnected_libp2p() { - test_peer_reconnected::().await; + test_peer_reconnected::().await; } #[tokio::test] async fn test_peer_reconnected_mock_tcp() { - test_peer_reconnected::>().await; + test_peer_reconnected::>().await; } #[tokio::test] async fn test_peer_reconnected_mock_channels() { - test_peer_reconnected::>() + test_peer_reconnected::>() .await; } #[tokio::test] async fn test_peer_reconnected_mock_noise() { - test_peer_reconnected::>().await; + test_peer_reconnected::>().await; } // handle peer disconnection event async fn test_peer_disconnected() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -105,21 +105,22 @@ where #[tokio::test] async fn test_peer_disconnected_libp2p() { - test_peer_disconnected::().await; + test_peer_disconnected::().await; } #[tokio::test] async fn test_peer_disconnected_mock_tcp() { - test_peer_disconnected::>().await; + test_peer_disconnected::>().await; } #[tokio::test] async fn test_peer_disconnected_mock_channels() { - test_peer_disconnected::>() + test_peer_disconnected::>() .await; } #[tokio::test] async fn test_peer_disconnected_mock_noise() { - test_peer_disconnected::>().await; + test_peer_disconnected::>() + .await; } diff --git a/p2p/src/sync/tests/header_response.rs b/p2p/src/sync/tests/header_response.rs index 2aac70da83..a10f96907d 100644 --- a/p2p/src/sync/tests/header_response.rs +++ b/p2p/src/sync/tests/header_response.rs @@ -19,7 +19,7 @@ use crypto::random::{Rng, SliceRandom}; use libp2p::PeerId; use crate::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, }; use p2p_test_utils::TestBlockInfo; @@ -43,7 +43,7 @@ use crate::{ // response contains more than 2000 headers async fn too_many_headers() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -73,28 +73,28 @@ where #[tokio::test] async fn too_many_headers_libp2p() { - too_many_headers::().await; + too_many_headers::().await; } #[tokio::test] async fn too_many_headers_mock_tcp() { - too_many_headers::>().await; + too_many_headers::>().await; } #[tokio::test] async fn too_many_headers_mock_channels() { - too_many_headers::>().await; + too_many_headers::>().await; } #[tokio::test] async fn too_many_headers_mock_noise() { - too_many_headers::>().await; + too_many_headers::>().await; } // header response is empty async fn empty_response() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -114,28 +114,28 @@ where #[tokio::test] async fn empty_response_libp2p() { - empty_response::().await; + empty_response::().await; } #[tokio::test] async fn empty_response_mock_tcp() { - empty_response::>().await; + empty_response::>().await; } #[tokio::test] async fn empty_response_mock_channels() { - empty_response::>().await; + empty_response::>().await; } #[tokio::test] async fn empty_response_mock_noise() { - empty_response::>().await; + empty_response::>().await; } // valid response with headers in order and the first header attaching to local chain async fn valid_response() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -168,28 +168,28 @@ where #[tokio::test] async fn valid_response_libp2p() { - valid_response::().await; + valid_response::().await; } #[tokio::test] async fn valid_response_mock_tcp() { - valid_response::>().await; + valid_response::>().await; } #[tokio::test] async fn valid_response_mock_channles() { - valid_response::>().await; + valid_response::>().await; } #[tokio::test] async fn valid_response_mock_noise() { - valid_response::>().await; + valid_response::>().await; } // the first header doesn't attach to local chain async fn header_doesnt_attach_to_local_chain() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -221,13 +221,13 @@ where #[tokio::test] async fn header_doesnt_attach_to_local_chain_libp2p() { - header_doesnt_attach_to_local_chain::().await; + header_doesnt_attach_to_local_chain::().await; } #[tokio::test] async fn header_doesnt_attach_to_local_chain_mock_tcp() { header_doesnt_attach_to_local_chain::< - MakeTcpAddress, + TestTransportTcp, MockPeerId, MockService, >() @@ -237,7 +237,7 @@ async fn header_doesnt_attach_to_local_chain_mock_tcp() { #[tokio::test] async fn header_doesnt_attach_to_local_chain_mock_channel() { header_doesnt_attach_to_local_chain::< - MakeChannelAddress, + TestTransportChannel, MockPeerId, MockService, >() @@ -247,7 +247,7 @@ async fn header_doesnt_attach_to_local_chain_mock_channel() { #[tokio::test] async fn header_doesnt_attach_to_local_chain_mock_noise() { header_doesnt_attach_to_local_chain::< - MakeNoiseAddress, + TestTransportNoise, MockPeerId, MockService, >() @@ -257,7 +257,7 @@ async fn header_doesnt_attach_to_local_chain_mock_noise() { // valid headers but they are not in order async fn headers_not_in_order() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -290,29 +290,29 @@ where #[tokio::test] async fn headers_not_in_order_libp2p() { - headers_not_in_order::().await; + headers_not_in_order::().await; } #[tokio::test] async fn headers_not_in_order_mock_tcp() { - headers_not_in_order::>().await; + headers_not_in_order::>().await; } #[tokio::test] async fn headers_not_in_order_mock_channels() { - headers_not_in_order::>() + headers_not_in_order::>() .await; } #[tokio::test] async fn headers_not_in_order_mock_noise() { - headers_not_in_order::>().await; + headers_not_in_order::>().await; } // peer state is incorrect to be sending header responses async fn invalid_state() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -346,28 +346,28 @@ where #[tokio::test] async fn invalid_state_libp2p() { - invalid_state::().await; + invalid_state::().await; } #[tokio::test] async fn invalid_state_mock_tcp() { - invalid_state::>().await; + invalid_state::>().await; } #[tokio::test] async fn invalid_state_mock_channels() { - invalid_state::>().await; + invalid_state::>().await; } #[tokio::test] async fn invalid_state_mock_noise() { - invalid_state::>().await; + invalid_state::>().await; } // peer doesn't exist async fn peer_doesnt_exist() where - A: MakeTestAddress, + A: TestTransport, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -386,20 +386,21 @@ where #[tokio::test] async fn peer_doesnt_exist_libp2p() { - peer_doesnt_exist::().await; + peer_doesnt_exist::().await; } #[tokio::test] async fn peer_doesnt_exist_mock_tcp() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>().await; } #[tokio::test] async fn peer_doesnt_exist_mock_channels() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>() + .await; } #[tokio::test] async fn peer_doesnt_exist_mock_noise() { - peer_doesnt_exist::>().await; + peer_doesnt_exist::>().await; } diff --git a/p2p/src/sync/tests/request_response.rs b/p2p/src/sync/tests/request_response.rs index 445e17808a..8d89a42627 100644 --- a/p2p/src/sync/tests/request_response.rs +++ b/p2p/src/sync/tests/request_response.rs @@ -20,7 +20,7 @@ use tokio::time::timeout; use chainstate::Locator; use crate::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, }; use crate::{ event::PeerManagerEvent, @@ -40,7 +40,7 @@ use crate::{ async fn request_response() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + Debug + 'static, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -86,27 +86,27 @@ where #[tokio::test] async fn request_response_libp2p() { - request_response::().await; + request_response::().await; } #[tokio::test] async fn request_response_mock_tcp() { - request_response::>().await; + request_response::>().await; } #[tokio::test] async fn request_response_mock_channels() { - request_response::>().await; + request_response::>().await; } #[tokio::test] async fn test_request_response_mock_noise() { - request_response::>().await; + request_response::>().await; } async fn multiple_requests_and_responses() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -180,30 +180,30 @@ where #[tokio::test] async fn multiple_requests_and_responses_libp2p() { - multiple_requests_and_responses::().await; + multiple_requests_and_responses::().await; } #[tokio::test] async fn multiple_requests_and_responses_mock_tcp() { - multiple_requests_and_responses::>().await; + multiple_requests_and_responses::>().await; } #[tokio::test] async fn multiple_requests_and_responses_mock_channels() { - multiple_requests_and_responses::>() + multiple_requests_and_responses::>() .await; } #[tokio::test] async fn multiple_requests_and_responses_mock_noise() { - multiple_requests_and_responses::>().await; + multiple_requests_and_responses::>().await; } // Receive getheaders before receiving the `Connected` event from the peer manager which makes the // request be rejected and time out in the sender's end. async fn request_timeout() where - A: MakeTestAddress, + A: TestTransport, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -248,20 +248,20 @@ where #[tokio::test] async fn request_timeout_libp2p() { - request_timeout::().await; + request_timeout::().await; } #[tokio::test] async fn request_timeout_mock_tcp() { - request_timeout::>().await; + request_timeout::>().await; } #[tokio::test] async fn request_timeout_mock_channels() { - request_timeout::>().await; + request_timeout::>().await; } #[tokio::test] async fn request_timeout_mock_noise() { - request_timeout::>().await; + request_timeout::>().await; } diff --git a/p2p/src/testing_utils.rs b/p2p/src/testing_utils.rs index 43bb1aa105..1352ddadb2 100644 --- a/p2p/src/testing_utils.rs +++ b/p2p/src/testing_utils.rs @@ -16,11 +16,11 @@ use libp2p::Multiaddr; use std::net::SocketAddr; -/// An interface for creating the address. +/// An interface for creating test transports and addresses. /// -/// This abstraction layer is needed to uniformly create an address in the tests for different -/// mocks transport implementations. -pub trait MakeTestAddress { +/// This abstraction layer is needed to uniformly create transports and addresses +/// in the tests for different mocks transport implementations. +pub trait TestTransport { /// A transport type. type Transport; @@ -36,9 +36,9 @@ pub trait MakeTestAddress { fn make_address() -> Self::Address; } -pub struct MakeP2pAddress {} +pub struct TestTransportLibp2p {} -impl MakeTestAddress for MakeP2pAddress { +impl TestTransport for TestTransportLibp2p { type Transport = crate::net::libp2p::Libp2pTransport; type Address = Multiaddr; @@ -53,9 +53,9 @@ impl MakeTestAddress for MakeP2pAddress { } } -pub struct MakeTcpAddress {} +pub struct TestTransportTcp {} -impl MakeTestAddress for MakeTcpAddress { +impl TestTransport for TestTransportTcp { type Transport = crate::net::mock::transport::TcpTransportSocket; type Address = SocketAddr; @@ -69,9 +69,9 @@ impl MakeTestAddress for MakeTcpAddress { } } -pub struct MakeChannelAddress {} +pub struct TestTransportChannel {} -impl MakeTestAddress for MakeChannelAddress { +impl TestTransport for TestTransportChannel { type Transport = crate::net::mock::transport::MockChannelTransport; type Address = u64; @@ -85,9 +85,9 @@ impl MakeTestAddress for MakeChannelAddress { } } -pub struct MakeNoiseAddress {} +pub struct TestTransportNoise {} -impl MakeTestAddress for MakeNoiseAddress { +impl TestTransport for TestTransportNoise { type Transport = crate::net::mock::transport::NoiseTcpTransport; type Address = SocketAddr; @@ -99,6 +99,6 @@ impl MakeTestAddress for MakeNoiseAddress { } fn make_address() -> Self::Address { - MakeTcpAddress::make_address() + TestTransportTcp::make_address() } } diff --git a/p2p/tests/backend_libp2p.rs b/p2p/tests/backend_libp2p.rs index bfe63ed0d7..33e7ffacaf 100644 --- a/p2p/tests/backend_libp2p.rs +++ b/p2p/tests/backend_libp2p.rs @@ -14,8 +14,8 @@ // limitations under the License. use p2p::net::libp2p::Libp2pService; -use p2p::testing_utils::MakeP2pAddress; +use p2p::testing_utils::TestTransportLibp2p; fn main() { - p2p_backend_test_suite::run::(); + p2p_backend_test_suite::run::(); } diff --git a/p2p/tests/backend_mock_channels.rs b/p2p/tests/backend_mock_channels.rs index 992a5b08c2..3acb43c49e 100644 --- a/p2p/tests/backend_mock_channels.rs +++ b/p2p/tests/backend_mock_channels.rs @@ -14,8 +14,8 @@ // limitations under the License. use p2p::net::mock::{transport::MockChannelTransport, MockService}; -use p2p::testing_utils::MakeChannelAddress; +use p2p::testing_utils::TestTransportChannel; fn main() { - p2p_backend_test_suite::run::>(); + p2p_backend_test_suite::run::>(); } diff --git a/p2p/tests/backend_mock_noise.rs b/p2p/tests/backend_mock_noise.rs index 5608385c43..81aabfa95e 100644 --- a/p2p/tests/backend_mock_noise.rs +++ b/p2p/tests/backend_mock_noise.rs @@ -17,11 +17,11 @@ use p2p::net::mock::{ transport::{NoiseEncryptionAdapter, TcpTransportSocket, WrappedTransportSocket}, MockService, }; -use p2p::testing_utils::MakeNoiseAddress; +use p2p::testing_utils::TestTransportNoise; fn main() { p2p_backend_test_suite::run::< - MakeNoiseAddress, + TestTransportNoise, MockService>, >(); } diff --git a/p2p/tests/backend_mock_tcp.rs b/p2p/tests/backend_mock_tcp.rs index 5aabb7def6..8e597bc597 100644 --- a/p2p/tests/backend_mock_tcp.rs +++ b/p2p/tests/backend_mock_tcp.rs @@ -14,8 +14,8 @@ // limitations under the License. use p2p::net::mock::{transport::TcpTransportSocket, MockService}; -use p2p::testing_utils::MakeTcpAddress; +use p2p::testing_utils::TestTransportTcp; fn main() { - p2p_backend_test_suite::run::>(); + p2p_backend_test_suite::run::>(); } diff --git a/p2p/tests/block_announcement.rs b/p2p/tests/block_announcement.rs index c33dfa0b81..004ad1541a 100644 --- a/p2p/tests/block_announcement.rs +++ b/p2p/tests/block_announcement.rs @@ -21,7 +21,7 @@ use common::{ }; use p2p::testing_utils::{ - MakeChannelAddress, MakeNoiseAddress, MakeP2pAddress, MakeTcpAddress, MakeTestAddress, + TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, }; use p2p::{ error::{P2pError, PublishError}, @@ -42,7 +42,7 @@ use p2p::{ // don't automatically forward the messages. async fn block_announcement_3_peers() where - A: MakeTestAddress, + A: TestTransport, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, @@ -189,26 +189,26 @@ where #[tokio::test] async fn block_announcement_3_peers_libp2p() { - block_announcement_3_peers::().await; + block_announcement_3_peers::().await; } // TODO: Implement announcements resending in partially connected networks. #[ignore] #[tokio::test] async fn block_announcement_3_peers_tcp() { - block_announcement_3_peers::>().await; + block_announcement_3_peers::>().await; } // TODO: Implement announcements resending in partially connected networks. #[tokio::test] #[ignore] async fn block_announcement_3_peers_channels() { - block_announcement_3_peers::>().await; + block_announcement_3_peers::>().await; } // TODO: Implement announcements resending in partially connected networks. #[ignore] #[tokio::test] async fn block_announcement_3_peers_noise() { - block_announcement_3_peers::>().await; + block_announcement_3_peers::>().await; } diff --git a/p2p/tests/libp2p-mdns.rs b/p2p/tests/libp2p-mdns.rs index 97f5b95c97..b1874fc5bd 100644 --- a/p2p/tests/libp2p-mdns.rs +++ b/p2p/tests/libp2p-mdns.rs @@ -17,7 +17,7 @@ use std::{sync::Arc, time::Duration}; use libp2p::multiaddr::Protocol; -use p2p::testing_utils::{MakeP2pAddress, MakeTestAddress}; +use p2p::testing_utils::{TestTransport, TestTransportLibp2p}; use p2p::{ config::{MdnsConfig, P2pConfig}, net::{ @@ -30,8 +30,8 @@ use p2p::{ async fn test_libp2p_peer_discovery() { let config = Arc::new(common::chain::config::create_mainnet()); let (mut serv, _) = Libp2pService::start( - MakeP2pAddress::make_transport(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_transport(), + TestTransportLibp2p::make_address(), Arc::clone(&config), Arc::new(P2pConfig { bind_address: "/ip6/::1/tcp/3031".to_owned().into(), @@ -49,8 +49,8 @@ async fn test_libp2p_peer_discovery() { .unwrap(); let (mut serv2, _) = Libp2pService::start( - MakeP2pAddress::make_transport(), - MakeP2pAddress::make_address(), + TestTransportLibp2p::make_transport(), + TestTransportLibp2p::make_address(), Arc::clone(&config), Arc::new(P2pConfig { bind_address: "/ip6/::1/tcp/3031".to_owned().into(), From 06cdbf130ddd4ce32eba9b32bb98902f9c1e6f88 Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Thu, 8 Dec 2022 18:12:55 +0300 Subject: [PATCH 8/9] Minor refactor in p2p::make_p2p --- node/src/runner.rs | 7 ++----- p2p/src/lib.rs | 19 ++++++------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/node/src/runner.rs b/node/src/runner.rs index ac2484ee4b..7568f55731 100644 --- a/node/src/runner.rs +++ b/node/src/runner.rs @@ -71,14 +71,11 @@ pub async fn initialize( }); // P2P subsystem - let p2p_config = node_config.p2p.into(); - let p2p_transport = p2p::net::libp2p::make_transport(&p2p_config); let p2p = manager.add_subsystem( "p2p", - p2p::make_p2p::( - p2p_transport, + p2p::make_p2p( Arc::clone(&chain_config), - Arc::new(p2p_config), + Arc::new(node_config.p2p.into()), chainstate.clone(), mempool.clone(), ) diff --git a/p2p/src/lib.rs b/p2p/src/lib.rs index 82991b7659..cc57d6cf69 100644 --- a/p2p/src/lib.rs +++ b/p2p/src/lib.rs @@ -146,23 +146,15 @@ impl subsystem::Subsystem for Box {} pub type P2pHandle = subsystem::Handle>; -pub async fn make_p2p( - transport: T::Transport, +pub async fn make_p2p( chain_config: Arc, p2p_config: Arc, chainstate_handle: subsystem::Handle>, mempool_handle: mempool::MempoolHandle, -) -> crate::Result> -where - T: NetworkingService + 'static, - T::ConnectivityHandle: ConnectivityService, - T::SyncingMessagingHandle: SyncingMessagingService, - ::Address: FromStr, - <::Address as FromStr>::Err: Debug, - ::PeerId: FromStr, - <::PeerId as FromStr>::Err: Debug, -{ - let p2p = P2p::::new( +) -> crate::Result> { + let transport = net::libp2p::make_transport(&p2p_config); + + let p2p = P2p::::new( transport, chain_config, p2p_config, @@ -170,5 +162,6 @@ where mempool_handle, ) .await?; + Ok(Box::new(p2p)) } From 334be7d73d7c3f0f9b8f599401f9f37cd1fefe18 Mon Sep 17 00:00:00 2001 From: Pavel Kokolemin Date: Fri, 9 Dec 2022 12:35:09 +0300 Subject: [PATCH 9/9] Rename TestTransport to TestTransportMaker --- p2p/backend-test-suite/src/ban.rs | 6 ++--- .../src/block_announcement.rs | 8 +++---- p2p/backend-test-suite/src/connect.rs | 8 +++---- p2p/backend-test-suite/src/lib.rs | 6 ++--- p2p/backend-test-suite/src/sync.rs | 22 +++++++++---------- p2p/backend-test-suite/src/utils.rs | 2 +- p2p/src/net/libp2p/backend.rs | 2 +- p2p/src/net/libp2p/tests/frontend.rs | 2 +- p2p/src/net/libp2p/tests/gossipsub.rs | 2 +- p2p/src/net/libp2p/tests/identify.rs | 2 +- p2p/src/net/libp2p/tests/mdns.rs | 2 +- p2p/src/net/libp2p/tests/ping.rs | 2 +- p2p/src/net/libp2p/tests/request_response.rs | 2 +- p2p/src/net/libp2p/tests/swarm.rs | 2 +- p2p/src/net/mock/mod.rs | 8 +++---- p2p/src/net/mock/peer.rs | 12 +++++----- .../stream_adapter/wrapped_transport/tests.rs | 4 ++-- p2p/src/net/mock/transport/impls/tcp.rs | 2 +- p2p/src/peer_manager/tests/ban.rs | 15 +++++++------ p2p/src/peer_manager/tests/connections.rs | 17 +++++++------- p2p/src/sync/tests/block_response.rs | 13 ++++++----- p2p/src/sync/tests/connection.rs | 7 +++--- p2p/src/sync/tests/header_response.rs | 17 +++++++------- p2p/src/sync/tests/request_response.rs | 9 ++++---- p2p/src/testing_utils.rs | 12 +++++----- p2p/tests/block_announcement.rs | 5 +++-- p2p/tests/libp2p-mdns.rs | 2 +- 27 files changed, 99 insertions(+), 92 deletions(-) diff --git a/p2p/backend-test-suite/src/ban.rs b/p2p/backend-test-suite/src/ban.rs index 1896560efa..98ed74ca32 100644 --- a/p2p/backend-test-suite/src/ban.rs +++ b/p2p/backend-test-suite/src/ban.rs @@ -17,7 +17,7 @@ use std::{fmt::Debug, sync::Arc}; use tokio::sync::mpsc; -use p2p::testing_utils::TestTransport; +use p2p::testing_utils::TestTransportMaker; use p2p::{ config::P2pConfig, error::{P2pError, PublishError}, @@ -38,7 +38,7 @@ tests![invalid_pubsub_block, invalid_sync_block,]; // receives a `AdjustPeerScore` event which bans the peer of the second service. async fn invalid_pubsub_block() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -134,7 +134,7 @@ where // Start two networking services and give an invalid block, verify that `PeerManager` is informed. async fn invalid_sync_block() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, diff --git a/p2p/backend-test-suite/src/block_announcement.rs b/p2p/backend-test-suite/src/block_announcement.rs index c667ec5f1d..f778563e20 100644 --- a/p2p/backend-test-suite/src/block_announcement.rs +++ b/p2p/backend-test-suite/src/block_announcement.rs @@ -32,7 +32,7 @@ use common::{ }; use serialization::Encode; -use p2p::testing_utils::TestTransport; +use p2p::testing_utils::TestTransportMaker; use p2p::{ error::{P2pError, PublishError}, message::Announcement, @@ -52,7 +52,7 @@ tests![ async fn block_announcement() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, @@ -138,7 +138,7 @@ where async fn block_announcement_no_subscription() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, @@ -186,7 +186,7 @@ where async fn block_announcement_too_big_message() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, diff --git a/p2p/backend-test-suite/src/connect.rs b/p2p/backend-test-suite/src/connect.rs index c1e44df81d..7f0cc0e9fb 100644 --- a/p2p/backend-test-suite/src/connect.rs +++ b/p2p/backend-test-suite/src/connect.rs @@ -17,7 +17,7 @@ use std::{fmt::Debug, sync::Arc}; -use p2p::testing_utils::TestTransport; +use p2p::testing_utils::TestTransportMaker; use p2p::{ error::{DialError, P2pError}, net::{ConnectivityService, NetworkingService, SyncingMessagingService}, @@ -32,7 +32,7 @@ tests![ async fn connect() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -53,7 +53,7 @@ where #[cfg(not(target_os = "windows"))] async fn connect_address_in_use() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, @@ -82,7 +82,7 @@ where // trying to connect to `service1`. async fn connect_accept() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + std::fmt::Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, diff --git a/p2p/backend-test-suite/src/lib.rs b/p2p/backend-test-suite/src/lib.rs index 49768d20b8..5dbb24ddcb 100644 --- a/p2p/backend-test-suite/src/lib.rs +++ b/p2p/backend-test-suite/src/lib.rs @@ -29,12 +29,12 @@ use std::fmt::Debug; use libtest_mimic::{Arguments, Trial}; use p2p::net::{ConnectivityService, NetworkingService, SyncingMessagingService}; -use p2p::testing_utils::TestTransport; +use p2p::testing_utils::TestTransportMaker; /// Runs all tests. pub fn run() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, @@ -47,7 +47,7 @@ where /// Collects all backend agnostic tests. fn tests() -> Vec where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService + Debug, S::SyncingMessagingHandle: SyncingMessagingService + Debug, diff --git a/p2p/backend-test-suite/src/sync.rs b/p2p/backend-test-suite/src/sync.rs index 109ecda5ea..2bd943d06f 100644 --- a/p2p/backend-test-suite/src/sync.rs +++ b/p2p/backend-test-suite/src/sync.rs @@ -27,7 +27,7 @@ use common::{ chain::{config::ChainConfig, GenBlock}, primitives::{Id, Idable}, }; -use p2p::testing_utils::TestTransport; +use p2p::testing_utils::TestTransportMaker; use p2p::{ config::{MdnsConfig, P2pConfig}, error::P2pError, @@ -58,7 +58,7 @@ tests![ async fn local_and_remote_in_sync() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -107,7 +107,7 @@ where // no blocks are downloaded whereas local node downloads the 7 new blocks from remote async fn remote_ahead_by_7_blocks() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -209,7 +209,7 @@ where // local and remote nodes are in the same chain but local is ahead of remote by 12 blocks async fn local_ahead_by_12_blocks() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -330,7 +330,7 @@ where // verify that remote nodes does a reorg async fn remote_local_diff_chains_local_higher() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug + 'static, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -476,7 +476,7 @@ where // verify that local node does a reorg async fn remote_local_diff_chains_remote_higher() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -620,7 +620,7 @@ where async fn two_remote_nodes_different_chains() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -742,7 +742,7 @@ where async fn two_remote_nodes_same_chains() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -880,7 +880,7 @@ where async fn two_remote_nodes_same_chains_new_blocks() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -1032,7 +1032,7 @@ where // // verify that local node downloads the blocks and after that they are in sync async fn connect_disconnect_resyncing() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + Debug, S::ConnectivityHandle: ConnectivityService, S::SyncingMessagingHandle: SyncingMessagingService, @@ -1159,7 +1159,7 @@ where // Check that the peer that ignores requests is disconnected. async fn disconnect_unresponsive_peer() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, diff --git a/p2p/backend-test-suite/src/utils.rs b/p2p/backend-test-suite/src/utils.rs index fdfa257e3d..c167ea496b 100644 --- a/p2p/backend-test-suite/src/utils.rs +++ b/p2p/backend-test-suite/src/utils.rs @@ -17,7 +17,7 @@ macro_rules! tests { ($($(#[$meta:meta])* $name:ident,)+) => { pub fn tests() -> impl Iterator where - A: p2p::testing_utils::TestTransport, + A: p2p::testing_utils::TestTransportMaker, S: p2p::net::NetworkingService + std::fmt::Debug + 'static, S::ConnectivityHandle: p2p::net::ConnectivityService + std::fmt::Debug, S::SyncingMessagingHandle: p2p::net::SyncingMessagingService + std::fmt::Debug, diff --git a/p2p/src/net/libp2p/backend.rs b/p2p/src/net/libp2p/backend.rs index 0d0724e84e..645932dc41 100644 --- a/p2p/src/net/libp2p/backend.rs +++ b/p2p/src/net/libp2p/backend.rs @@ -341,7 +341,7 @@ mod tests { self, connection_manager, discovery, sync_codec::{SyncMessagingCodec, SyncingProtocol}, }; - use crate::testing_utils::{TestTransport, TestTransportLibp2p}; + use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use libp2p::{ core::upgrade, gossipsub::{Gossipsub, GossipsubConfigBuilder, MessageAuthenticity}, diff --git a/p2p/src/net/libp2p/tests/frontend.rs b/p2p/src/net/libp2p/tests/frontend.rs index 9040a3328e..6510c68107 100644 --- a/p2p/src/net/libp2p/tests/frontend.rs +++ b/p2p/src/net/libp2p/tests/frontend.rs @@ -18,7 +18,7 @@ use std::{sync::Arc, time::Duration}; use libp2p::{core::PeerId, multiaddr::Protocol, Multiaddr}; use tokio::net::TcpListener; -use crate::testing_utils::{TestTransport, TestTransportLibp2p}; +use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use serialization::{Decode, Encode}; use crate::{ diff --git a/p2p/src/net/libp2p/tests/gossipsub.rs b/p2p/src/net/libp2p/tests/gossipsub.rs index fb6ff96edf..3fbab25b7d 100644 --- a/p2p/src/net/libp2p/tests/gossipsub.rs +++ b/p2p/src/net/libp2p/tests/gossipsub.rs @@ -16,7 +16,7 @@ use super::*; use crate::net::libp2p::{behaviour, types::*}; -use crate::testing_utils::{TestTransport, TestTransportLibp2p}; +use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use futures::StreamExt; use libp2p::gossipsub::IdentTopic as Topic; use serialization::Encode; diff --git a/p2p/src/net/libp2p/tests/identify.rs b/p2p/src/net/libp2p/tests/identify.rs index ede9e7f606..29463dfe9c 100644 --- a/p2p/src/net/libp2p/tests/identify.rs +++ b/p2p/src/net/libp2p/tests/identify.rs @@ -15,7 +15,7 @@ use super::*; use crate::net::libp2p::behaviour; -use crate::testing_utils::{TestTransport, TestTransportLibp2p}; +use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use libp2p::ping; use std::time::Duration; diff --git a/p2p/src/net/libp2p/tests/mdns.rs b/p2p/src/net/libp2p/tests/mdns.rs index c27c1427a7..5d11ca7bd4 100644 --- a/p2p/src/net/libp2p/tests/mdns.rs +++ b/p2p/src/net/libp2p/tests/mdns.rs @@ -18,7 +18,7 @@ use std::{sync::Arc, time::Duration}; use futures::StreamExt; use libp2p::swarm::SwarmEvent; -use crate::testing_utils::{TestTransport, TestTransportLibp2p}; +use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use crate::{ config::{MdnsConfig, P2pConfig}, diff --git a/p2p/src/net/libp2p/tests/ping.rs b/p2p/src/net/libp2p/tests/ping.rs index 9c42aa9a3e..2241f2bebd 100644 --- a/p2p/src/net/libp2p/tests/ping.rs +++ b/p2p/src/net/libp2p/tests/ping.rs @@ -15,7 +15,7 @@ use super::*; use crate::net::libp2p::behaviour; -use crate::testing_utils::{TestTransport, TestTransportLibp2p}; +use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use futures::StreamExt; use libp2p::{ ping, diff --git a/p2p/src/net/libp2p/tests/request_response.rs b/p2p/src/net/libp2p/tests/request_response.rs index 48dfdd5d44..e99eaff60d 100644 --- a/p2p/src/net/libp2p/tests/request_response.rs +++ b/p2p/src/net/libp2p/tests/request_response.rs @@ -14,7 +14,7 @@ // limitations under the License. use super::*; -use crate::testing_utils::{TestTransport, TestTransportLibp2p}; +use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use crate::{ error::{P2pError, PeerError}, net::libp2p::{behaviour::sync_codec::message_types::SyncRequest, types}, diff --git a/p2p/src/net/libp2p/tests/swarm.rs b/p2p/src/net/libp2p/tests/swarm.rs index 292e2071dd..226906227e 100644 --- a/p2p/src/net/libp2p/tests/swarm.rs +++ b/p2p/src/net/libp2p/tests/swarm.rs @@ -15,7 +15,7 @@ use super::*; use crate::error::P2pError; -use crate::testing_utils::{TestTransport, TestTransportLibp2p}; +use crate::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use futures::StreamExt; use libp2p::{ core::upgrade, diff --git a/p2p/src/net/mock/mod.rs b/p2p/src/net/mock/mod.rs index d79328948a..a88d336729 100644 --- a/p2p/src/net/mock/mod.rs +++ b/p2p/src/net/mock/mod.rs @@ -386,7 +386,7 @@ where #[cfg(test)] mod tests { use super::{transport::NoiseTcpTransport, *}; - use crate::testing_utils::{TestTransport, TestTransportChannel, TestTransportTcp}; + use crate::testing_utils::{TestTransportChannel, TestTransportMaker, TestTransportTcp}; use crate::{ net::{ self, @@ -400,7 +400,7 @@ mod tests { async fn connect_to_remote() where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket + Debug, { let config = Arc::new(common::chain::config::create_mainnet()); @@ -469,7 +469,7 @@ mod tests { async fn accept_incoming() where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket, { let config = Arc::new(common::chain::config::create_mainnet()); @@ -538,7 +538,7 @@ mod tests { async fn disconnect() where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket, { let config = Arc::new(common::chain::config::create_mainnet()); diff --git a/p2p/src/net/mock/peer.rs b/p2p/src/net/mock/peer.rs index 2e911f2060..764c29a04f 100644 --- a/p2p/src/net/mock/peer.rs +++ b/p2p/src/net/mock/peer.rs @@ -233,7 +233,7 @@ where mod tests { use super::*; use crate::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportMaker, TestTransportNoise, TestTransportTcp, }; use crate::{ message, @@ -250,7 +250,7 @@ mod tests { async fn handshake_inbound() where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -332,7 +332,7 @@ mod tests { async fn handshake_outbound() where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -417,7 +417,7 @@ mod tests { async fn handshake_different_network() where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -478,7 +478,7 @@ mod tests { async fn invalid_handshake_message() where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket, { let (socket1, socket2) = get_two_connected_sockets::().await; @@ -535,7 +535,7 @@ mod tests { pub async fn get_two_connected_sockets() -> (T::Stream, T::Stream) where - A: TestTransport, + A: TestTransportMaker, T: TransportSocket, { let transport = A::make_transport(); diff --git a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs index 83a55a11a5..a6ecabe1bc 100644 --- a/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs +++ b/p2p/src/net/mock/transport/impls/stream_adapter/wrapped_transport/tests.rs @@ -18,7 +18,7 @@ use std::{ time::Duration, }; -use crate::testing_utils::{TestTransport, TestTransportChannel, TestTransportTcp}; +use crate::testing_utils::{TestTransportChannel, TestTransportMaker, TestTransportTcp}; use async_trait::async_trait; use futures::StreamExt; use tokio::{ @@ -51,7 +51,7 @@ async fn send_recv(sender: &mut T, receiver: &mut T, len: usize) assert_eq!(send_data, recv_data); } -async fn test, T: TransportSocket>(transport: T) { +async fn test, T: TransportSocket>(transport: T) { let mut server = transport.bind(A::make_address()).await.unwrap(); let peer_fut = transport.connect(server.local_address().unwrap()); diff --git a/p2p/src/net/mock/transport/impls/tcp.rs b/p2p/src/net/mock/transport/impls/tcp.rs index d6eb82c5c5..1816dc0f69 100644 --- a/p2p/src/net/mock/transport/impls/tcp.rs +++ b/p2p/src/net/mock/transport/impls/tcp.rs @@ -98,7 +98,7 @@ impl PeerStream for TcpTransportStream {} #[cfg(test)] mod tests { - use crate::testing_utils::{TestTransport, TestTransportTcp}; + use crate::testing_utils::{TestTransportMaker, TestTransportTcp}; use super::*; use crate::net::{ diff --git a/p2p/src/peer_manager/tests/ban.rs b/p2p/src/peer_manager/tests/ban.rs index fe2ce6e9a7..a7423b7611 100644 --- a/p2p/src/peer_manager/tests/ban.rs +++ b/p2p/src/peer_manager/tests/ban.rs @@ -16,7 +16,8 @@ use std::sync::Arc; use crate::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportLibp2p, TestTransportMaker, TestTransportNoise, + TestTransportTcp, }; use common::{chain::config, primitives::semver::SemVer}; @@ -40,7 +41,7 @@ use crate::{ // ban peer whose connected to us async fn ban_connected_peer() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -95,7 +96,7 @@ async fn ban_connected_peer_mock_noise() { async fn banned_peer_attempts_to_connect() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + std::fmt::Debug + 'static, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -166,7 +167,7 @@ async fn banned_peer_attempts_to_connect_mock_noise() { // attempt to connect to banned peer async fn connect_to_banned_peer() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -241,7 +242,7 @@ async fn connect_to_banned_peer_mock_noise() { async fn validate_invalid_outbound_connection(peer_address: S::Address, peer_id: S::PeerId) where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + std::fmt::Debug, S::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -353,7 +354,7 @@ async fn validate_invalid_outbound_connection_mock_noise() { async fn validate_invalid_inbound_connection(peer_address: S::Address, peer_id: S::PeerId) where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + 'static + std::fmt::Debug, S::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -464,7 +465,7 @@ async fn validate_invalid_inbound_connection_mock_noise() { async fn inbound_connection_invalid_magic() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, diff --git a/p2p/src/peer_manager/tests/connections.rs b/p2p/src/peer_manager/tests/connections.rs index ea8451bc93..f8e1c00259 100644 --- a/p2p/src/peer_manager/tests/connections.rs +++ b/p2p/src/peer_manager/tests/connections.rs @@ -19,7 +19,8 @@ use libp2p::{Multiaddr, PeerId}; use tokio::{sync::oneshot, time::timeout}; use crate::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportLibp2p, TestTransportMaker, TestTransportNoise, + TestTransportTcp, }; use common::{chain::config, primitives::semver::SemVer}; @@ -95,7 +96,7 @@ async fn test_peer_manager_connect_libp2p() { // is below the desired threshold and there are idle peers in the peerdb async fn test_auto_connect() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -154,7 +155,7 @@ async fn test_auto_connect_mock_noise() { async fn connect_outbound_same_network() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -248,7 +249,7 @@ async fn test_validate_supported_protocols() { async fn connect_outbound_different_network() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -298,7 +299,7 @@ async fn connect_outbound_different_network_mock_noise() { async fn connect_inbound_same_network() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -341,7 +342,7 @@ async fn connect_inbound_same_network_mock_noise() { async fn connect_inbound_different_network() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -401,7 +402,7 @@ async fn connect_inbound_different_network_mock_noise() { async fn remote_closes_connection() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, @@ -463,7 +464,7 @@ async fn remote_closes_connection_mock_noise() { async fn inbound_connection_too_many_peers(peers: Vec>) where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, ::Address: std::str::FromStr, diff --git a/p2p/src/sync/tests/block_response.rs b/p2p/src/sync/tests/block_response.rs index 0ec1815d3e..3260a49d5b 100644 --- a/p2p/src/sync/tests/block_response.rs +++ b/p2p/src/sync/tests/block_response.rs @@ -19,7 +19,8 @@ use libp2p::PeerId; use p2p_test_utils::TestBlockInfo; use crate::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportLibp2p, TestTransportMaker, TestTransportNoise, + TestTransportTcp, }; use chainstate::ChainstateError; use common::{chain::block::consensus_data::PoWData, primitives::Idable}; @@ -44,7 +45,7 @@ use crate::{ // peer doesn't exist async fn peer_doesnt_exist() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -85,7 +86,7 @@ async fn peer_doesnt_exist_mock_noise() { // submit valid block but the peer is in invalid state async fn valid_block() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -139,7 +140,7 @@ async fn valid_block_mock_noise() { // submit valid block async fn valid_block_invalid_state() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -191,7 +192,7 @@ async fn valid_block_invalid_state_mock_noise() { // submit the same block twice async fn valid_block_resubmitted_chainstate() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -264,7 +265,7 @@ async fn valid_block_resubmitted_chainstate_mock_noise() { // block validation fails async fn invalid_block() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, diff --git a/p2p/src/sync/tests/connection.rs b/p2p/src/sync/tests/connection.rs index 5c59a0f018..392e2057eb 100644 --- a/p2p/src/sync/tests/connection.rs +++ b/p2p/src/sync/tests/connection.rs @@ -16,7 +16,8 @@ use libp2p::PeerId; use crate::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportLibp2p, TestTransportMaker, TestTransportNoise, + TestTransportTcp, }; use crate::{ @@ -36,7 +37,7 @@ use crate::{ // handle peer reconnection async fn test_peer_reconnected() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -79,7 +80,7 @@ async fn test_peer_reconnected_mock_noise() { // handle peer disconnection event async fn test_peer_disconnected() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, diff --git a/p2p/src/sync/tests/header_response.rs b/p2p/src/sync/tests/header_response.rs index a10f96907d..00bfc5bb9a 100644 --- a/p2p/src/sync/tests/header_response.rs +++ b/p2p/src/sync/tests/header_response.rs @@ -19,7 +19,8 @@ use crypto::random::{Rng, SliceRandom}; use libp2p::PeerId; use crate::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportLibp2p, TestTransportMaker, TestTransportNoise, + TestTransportTcp, }; use p2p_test_utils::TestBlockInfo; @@ -43,7 +44,7 @@ use crate::{ // response contains more than 2000 headers async fn too_many_headers() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -94,7 +95,7 @@ async fn too_many_headers_mock_noise() { // header response is empty async fn empty_response() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -135,7 +136,7 @@ async fn empty_response_mock_noise() { // valid response with headers in order and the first header attaching to local chain async fn valid_response() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -189,7 +190,7 @@ async fn valid_response_mock_noise() { // the first header doesn't attach to local chain async fn header_doesnt_attach_to_local_chain() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -257,7 +258,7 @@ async fn header_doesnt_attach_to_local_chain_mock_noise() { // valid headers but they are not in order async fn headers_not_in_order() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -312,7 +313,7 @@ async fn headers_not_in_order_mock_noise() { // peer state is incorrect to be sending header responses async fn invalid_state() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, @@ -367,7 +368,7 @@ async fn invalid_state_mock_noise() { // peer doesn't exist async fn peer_doesnt_exist() where - A: TestTransport, + A: TestTransportMaker, P: MakeTestPeerId, T: NetworkingService + 'static, T::ConnectivityHandle: ConnectivityService, diff --git a/p2p/src/sync/tests/request_response.rs b/p2p/src/sync/tests/request_response.rs index 8d89a42627..24795492ae 100644 --- a/p2p/src/sync/tests/request_response.rs +++ b/p2p/src/sync/tests/request_response.rs @@ -20,7 +20,8 @@ use tokio::time::timeout; use chainstate::Locator; use crate::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportLibp2p, TestTransportMaker, TestTransportNoise, + TestTransportTcp, }; use crate::{ event::PeerManagerEvent, @@ -40,7 +41,7 @@ use crate::{ async fn request_response() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + Debug + 'static, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -106,7 +107,7 @@ async fn test_request_response_mock_noise() { async fn multiple_requests_and_responses() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, @@ -203,7 +204,7 @@ async fn multiple_requests_and_responses_mock_noise() { // request be rejected and time out in the sender's end. async fn request_timeout() where - A: TestTransport, + A: TestTransportMaker, T: NetworkingService + 'static + std::fmt::Debug, T::ConnectivityHandle: ConnectivityService, T::SyncingMessagingHandle: SyncingMessagingService, diff --git a/p2p/src/testing_utils.rs b/p2p/src/testing_utils.rs index 1352ddadb2..345e319338 100644 --- a/p2p/src/testing_utils.rs +++ b/p2p/src/testing_utils.rs @@ -16,11 +16,11 @@ use libp2p::Multiaddr; use std::net::SocketAddr; -/// An interface for creating test transports and addresses. +/// An interface for creating transports and addresses used in tests. /// /// This abstraction layer is needed to uniformly create transports and addresses /// in the tests for different mocks transport implementations. -pub trait TestTransport { +pub trait TestTransportMaker { /// A transport type. type Transport; @@ -38,7 +38,7 @@ pub trait TestTransport { pub struct TestTransportLibp2p {} -impl TestTransport for TestTransportLibp2p { +impl TestTransportMaker for TestTransportLibp2p { type Transport = crate::net::libp2p::Libp2pTransport; type Address = Multiaddr; @@ -55,7 +55,7 @@ impl TestTransport for TestTransportLibp2p { pub struct TestTransportTcp {} -impl TestTransport for TestTransportTcp { +impl TestTransportMaker for TestTransportTcp { type Transport = crate::net::mock::transport::TcpTransportSocket; type Address = SocketAddr; @@ -71,7 +71,7 @@ impl TestTransport for TestTransportTcp { pub struct TestTransportChannel {} -impl TestTransport for TestTransportChannel { +impl TestTransportMaker for TestTransportChannel { type Transport = crate::net::mock::transport::MockChannelTransport; type Address = u64; @@ -87,7 +87,7 @@ impl TestTransport for TestTransportChannel { pub struct TestTransportNoise {} -impl TestTransport for TestTransportNoise { +impl TestTransportMaker for TestTransportNoise { type Transport = crate::net::mock::transport::NoiseTcpTransport; type Address = SocketAddr; diff --git a/p2p/tests/block_announcement.rs b/p2p/tests/block_announcement.rs index 004ad1541a..73a8abc380 100644 --- a/p2p/tests/block_announcement.rs +++ b/p2p/tests/block_announcement.rs @@ -21,7 +21,8 @@ use common::{ }; use p2p::testing_utils::{ - TestTransport, TestTransportChannel, TestTransportLibp2p, TestTransportNoise, TestTransportTcp, + TestTransportChannel, TestTransportLibp2p, TestTransportMaker, TestTransportNoise, + TestTransportTcp, }; use p2p::{ error::{P2pError, PublishError}, @@ -42,7 +43,7 @@ use p2p::{ // don't automatically forward the messages. async fn block_announcement_3_peers() where - A: TestTransport, + A: TestTransportMaker, S: NetworkingService + Debug, S::SyncingMessagingHandle: SyncingMessagingService, S::ConnectivityHandle: ConnectivityService, diff --git a/p2p/tests/libp2p-mdns.rs b/p2p/tests/libp2p-mdns.rs index b1874fc5bd..a59d53c613 100644 --- a/p2p/tests/libp2p-mdns.rs +++ b/p2p/tests/libp2p-mdns.rs @@ -17,7 +17,7 @@ use std::{sync::Arc, time::Duration}; use libp2p::multiaddr::Protocol; -use p2p::testing_utils::{TestTransport, TestTransportLibp2p}; +use p2p::testing_utils::{TestTransportLibp2p, TestTransportMaker}; use p2p::{ config::{MdnsConfig, P2pConfig}, net::{