1+ use crate :: io:: KVStore ;
12use crate :: test:: utils:: * ;
23use crate :: test:: utils:: { expect_event, random_config} ;
3- use crate :: { Builder , Error , Event , PaymentDirection , PaymentStatus } ;
4+ use crate :: { Builder , Error , Event , Node , PaymentDirection , PaymentStatus } ;
45
56use bitcoin:: Amount ;
7+ use electrsd:: bitcoind:: BitcoinD ;
8+ use electrsd:: ElectrsD ;
9+
10+ use std:: sync:: Arc ;
611
712#[ test]
813fn channel_full_cycle ( ) {
@@ -14,14 +19,46 @@ fn channel_full_cycle() {
1419 builder_a. set_esplora_server ( esplora_url. clone ( ) ) ;
1520 let node_a = builder_a. build ( ) ;
1621 node_a. start ( ) . unwrap ( ) ;
17- let addr_a = node_a. new_funding_address ( ) . unwrap ( ) ;
1822
1923 println ! ( "\n == Node B ==" ) ;
2024 let config_b = random_config ( ) ;
2125 let builder_b = Builder :: from_config ( config_b) ;
2226 builder_b. set_esplora_server ( esplora_url) ;
2327 let node_b = builder_b. build ( ) ;
2428 node_b. start ( ) . unwrap ( ) ;
29+
30+ do_channel_full_cycle ( node_a, node_b, & bitcoind, & electrsd, false ) ;
31+ }
32+
33+ #[ test]
34+ fn channel_full_cycle_0conf ( ) {
35+ let ( bitcoind, electrsd) = setup_bitcoind_and_electrsd ( ) ;
36+ println ! ( "== Node A ==" ) ;
37+ let esplora_url = format ! ( "http://{}" , electrsd. esplora_url. as_ref( ) . unwrap( ) ) ;
38+ let config_a = random_config ( ) ;
39+ let builder_a = Builder :: from_config ( config_a) ;
40+ builder_a. set_esplora_server ( esplora_url. clone ( ) ) ;
41+ let node_a = builder_a. build ( ) ;
42+ node_a. start ( ) . unwrap ( ) ;
43+
44+ println ! ( "\n == Node B ==" ) ;
45+ let mut config_b = random_config ( ) ;
46+ config_b. trusted_peers_0conf . push ( node_a. node_id ( ) ) ;
47+
48+ let builder_b = Builder :: from_config ( config_b) ;
49+ builder_b. set_esplora_server ( esplora_url. clone ( ) ) ;
50+ let node_b = builder_b. build ( ) ;
51+
52+ node_b. start ( ) . unwrap ( ) ;
53+
54+ do_channel_full_cycle ( node_a, node_b, & bitcoind, & electrsd, true )
55+ }
56+
57+ fn do_channel_full_cycle < K : KVStore + Sync + Send > (
58+ node_a : Arc < Node < K > > , node_b : Arc < Node < K > > , bitcoind : & BitcoinD , electrsd : & ElectrsD ,
59+ allow_0conf : bool ,
60+ ) {
61+ let addr_a = node_a. new_funding_address ( ) . unwrap ( ) ;
2562 let addr_b = node_b. new_funding_address ( ) . unwrap ( ) ;
2663
2764 let premine_amount_sat = 100_000 ;
@@ -71,8 +108,11 @@ fn channel_full_cycle() {
71108
72109 wait_for_tx ( & electrsd, funding_txo. txid ) ;
73110
74- println ! ( "\n .. generating blocks, syncing wallets .. " ) ;
75- generate_blocks_and_wait ( & bitcoind, & electrsd, 6 ) ;
111+ if !allow_0conf {
112+ println ! ( "\n .. generating blocks .." ) ;
113+ generate_blocks_and_wait ( & bitcoind, & electrsd, 6 ) ;
114+ }
115+
76116 node_a. sync_wallets ( ) . unwrap ( ) ;
77117 node_b. sync_wallets ( ) . unwrap ( ) ;
78118
@@ -271,7 +311,7 @@ fn channel_open_fails_when_funds_insufficient() {
271311 node_b. listening_address( ) . unwrap( ) . into( ) ,
272312 120000 ,
273313 None ,
274- true
314+ true ,
275315 )
276316 ) ;
277317}
0 commit comments