Skip to content

Commit 026dc9b

Browse files
committed
test: add concurrent load testing for channel opening
1 parent 8189d94 commit 026dc9b

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed

src/test/concurrent_openchannel.rs

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
use super::*;
2+
3+
const TEST_DIR_BASE: &str = "tmp/concurrent_openchannel/";
4+
5+
#[serial_test::serial]
6+
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
7+
#[traced_test]
8+
async fn concurrent_openchannel() {
9+
initialize();
10+
11+
const CHANNEL_CAPACITY_SAT: u64 = 100000;
12+
const PUSH_MSAT: u64 = 20000;
13+
const ASSET_AMOUNT: u64 = 100;
14+
15+
let maker_peer_port = NODE1_PEER_PORT;
16+
let taker1_peer_port = NODE2_PEER_PORT;
17+
let taker2_peer_port = NODE3_PEER_PORT;
18+
let taker3_peer_port = NODE4_PEER_PORT;
19+
let taker4_peer_port = NODE5_PEER_PORT;
20+
let taker5_peer_port = NODE6_PEER_PORT;
21+
22+
let test_dir_maker = format!("{TEST_DIR_BASE}maker");
23+
let test_dir_taker1 = format!("{TEST_DIR_BASE}taker1");
24+
let test_dir_taker2 = format!("{TEST_DIR_BASE}taker2");
25+
let test_dir_taker3 = format!("{TEST_DIR_BASE}taker3");
26+
let test_dir_taker4 = format!("{TEST_DIR_BASE}taker4");
27+
let test_dir_taker5 = format!("{TEST_DIR_BASE}taker5");
28+
29+
let (maker_addr, _) = start_node(&test_dir_maker, maker_peer_port, false).await;
30+
let (taker1_addr, _) = start_node(&test_dir_taker1, taker1_peer_port, false).await;
31+
let (taker2_addr, _) = start_node(&test_dir_taker2, taker2_peer_port, false).await;
32+
let (taker3_addr, _) = start_node(&test_dir_taker3, taker3_peer_port, false).await;
33+
let (taker4_addr, _) = start_node(&test_dir_taker4, taker4_peer_port, false).await;
34+
let (taker5_addr, _) = start_node(&test_dir_taker5, taker5_peer_port, false).await;
35+
36+
fund_and_create_utxos(maker_addr, None).await;
37+
create_utxos(maker_addr, false, Some(5), Some(110000)).await;
38+
fund_and_create_utxos(taker1_addr, None).await;
39+
fund_and_create_utxos(taker2_addr, None).await;
40+
fund_and_create_utxos(taker3_addr, None).await;
41+
fund_and_create_utxos(taker4_addr, None).await;
42+
fund_and_create_utxos(taker5_addr, None).await;
43+
44+
let asset_id = issue_asset_nia(maker_addr).await.asset_id;
45+
46+
let _maker_pubkey = node_info(maker_addr).await.pubkey;
47+
let taker1_pubkey = node_info(taker1_addr).await.pubkey;
48+
let taker2_pubkey = node_info(taker2_addr).await.pubkey;
49+
let taker3_pubkey = node_info(taker3_addr).await.pubkey;
50+
let taker4_pubkey = node_info(taker4_addr).await.pubkey;
51+
let taker5_pubkey = node_info(taker5_addr).await.pubkey;
52+
53+
let (_channel_mt_1, _channel_mt_2, _channel_mt_3, _channel_mt_4, _channel_mt_5) = tokio::join!(
54+
open_channel(
55+
maker_addr,
56+
&taker1_pubkey,
57+
Some(taker1_peer_port),
58+
Some(CHANNEL_CAPACITY_SAT),
59+
Some(PUSH_MSAT),
60+
Some(ASSET_AMOUNT),
61+
Some(&asset_id),
62+
),
63+
open_channel(
64+
maker_addr,
65+
&taker2_pubkey,
66+
Some(taker2_peer_port),
67+
Some(CHANNEL_CAPACITY_SAT),
68+
Some(PUSH_MSAT),
69+
Some(ASSET_AMOUNT),
70+
Some(&asset_id),
71+
),
72+
open_channel(
73+
maker_addr,
74+
&taker3_pubkey,
75+
Some(taker3_peer_port),
76+
Some(CHANNEL_CAPACITY_SAT),
77+
Some(PUSH_MSAT),
78+
Some(ASSET_AMOUNT),
79+
Some(&asset_id),
80+
),
81+
open_channel(
82+
maker_addr,
83+
&taker4_pubkey,
84+
Some(taker4_peer_port),
85+
Some(CHANNEL_CAPACITY_SAT),
86+
Some(PUSH_MSAT),
87+
Some(ASSET_AMOUNT),
88+
Some(&asset_id),
89+
),
90+
open_channel(
91+
maker_addr,
92+
&taker5_pubkey,
93+
Some(taker5_peer_port),
94+
Some(CHANNEL_CAPACITY_SAT),
95+
Some(PUSH_MSAT),
96+
Some(ASSET_AMOUNT),
97+
Some(&asset_id),
98+
)
99+
);
100+
101+
let maker_usable_channels = node_info(maker_addr).await.num_usable_channels;
102+
assert_eq!(maker_usable_channels, 5);
103+
}

src/test/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ const NODE1_PEER_PORT: u16 = 9801;
4949
const NODE2_PEER_PORT: u16 = 9802;
5050
const NODE3_PEER_PORT: u16 = 9803;
5151
const NODE4_PEER_PORT: u16 = 9804;
52+
const NODE5_PEER_PORT: u16 = 9805;
53+
const NODE6_PEER_PORT: u16 = 9806;
5254

5355
static INIT: Once = Once::new();
5456

@@ -1709,6 +1711,7 @@ mod close_force_nobtc_acceptor;
17091711
mod close_force_other_side;
17101712
mod close_force_standard;
17111713
mod concurrent_btc_payments;
1714+
mod concurrent_openchannel;
17121715
mod fail_transfers;
17131716
mod getchannelid;
17141717
mod htlc_amount_checks;

0 commit comments

Comments
 (0)