1
+ use crate :: io:: KVStore ;
1
2
use crate :: test:: utils:: * ;
2
3
use crate :: test:: utils:: { expect_event, random_config} ;
3
- use crate :: { Builder , Error , Event , PaymentDirection , PaymentStatus } ;
4
+ use crate :: { Builder , Error , Event , Node , PaymentDirection , PaymentStatus } ;
4
5
5
6
use bitcoin:: Amount ;
7
+ use electrsd:: bitcoind:: BitcoinD ;
8
+ use electrsd:: ElectrsD ;
9
+
10
+ use std:: sync:: Arc ;
6
11
7
12
#[ test]
8
13
fn channel_full_cycle ( ) {
@@ -14,14 +19,46 @@ fn channel_full_cycle() {
14
19
builder_a. set_esplora_server ( esplora_url. clone ( ) ) ;
15
20
let node_a = builder_a. build ( ) ;
16
21
node_a. start ( ) . unwrap ( ) ;
17
- let addr_a = node_a. new_funding_address ( ) . unwrap ( ) ;
18
22
19
23
println ! ( "\n == Node B ==" ) ;
20
24
let config_b = random_config ( ) ;
21
25
let builder_b = Builder :: from_config ( config_b) ;
22
26
builder_b. set_esplora_server ( esplora_url) ;
23
27
let node_b = builder_b. build ( ) ;
24
28
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 ( ) ;
25
62
let addr_b = node_b. new_funding_address ( ) . unwrap ( ) ;
26
63
27
64
let premine_amount_sat = 100_000 ;
@@ -71,8 +108,11 @@ fn channel_full_cycle() {
71
108
72
109
wait_for_tx ( & electrsd, funding_txo. txid ) ;
73
110
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
+
76
116
node_a. sync_wallets ( ) . unwrap ( ) ;
77
117
node_b. sync_wallets ( ) . unwrap ( ) ;
78
118
@@ -271,7 +311,7 @@ fn channel_open_fails_when_funds_insufficient() {
271
311
node_b. listening_address( ) . unwrap( ) . into( ) ,
272
312
120000 ,
273
313
None ,
274
- true
314
+ true ,
275
315
)
276
316
) ;
277
317
}
0 commit comments