Merge pull request #838 from TheBlueMatt/2021-03-skip-blocks
[rust-lightning] / lightning-persister / src / lib.rs
index 3db95f35a955e3b46113761eae91e26b105c1086..af11dfd167b4d51f1c6a1bde4ea7ab5eb42308a9 100644 (file)
@@ -3,6 +3,9 @@
 #![deny(broken_intra_doc_links)]
 #![deny(missing_docs)]
 
+#![cfg_attr(all(test, feature = "unstable"), feature(test))]
+#[cfg(all(test, feature = "unstable"))] extern crate test;
+
 mod util;
 
 extern crate lightning;
@@ -241,15 +244,15 @@ mod tests {
                // Force close because cooperative close doesn't result in any persisted
                // updates.
                nodes[0].node.force_close_channel(&nodes[0].node.list_channels()[0].channel_id).unwrap();
-               check_closed_broadcast!(nodes[0], false);
+               check_closed_broadcast!(nodes[0], true);
                check_added_monitors!(nodes[0], 1);
 
                let node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap();
                assert_eq!(node_txn.len(), 1);
 
-               let header = BlockHeader { version: 0x20000000, prev_blockhash: Default::default(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 };
-               connect_block(&nodes[1], &Block { header, txdata: vec![node_txn[0].clone(), node_txn[0].clone()]}, 1);
-               check_closed_broadcast!(nodes[1], false);
+               let header = BlockHeader { version: 0x20000000, prev_blockhash: nodes[0].best_block_hash(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 };
+               connect_block(&nodes[1], &Block { header, txdata: vec![node_txn[0].clone(), node_txn[0].clone()]});
+               check_closed_broadcast!(nodes[1], true);
                check_added_monitors!(nodes[1], 1);
 
                // Make sure everything is persisted as expected after close.
@@ -330,3 +333,15 @@ mod tests {
                added_monitors.clear();
        }
 }
+
+#[cfg(all(test, feature = "unstable"))]
+pub mod bench {
+       use test::Bencher;
+
+       #[bench]
+       fn bench_sends(bench: &mut Bencher) {
+               let persister_a = super::FilesystemPersister::new("bench_filesystem_persister_a".to_string());
+               let persister_b = super::FilesystemPersister::new("bench_filesystem_persister_b".to_string());
+               lightning::ln::channelmanager::bench::bench_two_sends(bench, persister_a, persister_b);
+       }
+}