Skip to content

Commit 643aeb6

Browse files
Merge pull request #585 from mintlayer/transport_init_updates
Transport initialization updates
2 parents a78e3cf + 334be7d commit 643aeb6

49 files changed

Lines changed: 990 additions & 588 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node/src/runner.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub async fn initialize(
7373
// P2P subsystem
7474
let p2p = manager.add_subsystem(
7575
"p2p",
76-
p2p::make_p2p::<p2p::net::libp2p::Libp2pService>(
76+
p2p::make_p2p(
7777
Arc::clone(&chain_config),
7878
Arc::new(node_config.p2p.into()),
7979
chainstate.clone(),

p2p/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ version = "0.1.0"
44
edition = "2021"
55
license = "MIT"
66

7+
[features]
8+
default = []
9+
testing_utils = []
10+
711
[dependencies]
812
common = { path = "../common/" }
913
crypto = { path = "../crypto/" }

p2p/backend-test-suite/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ license = "MIT"
66

77
[dependencies]
88
common = { path = "../../common" }
9-
p2p = { path = "../../p2p" }
9+
p2p = { path = "../../p2p", features = ["testing_utils"] }
1010
p2p-test-utils = { path = "../p2p-test-utils" }
1111
logging = { path = "../../logging" }
1212
serialization = { path = "../../serialization" }

p2p/backend-test-suite/src/ban.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use std::{fmt::Debug, sync::Arc};
1717

1818
use tokio::sync::mpsc;
1919

20+
use p2p::testing_utils::TestTransportMaker;
2021
use p2p::{
2122
config::P2pConfig,
2223
error::{P2pError, PublishError},
@@ -28,7 +29,7 @@ use p2p::{
2829
peer_manager::helpers::connect_services,
2930
sync::BlockSyncManager,
3031
};
31-
use p2p_test_utils::{MakeTestAddress, TestBlockInfo};
32+
use p2p_test_utils::TestBlockInfo;
3233

3334
tests![invalid_pubsub_block, invalid_sync_block,];
3435

@@ -37,7 +38,7 @@ tests![invalid_pubsub_block, invalid_sync_block,];
3738
// receives a `AdjustPeerScore` event which bans the peer of the second service.
3839
async fn invalid_pubsub_block<A, S>()
3940
where
40-
A: MakeTestAddress<Address = S::Address>,
41+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
4142
S: NetworkingService + Debug + 'static,
4243
S::ConnectivityHandle: ConnectivityService<S>,
4344
S::SyncingMessagingHandle: SyncingMessagingService<S>,
@@ -49,6 +50,7 @@ where
4950
let handle = p2p_test_utils::start_chainstate(Arc::clone(&chain_config)).await;
5051

5152
let (mut conn1, sync1) = S::start(
53+
A::make_transport(),
5254
A::make_address(),
5355
Arc::clone(&chain_config),
5456
Default::default(),
@@ -66,6 +68,7 @@ where
6668
);
6769

6870
let (mut conn2, mut sync2) = S::start(
71+
A::make_transport(),
6972
A::make_address(),
7073
Arc::clone(&chain_config),
7174
Arc::clone(&p2p_config),
@@ -131,7 +134,7 @@ where
131134
// Start two networking services and give an invalid block, verify that `PeerManager` is informed.
132135
async fn invalid_sync_block<A, S>()
133136
where
134-
A: MakeTestAddress<Address = S::Address>,
137+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
135138
S: NetworkingService + Debug + 'static,
136139
S::ConnectivityHandle: ConnectivityService<S>,
137140
S::SyncingMessagingHandle: SyncingMessagingService<S>,
@@ -142,6 +145,7 @@ where
142145
let handle = p2p_test_utils::start_chainstate(Arc::clone(&chain_config)).await;
143146

144147
let (mut conn1, sync1) = S::start(
148+
A::make_transport(),
145149
A::make_address(),
146150
Arc::clone(&chain_config),
147151
Default::default(),
@@ -150,6 +154,7 @@ where
150154
.unwrap();
151155

152156
let (mut conn2, _sync2) = S::start(
157+
A::make_transport(),
153158
A::make_address(),
154159
Arc::clone(&chain_config),
155160
Default::default(),

p2p/backend-test-suite/src/block_announcement.rs

Lines changed: 53 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ use common::{
3232
};
3333
use serialization::Encode;
3434

35+
use p2p::testing_utils::TestTransportMaker;
3536
use p2p::{
3637
error::{P2pError, PublishError},
3738
message::Announcement,
@@ -42,7 +43,6 @@ use p2p::{
4243
},
4344
peer_manager::helpers::connect_services,
4445
};
45-
use p2p_test_utils::MakeTestAddress;
4646

4747
tests![
4848
block_announcement,
@@ -52,20 +52,28 @@ tests![
5252

5353
async fn block_announcement<A, S>()
5454
where
55-
A: MakeTestAddress<Address = S::Address>,
55+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
5656
S: NetworkingService + Debug,
5757
S::SyncingMessagingHandle: SyncingMessagingService<S>,
5858
S::ConnectivityHandle: ConnectivityService<S>,
5959
{
6060
let config = Arc::new(common::chain::config::create_mainnet());
61-
let (mut conn1, mut sync1) =
62-
S::start(A::make_address(), Arc::clone(&config), Default::default())
63-
.await
64-
.unwrap();
65-
let (mut conn2, mut sync2) =
66-
S::start(A::make_address(), Arc::clone(&config), Default::default())
67-
.await
68-
.unwrap();
61+
let (mut conn1, mut sync1) = S::start(
62+
A::make_transport(),
63+
A::make_address(),
64+
Arc::clone(&config),
65+
Default::default(),
66+
)
67+
.await
68+
.unwrap();
69+
let (mut conn2, mut sync2) = S::start(
70+
A::make_transport(),
71+
A::make_address(),
72+
Arc::clone(&config),
73+
Default::default(),
74+
)
75+
.await
76+
.unwrap();
6977

7078
connect_services::<S>(&mut conn1, &mut conn2).await;
7179

@@ -130,19 +138,28 @@ where
130138

131139
async fn block_announcement_no_subscription<A, S>()
132140
where
133-
A: MakeTestAddress<Address = S::Address>,
141+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
134142
S: NetworkingService + Debug,
135143
S::SyncingMessagingHandle: SyncingMessagingService<S>,
136144
S::ConnectivityHandle: ConnectivityService<S>,
137145
{
138146
let config = Arc::new(common::chain::config::create_mainnet());
139-
let (mut conn1, mut sync1) =
140-
S::start(A::make_address(), Arc::clone(&config), Default::default())
141-
.await
142-
.unwrap();
143-
let (mut conn2, _sync2) = S::start(A::make_address(), Arc::clone(&config), Default::default())
144-
.await
145-
.unwrap();
147+
let (mut conn1, mut sync1) = S::start(
148+
A::make_transport(),
149+
A::make_address(),
150+
Arc::clone(&config),
151+
Default::default(),
152+
)
153+
.await
154+
.unwrap();
155+
let (mut conn2, _sync2) = S::start(
156+
A::make_transport(),
157+
A::make_address(),
158+
Arc::clone(&config),
159+
Default::default(),
160+
)
161+
.await
162+
.unwrap();
146163

147164
connect_services::<S>(&mut conn1, &mut conn2).await;
148165

@@ -169,21 +186,29 @@ where
169186

170187
async fn block_announcement_too_big_message<A, S>()
171188
where
172-
A: MakeTestAddress<Address = S::Address>,
189+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
173190
S: NetworkingService + Debug,
174191
S::SyncingMessagingHandle: SyncingMessagingService<S>,
175192
S::ConnectivityHandle: ConnectivityService<S>,
176193
{
177194
let config = Arc::new(common::chain::config::create_mainnet());
178-
let (mut conn1, mut sync1) =
179-
S::start(A::make_address(), Arc::clone(&config), Default::default())
180-
.await
181-
.unwrap();
182-
183-
let (mut conn2, mut sync2) =
184-
S::start(A::make_address(), Arc::clone(&config), Default::default())
185-
.await
186-
.unwrap();
195+
let (mut conn1, mut sync1) = S::start(
196+
A::make_transport(),
197+
A::make_address(),
198+
Arc::clone(&config),
199+
Default::default(),
200+
)
201+
.await
202+
.unwrap();
203+
204+
let (mut conn2, mut sync2) = S::start(
205+
A::make_transport(),
206+
A::make_address(),
207+
Arc::clone(&config),
208+
Default::default(),
209+
)
210+
.await
211+
.unwrap();
187212

188213
connect_services::<S>(&mut conn1, &mut conn2).await;
189214

p2p/backend-test-suite/src/connect.rs

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
1818
use std::{fmt::Debug, sync::Arc};
1919

20+
use p2p::testing_utils::TestTransportMaker;
2021
use p2p::{
2122
error::{DialError, P2pError},
2223
net::{ConnectivityService, NetworkingService, SyncingMessagingService},
2324
};
24-
use p2p_test_utils::MakeTestAddress;
2525

2626
tests![
2727
connect,
@@ -32,33 +32,44 @@ tests![
3232

3333
async fn connect<A, S>()
3434
where
35-
A: MakeTestAddress<Address = S::Address>,
35+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
3636
S: NetworkingService + Debug + 'static,
3737
S::ConnectivityHandle: ConnectivityService<S>,
3838
S::SyncingMessagingHandle: SyncingMessagingService<S>,
3939
{
4040
let config = Arc::new(common::chain::config::create_mainnet());
41-
S::start(A::make_address(), config, Default::default()).await.unwrap();
41+
S::start(
42+
A::make_transport(),
43+
A::make_address(),
44+
config,
45+
Default::default(),
46+
)
47+
.await
48+
.unwrap();
4249
}
4350

4451
// Check that connecting twice to the same address isn't possible.
4552
// TODO: Investigate why this test fails on Windows.
4653
#[cfg(not(target_os = "windows"))]
4754
async fn connect_address_in_use<A, S>()
4855
where
49-
A: MakeTestAddress<Address = S::Address>,
56+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
5057
S: NetworkingService + Debug + 'static,
5158
S::ConnectivityHandle: ConnectivityService<S> + Debug,
5259
S::SyncingMessagingHandle: SyncingMessagingService<S> + Debug,
5360
{
5461
let config = Arc::new(common::chain::config::create_mainnet());
55-
let (connectivity, _sync) =
56-
S::start(A::make_address(), Arc::clone(&config), Default::default())
57-
.await
58-
.unwrap();
62+
let (connectivity, _sync) = S::start(
63+
A::make_transport(),
64+
A::make_address(),
65+
Arc::clone(&config),
66+
Default::default(),
67+
)
68+
.await
69+
.unwrap();
5970

6071
let address = connectivity.local_addr().await.unwrap().unwrap();
61-
let res = S::start(address, config, Default::default())
72+
let res = S::start(A::make_transport(), address, config, Default::default())
6273
.await
6374
.expect_err("address is not in use");
6475
assert_eq!(
@@ -71,18 +82,28 @@ where
7182
// trying to connect to `service1`.
7283
async fn connect_accept<A, S>()
7384
where
74-
A: MakeTestAddress<Address = S::Address>,
85+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
7586
S: NetworkingService + std::fmt::Debug + 'static,
7687
S::ConnectivityHandle: ConnectivityService<S>,
7788
S::SyncingMessagingHandle: SyncingMessagingService<S>,
7889
{
7990
let config = Arc::new(common::chain::config::create_mainnet());
80-
let (mut service1, _) = S::start(A::make_address(), Arc::clone(&config), Default::default())
81-
.await
82-
.unwrap();
83-
let (mut service2, _) = S::start(A::make_address(), Arc::clone(&config), Default::default())
84-
.await
85-
.unwrap();
91+
let (mut service1, _) = S::start(
92+
A::make_transport(),
93+
A::make_address(),
94+
Arc::clone(&config),
95+
Default::default(),
96+
)
97+
.await
98+
.unwrap();
99+
let (mut service2, _) = S::start(
100+
A::make_transport(),
101+
A::make_address(),
102+
Arc::clone(&config),
103+
Default::default(),
104+
)
105+
.await
106+
.unwrap();
86107

87108
let conn_addr = service1.local_addr().await.unwrap().unwrap();
88109
let (res1, res2) = tokio::join!(service1.poll_next(), service2.connect(conn_addr));

p2p/backend-test-suite/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ use std::fmt::Debug;
2929
use libtest_mimic::{Arguments, Trial};
3030

3131
use p2p::net::{ConnectivityService, NetworkingService, SyncingMessagingService};
32-
use p2p_test_utils::MakeTestAddress;
32+
use p2p::testing_utils::TestTransportMaker;
3333

3434
/// Runs all tests.
3535
pub fn run<A, S>()
3636
where
37-
A: MakeTestAddress<Address = S::Address>,
37+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
3838
S: NetworkingService + Debug + 'static,
3939
S::ConnectivityHandle: ConnectivityService<S> + Debug,
4040
S::SyncingMessagingHandle: SyncingMessagingService<S> + Debug,
@@ -47,7 +47,7 @@ where
4747
/// Collects all backend agnostic tests.
4848
fn tests<A, S>() -> Vec<Trial>
4949
where
50-
A: MakeTestAddress<Address = S::Address>,
50+
A: TestTransportMaker<Transport = S::Transport, Address = S::Address>,
5151
S: NetworkingService + Debug + 'static,
5252
S::ConnectivityHandle: ConnectivityService<S> + Debug,
5353
S::SyncingMessagingHandle: SyncingMessagingService<S> + Debug,

0 commit comments

Comments
 (0)