X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Futil%2Ftest_utils.rs;h=2d0ad9bf12af3799065637398a136cb4b2648d8a;hb=5351f9fa0375a363dafcc086dc52522f0e7ea7b9;hp=d29a55f12010cfb3a057c959248e31de841a7482;hpb=d4810087c111da74a80b85117c62fd6d012e697d;p=rust-lightning diff --git a/lightning/src/util/test_utils.rs b/lightning/src/util/test_utils.rs index d29a55f1..2d0ad9bf 100644 --- a/lightning/src/util/test_utils.rs +++ b/lightning/src/util/test_utils.rs @@ -85,6 +85,7 @@ pub struct TestChainMonitor<'a> { // If this is set to Some(), after the next return, we'll always return this until update_ret // is changed: pub next_update_ret: Mutex>>, + pub expect_channel_force_closed: Mutex>, } impl<'a> TestChainMonitor<'a> { pub fn new(chain_source: Option<&'a TestChainSource>, broadcaster: &'a chaininterface::BroadcasterInterface, logger: &'a TestLogger, fee_estimator: &'a TestFeeEstimator, persister: &'a channelmonitor::Persist, keys_manager: &'a TestKeysInterface) -> Self { @@ -95,6 +96,7 @@ impl<'a> TestChainMonitor<'a> { keys_manager, update_ret: Mutex::new(None), next_update_ret: Mutex::new(None), + expect_channel_force_closed: Mutex::new(None), } } } @@ -129,6 +131,14 @@ impl<'a> chain::Watch for TestChainMonitor<'a> { assert!(channelmonitor::ChannelMonitorUpdate::read( &mut ::std::io::Cursor::new(&w.0)).unwrap() == update); + if let Some(exp) = self.expect_channel_force_closed.lock().unwrap().take() { + assert_eq!(funding_txo.to_channel_id(), exp.0); + assert_eq!(update.updates.len(), 1); + if let channelmonitor::ChannelMonitorUpdateStep::ChannelForceClosed { should_broadcast } = update.updates[0] { + assert_eq!(should_broadcast, exp.1); + } else { panic!(); } + } + self.latest_monitor_update_id.lock().unwrap().insert(funding_txo.to_channel_id(), (funding_txo, update.update_id)); let update_res = self.chain_monitor.update_channel(funding_txo, update); // At every point where we get a monitor update, we should be able to send a useful monitor