Randomize the `ConnectStyle` during tests
[rust-lightning] / lightning / src / ln / reorg_tests.rs
index 2f97864b10ec7c5a0fa7cf961547ff517406d11d..616feb1eea1f6a14dddc7f876246976f49eaea01 100644 (file)
@@ -209,6 +209,10 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool, use_funding_
                        let relevant_txids = nodes[0].node.get_relevant_txids();
                        assert_eq!(&relevant_txids[..], &[chan.3.txid()]);
                        nodes[0].node.transaction_unconfirmed(&relevant_txids[0]);
+               } else if connect_style == ConnectStyle::FullBlockViaListen {
+                       disconnect_blocks(&nodes[0], CHAN_CONFIRM_DEPTH - 1);
+                       assert_eq!(nodes[0].node.list_usable_channels().len(), 1);
+                       disconnect_blocks(&nodes[0], 1);
                } else {
                        disconnect_all_blocks(&nodes[0]);
                }
@@ -273,6 +277,10 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool, use_funding_
                        let relevant_txids = nodes[0].node.get_relevant_txids();
                        assert_eq!(&relevant_txids[..], &[chan.3.txid()]);
                        nodes[0].node.transaction_unconfirmed(&relevant_txids[0]);
+               } else if connect_style == ConnectStyle::FullBlockViaListen {
+                       disconnect_blocks(&nodes[0], CHAN_CONFIRM_DEPTH - 1);
+                       assert_eq!(nodes[0].node.list_channels().len(), 1);
+                       disconnect_blocks(&nodes[0], 1);
                } else {
                        disconnect_all_blocks(&nodes[0]);
                }
@@ -306,6 +314,11 @@ fn test_unconf_chan() {
        do_test_unconf_chan(false, true, false, ConnectStyle::BestBlockFirstSkippingBlocks);
        do_test_unconf_chan(true, false, false, ConnectStyle::BestBlockFirstSkippingBlocks);
        do_test_unconf_chan(false, false, false, ConnectStyle::BestBlockFirstSkippingBlocks);
+
+       do_test_unconf_chan(true, true, false, ConnectStyle::BestBlockFirstReorgsOnlyTip);
+       do_test_unconf_chan(false, true, false, ConnectStyle::BestBlockFirstReorgsOnlyTip);
+       do_test_unconf_chan(true, false, false, ConnectStyle::BestBlockFirstReorgsOnlyTip);
+       do_test_unconf_chan(false, false, false, ConnectStyle::BestBlockFirstReorgsOnlyTip);
 }
 
 #[test]
@@ -323,6 +336,11 @@ fn test_unconf_chan_via_funding_unconfirmed() {
        do_test_unconf_chan(true, false, true, ConnectStyle::BestBlockFirstSkippingBlocks);
        do_test_unconf_chan(false, false, true, ConnectStyle::BestBlockFirstSkippingBlocks);
 
+       do_test_unconf_chan(true, true, true, ConnectStyle::BestBlockFirstReorgsOnlyTip);
+       do_test_unconf_chan(false, true, true, ConnectStyle::BestBlockFirstReorgsOnlyTip);
+       do_test_unconf_chan(true, false, true, ConnectStyle::BestBlockFirstReorgsOnlyTip);
+       do_test_unconf_chan(false, false, true, ConnectStyle::BestBlockFirstReorgsOnlyTip);
+
        do_test_unconf_chan(true, true, true, ConnectStyle::FullBlockViaListen);
        do_test_unconf_chan(false, true, true, ConnectStyle::FullBlockViaListen);
        do_test_unconf_chan(true, false, true, ConnectStyle::FullBlockViaListen);
@@ -531,7 +549,9 @@ fn do_test_to_remote_after_local_detection(style: ConnectStyle) {
 fn test_to_remote_after_local_detection() {
        do_test_to_remote_after_local_detection(ConnectStyle::BestBlockFirst);
        do_test_to_remote_after_local_detection(ConnectStyle::BestBlockFirstSkippingBlocks);
+       do_test_to_remote_after_local_detection(ConnectStyle::BestBlockFirstReorgsOnlyTip);
        do_test_to_remote_after_local_detection(ConnectStyle::TransactionsFirst);
        do_test_to_remote_after_local_detection(ConnectStyle::TransactionsFirstSkippingBlocks);
+       do_test_to_remote_after_local_detection(ConnectStyle::TransactionsFirstReorgsOnlyTip);
        do_test_to_remote_after_local_detection(ConnectStyle::FullBlockViaListen);
 }