@@ -43,9 +43,8 @@ use io;
43
43
use prelude:: * ;
44
44
use sync:: { Arc , Mutex } ;
45
45
46
- // If persister_fail is true, we have the persister return a PermanentFailure
47
- // instead of the higher-level ChainMonitor.
48
- fn do_test_simple_monitor_permanent_update_fail ( persister_fail : bool ) {
46
+ #[ test]
47
+ fn test_simple_monitor_permanent_update_fail ( ) {
49
48
// Test that we handle a simple permanent monitor update failure
50
49
let mut chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
51
50
let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
@@ -56,10 +55,7 @@ fn do_test_simple_monitor_permanent_update_fail(persister_fail: bool) {
56
55
57
56
let ( _, payment_hash_1, payment_secret_1) = get_payment_preimage_hash ! ( & nodes[ 1 ] ) ;
58
57
59
- match persister_fail {
60
- true => chanmon_cfgs[ 0 ] . persister . set_update_ret ( Err ( ChannelMonitorUpdateErr :: PermanentFailure ) ) ,
61
- false => * nodes[ 0 ] . chain_monitor . update_ret . lock ( ) . unwrap ( ) = Some ( Err ( ChannelMonitorUpdateErr :: PermanentFailure ) )
62
- }
58
+ * nodes[ 0 ] . chain_monitor . update_ret . lock ( ) . unwrap ( ) = Some ( Err ( ChannelMonitorUpdateErr :: PermanentFailure ) ) ;
63
59
let net_graph_msg_handler = & nodes[ 0 ] . net_graph_msg_handler ;
64
60
let route = get_route ( & nodes[ 0 ] . node . get_our_node_id ( ) , & net_graph_msg_handler. network_graph , & nodes[ 1 ] . node . get_our_node_id ( ) , Some ( InvoiceFeatures :: known ( ) ) , None , & Vec :: new ( ) , 1000000 , TEST_FINAL_CLTV , & logger) . unwrap ( ) ;
65
61
unwrap_send_err ! ( nodes[ 0 ] . node. send_payment( & route, payment_hash_1, & Some ( payment_secret_1) ) , true , APIError :: ChannelUnavailable { ..} , { } ) ;
@@ -156,17 +152,7 @@ fn test_monitor_and_persister_update_fail() {
156
152
assert_eq ! ( events. len( ) , 1 ) ;
157
153
}
158
154
159
- #[ test]
160
- fn test_simple_monitor_permanent_update_fail ( ) {
161
- do_test_simple_monitor_permanent_update_fail ( false ) ;
162
-
163
- // Test behavior when the persister returns a PermanentFailure.
164
- do_test_simple_monitor_permanent_update_fail ( true ) ;
165
- }
166
-
167
- // If persister_fail is true, we have the persister return a TemporaryFailure instead of the
168
- // higher-level ChainMonitor.
169
- fn do_test_simple_monitor_temporary_update_fail ( disconnect : bool , persister_fail : bool ) {
155
+ fn do_test_simple_monitor_temporary_update_fail ( disconnect : bool ) {
170
156
// Test that we can recover from a simple temporary monitor update failure optionally with
171
157
// a disconnect in between
172
158
let mut chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
@@ -178,10 +164,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool, persister_fail
178
164
179
165
let ( payment_preimage_1, payment_hash_1, payment_secret_1) = get_payment_preimage_hash ! ( & nodes[ 1 ] ) ;
180
166
181
- match persister_fail {
182
- true => chanmon_cfgs[ 0 ] . persister . set_update_ret ( Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ) ,
183
- false => * nodes[ 0 ] . chain_monitor . update_ret . lock ( ) . unwrap ( ) = Some ( Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) )
184
- }
167
+ chanmon_cfgs[ 0 ] . persister . set_update_ret ( Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ) ;
185
168
186
169
{
187
170
let net_graph_msg_handler = & nodes[ 0 ] . net_graph_msg_handler ;
@@ -200,10 +183,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool, persister_fail
200
183
reconnect_nodes ( & nodes[ 0 ] , & nodes[ 1 ] , ( true , true ) , ( 0 , 0 ) , ( 0 , 0 ) , ( 0 , 0 ) , ( 0 , 0 ) , ( 0 , 0 ) , ( false , false ) ) ;
201
184
}
202
185
203
- match persister_fail {
204
- true => chanmon_cfgs[ 0 ] . persister . set_update_ret ( Ok ( ( ) ) ) ,
205
- false => * nodes[ 0 ] . chain_monitor . update_ret . lock ( ) . unwrap ( ) = Some ( Ok ( ( ) ) )
206
- }
186
+ chanmon_cfgs[ 0 ] . persister . set_update_ret ( Ok ( ( ) ) ) ;
207
187
let ( outpoint, latest_update) = nodes[ 0 ] . chain_monitor . latest_monitor_update_id . lock ( ) . unwrap ( ) . get ( & channel_id) . unwrap ( ) . clone ( ) ;
208
188
nodes[ 0 ] . node . channel_monitor_updated ( & outpoint, latest_update) ;
209
189
check_added_monitors ! ( nodes[ 0 ] , 0 ) ;
@@ -239,10 +219,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool, persister_fail
239
219
// Now set it to failed again...
240
220
let ( _, payment_hash_2, payment_secret_2) = get_payment_preimage_hash ! ( & nodes[ 1 ] ) ;
241
221
{
242
- match persister_fail {
243
- true => chanmon_cfgs[ 0 ] . persister . set_update_ret ( Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ) ,
244
- false => * nodes[ 0 ] . chain_monitor . update_ret . lock ( ) . unwrap ( ) = Some ( Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) )
245
- }
222
+ chanmon_cfgs[ 0 ] . persister . set_update_ret ( Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ) ;
246
223
let net_graph_msg_handler = & nodes[ 0 ] . net_graph_msg_handler ;
247
224
let route = get_route ( & nodes[ 0 ] . node . get_our_node_id ( ) , & net_graph_msg_handler. network_graph , & nodes[ 1 ] . node . get_our_node_id ( ) , Some ( InvoiceFeatures :: known ( ) ) , None , & Vec :: new ( ) , 1000000 , TEST_FINAL_CLTV , & logger) . unwrap ( ) ;
248
225
unwrap_send_err ! ( nodes[ 0 ] . node. send_payment( & route, payment_hash_2, & Some ( payment_secret_2) ) , false , APIError :: MonitorUpdateFailed , { } ) ;
@@ -273,12 +250,8 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool, persister_fail
273
250
274
251
#[ test]
275
252
fn test_simple_monitor_temporary_update_fail ( ) {
276
- do_test_simple_monitor_temporary_update_fail ( false , false ) ;
277
- do_test_simple_monitor_temporary_update_fail ( true , false ) ;
278
-
279
- // Test behavior when the persister returns a TemporaryFailure.
280
- do_test_simple_monitor_temporary_update_fail ( false , true ) ;
281
- do_test_simple_monitor_temporary_update_fail ( true , true ) ;
253
+ do_test_simple_monitor_temporary_update_fail ( false ) ;
254
+ do_test_simple_monitor_temporary_update_fail ( true ) ;
282
255
}
283
256
284
257
fn do_test_monitor_temporary_update_fail ( disconnect_count : usize ) {
0 commit comments