Skip to content

Commit a77cff4

Browse files
committed
fix integration test using async
1 parent 55630e3 commit a77cff4

File tree

1 file changed

+81
-96
lines changed

1 file changed

+81
-96
lines changed

tests/integration_tests_rust.rs

Lines changed: 81 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -8,65 +8,43 @@
88
mod common;
99

1010
use common::{
11-
do_channel_full_cycle, expect_channel_pending_event, expect_channel_ready_event, expect_event,
12-
expect_payment_received_event, expect_payment_successful_event, generate_blocks_and_wait,
13-
logging::{init_log_logger, validate_log_entry, TestLogWriter},
14-
open_channel, premine_and_distribute_funds, random_config, random_listening_addresses,
15-
setup_bitcoind_and_electrsd, setup_builder, setup_node, setup_two_nodes, wait_for_tx,
16-
TestChainSource, TestSyncStore,
11+
bump_fee_and_broadcast, distribute_funds_unconfirmed, do_channel_full_cycle,
12+
expect_channel_pending_event, expect_channel_ready_event, expect_event,
13+
expect_payment_claimable_event, expect_payment_received_event, expect_payment_successful_event,
14+
expect_splice_pending_event, generate_blocks_and_wait,
15+
logging::{init_log_logger, validate_log_entry, MultiNodeLogger, TestLogWriter},
16+
open_channel, open_channel_push_amt, premine_and_distribute_funds, premine_blocks, prepare_rbf,
17+
random_config, random_listening_addresses, setup_bitcoind_and_electrsd, setup_builder,
18+
setup_node, setup_node_for_async_payments, setup_two_nodes, wait_for_tx, TestChainSource,
19+
TestSyncStore,
1720
};
1821

19-
use ldk_node::config::EsploraSyncConfig;
22+
use ldk_node::config::{AsyncPaymentsRole, EsploraSyncConfig};
2023
use ldk_node::liquidity::{LSPS2ServiceConfig, LSPS4ServiceConfig};
2124
use ldk_node::payment::{
22-
ConfirmationStatus, PaymentDirection, PaymentKind, PaymentStatus, QrPaymentResult,
23-
SendingParameters,
25+
ConfirmationStatus, PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus,
26+
QrPaymentResult,
2427
};
25-
use ldk_node::{Builder, Event, NodeError};
28+
use ldk_node::{Builder, DynStore, Event, NodeError};
2629

2730
use lightning::ln::channelmanager::PaymentId;
2831
use lightning::routing::gossip::{NodeAlias, NodeId};
29-
use lightning::util::persist::KVStore;
32+
use lightning::routing::router::RouteParametersConfig;
3033

3134
use lightning_invoice::{Bolt11InvoiceDescription, Description};
35+
use lightning_types::payment::{PaymentHash, PaymentPreimage};
3236

3337
use bitcoin::address::NetworkUnchecked;
38+
use bitcoin::hashes::sha256::Hash as Sha256Hash;
3439
use bitcoin::hashes::Hash;
35-
use bitcoin::Address;
36-
use bitcoin::Amount;
40+
use bitcoin::{Address, Amount, ScriptBuf};
41+
3742
use log::LevelFilter;
3843

44+
use std::collections::HashSet;
3945
use std::str::FromStr;
4046
use std::sync::Arc;
4147

42-
use bitcoin::address::NetworkUnchecked;
43-
use bitcoin::hashes::sha256::Hash as Sha256Hash;
44-
use bitcoin::hashes::Hash;
45-
use bitcoin::{Address, Amount, ScriptBuf};
46-
use common::logging::{init_log_logger, validate_log_entry, MultiNodeLogger, TestLogWriter};
47-
use common::{
48-
bump_fee_and_broadcast, distribute_funds_unconfirmed, do_channel_full_cycle,
49-
expect_channel_pending_event, expect_channel_ready_event, expect_event,
50-
expect_payment_claimable_event, expect_payment_received_event, expect_payment_successful_event,
51-
expect_splice_pending_event, generate_blocks_and_wait, open_channel, open_channel_push_amt,
52-
premine_and_distribute_funds, premine_blocks, prepare_rbf, random_config,
53-
random_listening_addresses, setup_bitcoind_and_electrsd, setup_builder, setup_node,
54-
setup_node_for_async_payments, setup_two_nodes, wait_for_tx, TestChainSource, TestSyncStore,
55-
};
56-
use ldk_node::config::{AsyncPaymentsRole, EsploraSyncConfig};
57-
use ldk_node::liquidity::LSPS2ServiceConfig;
58-
use ldk_node::payment::{
59-
ConfirmationStatus, PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus,
60-
QrPaymentResult,
61-
};
62-
use ldk_node::{Builder, DynStore, Event, NodeError};
63-
use lightning::ln::channelmanager::PaymentId;
64-
use lightning::routing::gossip::{NodeAlias, NodeId};
65-
use lightning::routing::router::RouteParametersConfig;
66-
use lightning_invoice::{Bolt11InvoiceDescription, Description};
67-
use lightning_types::payment::{PaymentHash, PaymentPreimage};
68-
use log::LevelFilter;
69-
7048
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
7149
async fn channel_full_cycle() {
7250
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
@@ -1934,8 +1912,8 @@ async fn do_lsps2_client_service_integration(client_trusts_lsp: bool) {
19341912
assert_eq!(client_node.payment(&payment_id).unwrap().status, PaymentStatus::Failed);
19351913
}
19361914

1937-
#[test]
1938-
fn lsps4_client_service_integration() {
1915+
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
1916+
async fn lsps4_client_service_integration() {
19391917
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
19401918

19411919
let esplora_url = format!("http://{}", electrsd.esplora_url.as_ref().unwrap());
@@ -1987,15 +1965,16 @@ fn lsps4_client_service_integration() {
19871965
&electrsd.client,
19881966
vec![service_onchain_addr, client_onchain_addr, payer_onchain_addr],
19891967
Amount::from_sat(premine_amount_sat),
1990-
);
1968+
)
1969+
.await;
19911970
service_node.sync_wallets().unwrap();
19921971
client_node.sync_wallets().unwrap();
19931972
payer_node.sync_wallets().unwrap();
19941973

19951974
// Open a channel payer -> service so the payer can reach the client through the LSP.
1996-
open_channel(&payer_node, &service_node, 5_000_000, false, &electrsd);
1975+
open_channel(&payer_node, &service_node, 5_000_000, false, &electrsd).await;
19971976

1998-
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
1977+
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6).await;
19991978
service_node.sync_wallets().unwrap();
20001979
payer_node.sync_wallets().unwrap();
20011980
expect_channel_ready_event!(payer_node, service_node.node_id());
@@ -2088,8 +2067,8 @@ fn lsps4_client_service_integration() {
20882067
assert_eq!(client_channels[0].channel_value_sats, expected_channel_size_sat);
20892068
}
20902069

2091-
#[test]
2092-
fn lsps4_channel_size_tiers_are_applied() {
2070+
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
2071+
async fn lsps4_channel_size_tiers_are_applied() {
20932072
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
20942073
let esplora_url = format!("http://{}", electrsd.esplora_url.as_ref().unwrap());
20952074
let sync_config = EsploraSyncConfig { background_sync_config: None };
@@ -2135,13 +2114,14 @@ fn lsps4_channel_size_tiers_are_applied() {
21352114
&electrsd.client,
21362115
vec![service_onchain_addr, client_onchain_addr, payer_onchain_addr],
21372116
Amount::from_sat(premine_amount_sat),
2138-
);
2117+
)
2118+
.await;
21392119
service_node.sync_wallets().unwrap();
21402120
client_node.sync_wallets().unwrap();
21412121
payer_node.sync_wallets().unwrap();
21422122

2143-
open_channel(&payer_node, &service_node, 5_000_000, false, &electrsd);
2144-
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
2123+
open_channel(&payer_node, &service_node, 5_000_000, false, &electrsd).await;
2124+
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6).await;
21452125
service_node.sync_wallets().unwrap();
21462126
payer_node.sync_wallets().unwrap();
21472127
expect_channel_ready_event!(payer_node, service_node.node_id());
@@ -2165,59 +2145,64 @@ fn lsps4_channel_size_tiers_are_applied() {
21652145
};
21662146

21672147
let mut expected_channel_values = Vec::new();
2168-
let mut pay_lsps4_invoice = |amount_sat: u64, expected_new_channel_value_sat: Option<u64>| {
2169-
let amount_msat = amount_sat * 1000;
2170-
let invoice_description = Bolt11InvoiceDescription::Direct(
2171-
Description::new(format!("lsps4 tier test {}", amount_sat)).unwrap(),
2172-
);
2173-
let invoice = client_node
2174-
.bolt11_payment()
2175-
.receive_via_lsps4_jit_channel(Some(amount_msat), &invoice_description, 1024)
2176-
.unwrap();
2177-
let payment_id = payer_node.bolt11_payment().send(&invoice, None).unwrap();
2178-
2179-
if expected_new_channel_value_sat.is_some() {
2180-
expect_channel_pending_event!(service_node, client_node.node_id());
2181-
expect_channel_ready_event!(service_node, client_node.node_id());
2182-
expect_channel_pending_event!(client_node, service_node.node_id());
2183-
expect_channel_ready_event!(client_node, service_node.node_id());
2184-
}
21852148

2186-
expect_service_forward(amount_msat);
2187-
expect_payment_successful_event!(payer_node, Some(payment_id), None);
2188-
let client_payment_id = expect_payment_received_event!(client_node, amount_msat).unwrap();
2189-
let payment = client_node.payment(&client_payment_id).unwrap();
2190-
assert!(matches!(payment.kind, PaymentKind::Bolt11Jit { .. }));
2191-
assert_eq!(payment.amount_msat, Some(amount_msat));
2192-
assert_eq!(payment.status, PaymentStatus::Succeeded);
2149+
macro_rules! pay_lsps4_invoice {
2150+
($amount_sat:expr, $expected_new_channel_value_sat:expr) => {{
2151+
let amount_sat = $amount_sat;
2152+
let expected_new_channel_value_sat = $expected_new_channel_value_sat;
2153+
let amount_msat = amount_sat * 1000;
2154+
let invoice_description = Bolt11InvoiceDescription::Direct(
2155+
Description::new(format!("lsps4 tier test {}", amount_sat)).unwrap(),
2156+
);
2157+
let invoice = client_node
2158+
.bolt11_payment()
2159+
.receive_via_lsps4_jit_channel(Some(amount_msat), &invoice_description, 1024)
2160+
.unwrap();
2161+
let payment_id = payer_node.bolt11_payment().send(&invoice, None).unwrap();
2162+
2163+
if expected_new_channel_value_sat.is_some() {
2164+
expect_channel_pending_event!(service_node, client_node.node_id());
2165+
expect_channel_ready_event!(service_node, client_node.node_id());
2166+
expect_channel_pending_event!(client_node, service_node.node_id());
2167+
expect_channel_ready_event!(client_node, service_node.node_id());
2168+
}
2169+
2170+
expect_service_forward(amount_msat);
2171+
expect_payment_successful_event!(payer_node, Some(payment_id), None);
2172+
let client_payment_id = expect_payment_received_event!(client_node, amount_msat).unwrap();
2173+
let payment = client_node.payment(&client_payment_id).unwrap();
2174+
assert!(matches!(payment.kind, PaymentKind::Bolt11Jit { .. }));
2175+
assert_eq!(payment.amount_msat, Some(amount_msat));
2176+
assert_eq!(payment.status, PaymentStatus::Succeeded);
21932177

2194-
if let Some(channel_value_sat) = expected_new_channel_value_sat {
2195-
expected_channel_values.push(channel_value_sat);
2196-
}
2178+
if let Some(channel_value_sat) = expected_new_channel_value_sat {
2179+
expected_channel_values.push(channel_value_sat);
2180+
}
21972181

2198-
let mut actual_channel_values: Vec<u64> = client_node
2199-
.list_channels()
2200-
.into_iter()
2201-
.filter(|chan| chan.counterparty_node_id == service_node.node_id())
2202-
.map(|chan| chan.channel_value_sats)
2203-
.collect();
2204-
actual_channel_values.sort_unstable();
2205-
let mut expected_sorted = expected_channel_values.clone();
2206-
expected_sorted.sort_unstable();
2207-
assert_eq!(actual_channel_values, expected_sorted);
2208-
};
2182+
let mut actual_channel_values: Vec<u64> = client_node
2183+
.list_channels()
2184+
.into_iter()
2185+
.filter(|chan| chan.counterparty_node_id == service_node.node_id())
2186+
.map(|chan| chan.channel_value_sats)
2187+
.collect();
2188+
actual_channel_values.sort_unstable();
2189+
let mut expected_sorted = expected_channel_values.clone();
2190+
expected_sorted.sort_unstable();
2191+
assert_eq!(actual_channel_values, expected_sorted);
2192+
}};
2193+
}
22092194

2210-
pay_lsps4_invoice(50_000, Some(100_000));
2211-
pay_lsps4_invoice(100_000, Some(500_000));
2195+
pay_lsps4_invoice!(50_000, Some(100_000));
2196+
pay_lsps4_invoice!(100_000, Some(500_000));
22122197

22132198
for _ in 0..5 {
2214-
pay_lsps4_invoice(20_000, None);
2199+
pay_lsps4_invoice!(20_000, None);
22152200
}
22162201

2217-
pay_lsps4_invoice(400_000, Some(1_000_000));
2218-
pay_lsps4_invoice(100_000, None);
2219-
pay_lsps4_invoice(700_000, Some(1_000_000));
2220-
pay_lsps4_invoice(900_000, Some(1_000_000));
2202+
pay_lsps4_invoice!(400_000, Some(1_000_000));
2203+
pay_lsps4_invoice!(100_000, None);
2204+
pay_lsps4_invoice!(700_000, Some(1_000_000));
2205+
pay_lsps4_invoice!(900_000, Some(1_000_000));
22212206

22222207
assert_eq!(expected_channel_values, vec![100_000, 500_000, 1_000_000, 1_000_000, 1_000_000]);
22232208
}

0 commit comments

Comments
 (0)