@@ -99,8 +99,8 @@ impl Writer for VecWriter {
9999struct TestChainMonitor {
100100 pub logger : Arc < dyn Logger > ,
101101 pub keys : Arc < KeyProvider > ,
102+ pub persister : Arc < TestPersister > ,
102103 pub chain_monitor : Arc < chainmonitor:: ChainMonitor < EnforcingSigner , Arc < dyn chain:: Filter > , Arc < TestBroadcaster > , Arc < FuzzEstimator > , Arc < dyn Logger > , Arc < TestPersister > > > ,
103- pub update_ret : Mutex < Result < ( ) , chain:: ChannelMonitorUpdateErr > > ,
104104 // If we reload a node with an old copy of ChannelMonitors, the ChannelManager deserialization
105105 // logic will automatically force-close our channels for us (as we don't have an up-to-date
106106 // monitor implying we are not able to punish misbehaving counterparties). Because this test
@@ -112,10 +112,10 @@ struct TestChainMonitor {
112112impl TestChainMonitor {
113113 pub fn new ( broadcaster : Arc < TestBroadcaster > , logger : Arc < dyn Logger > , feeest : Arc < FuzzEstimator > , persister : Arc < TestPersister > , keys : Arc < KeyProvider > ) -> Self {
114114 Self {
115- chain_monitor : Arc :: new ( chainmonitor:: ChainMonitor :: new ( None , broadcaster, logger. clone ( ) , feeest, persister) ) ,
115+ chain_monitor : Arc :: new ( chainmonitor:: ChainMonitor :: new ( None , broadcaster, logger. clone ( ) , feeest, Arc :: clone ( & persister) ) ) ,
116116 logger,
117117 keys,
118- update_ret : Mutex :: new ( Ok ( ( ) ) ) ,
118+ persister ,
119119 latest_monitors : Mutex :: new ( HashMap :: new ( ) ) ,
120120 should_update_manager : atomic:: AtomicBool :: new ( false ) ,
121121 }
@@ -129,8 +129,7 @@ impl chain::Watch<EnforcingSigner> for TestChainMonitor {
129129 panic ! ( "Already had monitor pre-watch_channel" ) ;
130130 }
131131 self . should_update_manager . store ( true , atomic:: Ordering :: Relaxed ) ;
132- assert ! ( self . chain_monitor. watch_channel( funding_txo, monitor) . is_ok( ) ) ;
133- self . update_ret . lock ( ) . unwrap ( ) . clone ( )
132+ self . chain_monitor . watch_channel ( funding_txo, monitor)
134133 }
135134
136135 fn update_channel ( & self , funding_txo : OutPoint , update : channelmonitor:: ChannelMonitorUpdate ) -> Result < ( ) , chain:: ChannelMonitorUpdateErr > {
@@ -146,8 +145,7 @@ impl chain::Watch<EnforcingSigner> for TestChainMonitor {
146145 deserialized_monitor. write ( & mut ser) . unwrap ( ) ;
147146 map_entry. insert ( ( update. update_id , ser. 0 ) ) ;
148147 self . should_update_manager . store ( true , atomic:: Ordering :: Relaxed ) ;
149- assert ! ( self . chain_monitor. update_channel( funding_txo, update) . is_ok( ) ) ;
150- self . update_ret . lock ( ) . unwrap ( ) . clone ( )
148+ self . chain_monitor . update_channel ( funding_txo, update)
151149 }
152150
153151 fn release_pending_monitor_events ( & self ) -> Vec < MonitorEvent > {
@@ -346,7 +344,8 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
346344 ( $node_id: expr, $fee_estimator: expr) => { {
347345 let logger: Arc <dyn Logger > = Arc :: new( test_logger:: TestLogger :: new( $node_id. to_string( ) , out. clone( ) ) ) ;
348346 let keys_manager = Arc :: new( KeyProvider { node_id: $node_id, rand_bytes_id: atomic:: AtomicU32 :: new( 0 ) , enforcement_states: Mutex :: new( HashMap :: new( ) ) } ) ;
349- let monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , $fee_estimator. clone( ) , Arc :: new( TestPersister { } ) , Arc :: clone( & keys_manager) ) ) ;
347+ let monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , $fee_estimator. clone( ) ,
348+ Arc :: new( TestPersister { update_ret: Mutex :: new( Ok ( ( ) ) ) } ) , Arc :: clone( & keys_manager) ) ) ;
350349
351350 let mut config = UserConfig :: default ( ) ;
352351 config. channel_options. forwarding_fee_proportional_millionths = 0 ;
@@ -365,7 +364,8 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
365364 ( $ser: expr, $node_id: expr, $old_monitors: expr, $keys_manager: expr, $fee_estimator: expr) => { {
366365 let keys_manager = Arc :: clone( & $keys_manager) ;
367366 let logger: Arc <dyn Logger > = Arc :: new( test_logger:: TestLogger :: new( $node_id. to_string( ) , out. clone( ) ) ) ;
368- let chain_monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , $fee_estimator. clone( ) , Arc :: new( TestPersister { } ) , Arc :: clone( & $keys_manager) ) ) ;
367+ let chain_monitor = Arc :: new( TestChainMonitor :: new( broadcast. clone( ) , logger. clone( ) , $fee_estimator. clone( ) ,
368+ Arc :: new( TestPersister { update_ret: Mutex :: new( Ok ( ( ) ) ) } ) , Arc :: clone( & $keys_manager) ) ) ;
369369
370370 let mut config = UserConfig :: default ( ) ;
371371 config. channel_options. forwarding_fee_proportional_millionths = 0 ;
@@ -846,12 +846,12 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
846846 // bit-twiddling mutations to have similar effects. This is probably overkill, but no
847847 // harm in doing so.
848848
849- 0x00 => * monitor_a. update_ret . lock ( ) . unwrap ( ) = Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ,
850- 0x01 => * monitor_b. update_ret . lock ( ) . unwrap ( ) = Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ,
851- 0x02 => * monitor_c. update_ret . lock ( ) . unwrap ( ) = Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ,
852- 0x04 => * monitor_a. update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ,
853- 0x05 => * monitor_b. update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ,
854- 0x06 => * monitor_c. update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ,
849+ 0x00 => * monitor_a. persister . update_ret . lock ( ) . unwrap ( ) = Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ,
850+ 0x01 => * monitor_b. persister . update_ret . lock ( ) . unwrap ( ) = Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ,
851+ 0x02 => * monitor_c. persister . update_ret . lock ( ) . unwrap ( ) = Err ( ChannelMonitorUpdateErr :: TemporaryFailure ) ,
852+ 0x04 => * monitor_a. persister . update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ,
853+ 0x05 => * monitor_b. persister . update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ,
854+ 0x06 => * monitor_c. persister . update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ,
855855
856856 0x08 => {
857857 if let Some ( ( id, _) ) = monitor_a. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_1_funding) {
@@ -1072,9 +1072,9 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
10721072 // after we resolve all pending events.
10731073 // First make sure there are no pending monitor updates, resetting the error state
10741074 // and calling channel_monitor_updated for each monitor.
1075- * monitor_a. update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ;
1076- * monitor_b. update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ;
1077- * monitor_c. update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ;
1075+ * monitor_a. persister . update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ;
1076+ * monitor_b. persister . update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ;
1077+ * monitor_c. persister . update_ret . lock ( ) . unwrap ( ) = Ok ( ( ) ) ;
10781078
10791079 if let Some ( ( id, _) ) = monitor_a. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_1_funding) {
10801080 nodes[ 0 ] . channel_monitor_updated ( & chan_1_funding, * id) ;
0 commit comments