From 021733a1b06318e14e1bc4b27851e5a1d57d9fc7 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Sun, 23 Feb 2020 23:26:10 -0500 Subject: [PATCH] Test Router serialization round-trip in functional_tests. This tests Router serialization round-trip at the end of each functional test in the same way we do ChannelMonitors and ChannelManagers to catch any cases where we were able to get into a state which would have prevented reading a Router back off disk. --- lightning/src/ln/functional_test_utils.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lightning/src/ln/functional_test_utils.rs b/lightning/src/ln/functional_test_utils.rs index 25927a8e..01ce5186 100644 --- a/lightning/src/ln/functional_test_utils.rs +++ b/lightning/src/ln/functional_test_utils.rs @@ -6,7 +6,7 @@ use chain::transaction::OutPoint; use chain::keysinterface::KeysInterface; use ln::channelmanager::{ChannelManager, ChannelManagerReadArgs, RAACommitmentOrder, PaymentPreimage, PaymentHash}; use ln::channelmonitor::{ChannelMonitor, ManyChannelMonitor}; -use ln::router::{Route, Router}; +use ln::router::{Route, Router, RouterReadArgs}; use ln::features::InitFeatures; use ln::msgs; use ln::msgs::{ChannelMessageHandler,RoutingMessageHandler}; @@ -97,6 +97,16 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> { assert!(self.node.get_and_clear_pending_events().is_empty()); assert!(self.chan_monitor.added_monitors.lock().unwrap().is_empty()); + // Check that if we serialize the Router, we can deserialize it again. + { + let mut w = test_utils::TestVecWriter(Vec::new()); + self.router.write(&mut w).unwrap(); + let _ = Router::read(&mut ::std::io::Cursor::new(&w.0), RouterReadArgs { + chain_monitor: Arc::clone(&self.chain_monitor) as Arc, + logger: Arc::clone(&self.logger) as Arc + }).unwrap(); + } + // Check that if we serialize and then deserialize all our channel monitors we get the // same set of outputs to watch for on chain as we have now. Note that if we write // tests that fully close channels and remove the monitors at some point this may break. -- 2.30.2