Skip to content

Commit 0a65272

Browse files
committed
Add ChainSource support to tests
1 parent e268b80 commit 0a65272

File tree

2 files changed

+64
-24
lines changed

2 files changed

+64
-24
lines changed

tests/common/mod.rs

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,12 @@ type TestNode = Arc<Node>;
241241
#[cfg(not(feature = "uniffi"))]
242242
type TestNode = Node;
243243

244+
#[derive(Clone)]
245+
pub(crate) enum TestChainSource<'a> {
246+
Esplora(&'a ElectrsD),
247+
BitcoindRpc(&'a BitcoinD),
248+
}
249+
244250
macro_rules! setup_builder {
245251
($builder: ident, $config: expr) => {
246252
#[cfg(feature = "uniffi")]
@@ -253,11 +259,12 @@ macro_rules! setup_builder {
253259
pub(crate) use setup_builder;
254260

255261
pub(crate) fn setup_two_nodes(
256-
electrsd: &ElectrsD, allow_0conf: bool, anchor_channels: bool, anchors_trusted_no_reserve: bool,
262+
chain_source: &TestChainSource, allow_0conf: bool, anchor_channels: bool,
263+
anchors_trusted_no_reserve: bool,
257264
) -> (TestNode, TestNode) {
258265
println!("== Node A ==");
259266
let config_a = random_config(anchor_channels);
260-
let node_a = setup_node(electrsd, config_a);
267+
let node_a = setup_node(chain_source, config_a);
261268

262269
println!("\n== Node B ==");
263270
let mut config_b = random_config(anchor_channels);
@@ -272,17 +279,29 @@ pub(crate) fn setup_two_nodes(
272279
.trusted_peers_no_reserve
273280
.push(node_a.node_id());
274281
}
275-
let node_b = setup_node(electrsd, config_b);
282+
let node_b = setup_node(chain_source, config_b);
276283
(node_a, node_b)
277284
}
278285

279-
pub(crate) fn setup_node(electrsd: &ElectrsD, config: Config) -> TestNode {
280-
let esplora_url = format!("http://{}", electrsd.esplora_url.as_ref().unwrap());
281-
let mut sync_config = EsploraSyncConfig::default();
282-
sync_config.onchain_wallet_sync_interval_secs = 100000;
283-
sync_config.lightning_wallet_sync_interval_secs = 100000;
286+
pub(crate) fn setup_node(chain_source: &TestChainSource, config: Config) -> TestNode {
284287
setup_builder!(builder, config);
285-
builder.set_chain_source_esplora(esplora_url.clone(), Some(sync_config));
288+
match chain_source {
289+
TestChainSource::Esplora(electrsd) => {
290+
let esplora_url = format!("http://{}", electrsd.esplora_url.as_ref().unwrap());
291+
let mut sync_config = EsploraSyncConfig::default();
292+
sync_config.onchain_wallet_sync_interval_secs = 100000;
293+
sync_config.lightning_wallet_sync_interval_secs = 100000;
294+
builder.set_chain_source_esplora(esplora_url.clone(), Some(sync_config));
295+
},
296+
TestChainSource::BitcoindRpc(bitcoind) => {
297+
let rpc_host = bitcoind.params.rpc_socket.ip().to_string();
298+
let rpc_port = bitcoind.params.rpc_socket.port();
299+
let values = bitcoind.params.get_cookie_values().unwrap().unwrap();
300+
let rpc_user = values.user;
301+
let rpc_password = values.password;
302+
builder.set_chain_source_bitcoind_rpc(rpc_host, rpc_port, rpc_user, rpc_password);
303+
},
304+
}
286305
let test_sync_store = Arc::new(TestSyncStore::new(config.storage_dir_path.into()));
287306
let node = builder.build_with_store(test_sync_store).unwrap();
288307
node.start().unwrap();

tests/integration_tests_rust.rs

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use common::{
1111
do_channel_full_cycle, expect_channel_ready_event, expect_event, expect_payment_received_event,
1212
expect_payment_successful_event, generate_blocks_and_wait, open_channel,
1313
premine_and_distribute_funds, random_config, setup_bitcoind_and_electrsd, setup_builder,
14-
setup_node, setup_two_nodes, wait_for_tx, TestSyncStore,
14+
setup_node, setup_two_nodes, wait_for_tx, TestChainSource, TestSyncStore,
1515
};
1616

1717
use ldk_node::config::EsploraSyncConfig;
@@ -21,49 +21,63 @@ use ldk_node::{Builder, Event, NodeError};
2121
use lightning::ln::channelmanager::PaymentId;
2222
use lightning::util::persist::KVStore;
2323

24-
use bitcoin::{Amount, Network};
24+
use bitcoin::Amount;
2525

2626
use std::sync::Arc;
2727

2828
#[test]
2929
fn channel_full_cycle() {
3030
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
31-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
31+
let chain_source = TestChainSource::Esplora(&electrsd);
32+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
33+
do_channel_full_cycle(node_a, node_b, &bitcoind.client, &electrsd.client, false, true, false);
34+
}
35+
36+
#[test]
37+
fn channel_full_cycle_bitcoind() {
38+
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
39+
let chain_source = TestChainSource::BitcoindRpc(&bitcoind);
40+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
3241
do_channel_full_cycle(node_a, node_b, &bitcoind.client, &electrsd.client, false, true, false);
3342
}
3443

3544
#[test]
3645
fn channel_full_cycle_force_close() {
3746
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
38-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
47+
let chain_source = TestChainSource::Esplora(&electrsd);
48+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
3949
do_channel_full_cycle(node_a, node_b, &bitcoind.client, &electrsd.client, false, true, true);
4050
}
4151

4252
#[test]
4353
fn channel_full_cycle_force_close_trusted_no_reserve() {
4454
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
45-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, true);
55+
let chain_source = TestChainSource::Esplora(&electrsd);
56+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, true);
4657
do_channel_full_cycle(node_a, node_b, &bitcoind.client, &electrsd.client, false, true, true);
4758
}
4859

4960
#[test]
5061
fn channel_full_cycle_0conf() {
5162
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
52-
let (node_a, node_b) = setup_two_nodes(&electrsd, true, true, false);
63+
let chain_source = TestChainSource::Esplora(&electrsd);
64+
let (node_a, node_b) = setup_two_nodes(&chain_source, true, true, false);
5365
do_channel_full_cycle(node_a, node_b, &bitcoind.client, &electrsd.client, true, true, false)
5466
}
5567

5668
#[test]
5769
fn channel_full_cycle_legacy_staticremotekey() {
5870
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
59-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, false, false);
71+
let chain_source = TestChainSource::Esplora(&electrsd);
72+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, false, false);
6073
do_channel_full_cycle(node_a, node_b, &bitcoind.client, &electrsd.client, false, false, false);
6174
}
6275

6376
#[test]
6477
fn channel_open_fails_when_funds_insufficient() {
6578
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
66-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
79+
let chain_source = TestChainSource::Esplora(&electrsd);
80+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
6781

6882
let addr_a = node_a.onchain_payment().new_address().unwrap();
6983
let addr_b = node_b.onchain_payment().new_address().unwrap();
@@ -266,7 +280,8 @@ fn start_stop_reinit() {
266280
#[test]
267281
fn onchain_spend_receive() {
268282
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
269-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
283+
let chain_source = TestChainSource::Esplora(&electrsd);
284+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
270285

271286
let addr_a = node_a.onchain_payment().new_address().unwrap();
272287
let addr_b = node_b.onchain_payment().new_address().unwrap();
@@ -315,7 +330,8 @@ fn onchain_spend_receive() {
315330
fn sign_verify_msg() {
316331
let (_bitcoind, electrsd) = setup_bitcoind_and_electrsd();
317332
let config = random_config(true);
318-
let node = setup_node(&electrsd, config);
333+
let chain_source = TestChainSource::Esplora(&electrsd);
334+
let node = setup_node(&chain_source, config);
319335

320336
// Tests arbitrary message signing and later verification
321337
let msg = "OK computer".as_bytes();
@@ -332,7 +348,8 @@ fn connection_restart_behavior() {
332348

333349
fn do_connection_restart_behavior(persist: bool) {
334350
let (_bitcoind, electrsd) = setup_bitcoind_and_electrsd();
335-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, false, false);
351+
let chain_source = TestChainSource::Esplora(&electrsd);
352+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, false, false);
336353

337354
let node_id_a = node_a.node_id();
338355
let node_id_b = node_b.node_id();
@@ -383,7 +400,8 @@ fn do_connection_restart_behavior(persist: bool) {
383400
#[test]
384401
fn concurrent_connections_succeed() {
385402
let (_bitcoind, electrsd) = setup_bitcoind_and_electrsd();
386-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
403+
let chain_source = TestChainSource::Esplora(&electrsd);
404+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
387405

388406
let node_a = Arc::new(node_a);
389407
let node_b = Arc::new(node_b);
@@ -413,7 +431,8 @@ fn concurrent_connections_succeed() {
413431
#[test]
414432
fn simple_bolt12_send_receive() {
415433
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
416-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
434+
let chain_source = TestChainSource::Esplora(&electrsd);
435+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
417436

418437
let address_a = node_a.onchain_payment().new_address().unwrap();
419438
let premine_amount_sat = 5_000_000;
@@ -620,7 +639,8 @@ fn simple_bolt12_send_receive() {
620639
#[test]
621640
fn generate_bip21_uri() {
622641
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
623-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
642+
let chain_source = TestChainSource::Esplora(&electrsd);
643+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
624644

625645
let address_a = node_a.onchain_payment().new_address().unwrap();
626646
let premined_sats = 5_000_000;
@@ -661,7 +681,8 @@ fn generate_bip21_uri() {
661681
#[test]
662682
fn unified_qr_send_receive() {
663683
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
664-
let (node_a, node_b) = setup_two_nodes(&electrsd, false, true, false);
684+
let chain_source = TestChainSource::Esplora(&electrsd);
685+
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
665686

666687
let address_a = node_a.onchain_payment().new_address().unwrap();
667688
let premined_sats = 5_000_000;

0 commit comments

Comments
 (0)