]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Start tracking chain_sync_monitor_persistences in TestPersister
authorG8XSU <3442979+G8XSU@users.noreply.github.com>
Fri, 14 Jun 2024 23:55:39 +0000 (16:55 -0700)
committerG8XSU <3442979+G8XSU@users.noreply.github.com>
Mon, 17 Jun 2024 19:50:04 +0000 (12:50 -0700)
It is helpful to assert that chain-sync did trigger a monitor
persist.

lightning/src/util/test_utils.rs

index f6616a8e5d2449391c2beb68d08e93c295127cee..2d00844772aca60eb841b2eb5bde57f7dcae8556 100644 (file)
@@ -545,12 +545,16 @@ pub struct TestPersister {
        ///
        /// [`ChannelMonitor`]: channelmonitor::ChannelMonitor
        pub offchain_monitor_updates: Mutex<HashMap<OutPoint, HashSet<u64>>>,
+       /// When we get an update_persisted_channel call with no ChannelMonitorUpdate, we insert the
+       /// monitor's funding outpoint here.
+       pub chain_sync_monitor_persistences: Mutex<VecDeque<OutPoint>>
 }
 impl TestPersister {
        pub fn new() -> Self {
                Self {
                        update_rets: Mutex::new(VecDeque::new()),
                        offchain_monitor_updates: Mutex::new(new_hash_map()),
+                       chain_sync_monitor_persistences: Mutex::new(VecDeque::new())
                }
        }
 
@@ -573,15 +577,18 @@ impl<Signer: sign::ecdsa::EcdsaChannelSigner> chainmonitor::Persist<Signer> for
                        ret = update_ret;
                }
 
-               if let Some(update) = update  {
+               if let Some(update) = update {
                        self.offchain_monitor_updates.lock().unwrap().entry(funding_txo).or_insert(new_hash_set()).insert(update.update_id);
+               } else {
+                       self.chain_sync_monitor_persistences.lock().unwrap().push_back(funding_txo);
                }
                ret
        }
 
        fn archive_persisted_channel(&self, funding_txo: OutPoint) {
-               // remove the channel from the offchain_monitor_updates map
+               // remove the channel from the offchain_monitor_updates and chain_sync_monitor_persistences.
                self.offchain_monitor_updates.lock().unwrap().remove(&funding_txo);
+               self.chain_sync_monitor_persistences.lock().unwrap().retain(|x| x != &funding_txo);
        }
 }