Take multiple spent-txn to check_spends! in functional_tests 2020-03-462-nits
authorMatt Corallo <git@bluematt.me>
Wed, 4 Mar 2020 22:45:27 +0000 (17:45 -0500)
committerMatt Corallo <git@bluematt.me>
Thu, 5 Mar 2020 02:06:58 +0000 (21:06 -0500)
This reintroduces a check_spends!() removed in 3d640da5c343111f538f
due to check_spends not being able to check a transaction which
spends multiple other transactions.

It also simplifies a few calls in claim_htlc_outputs_single_tx by
using check_spends!().

lightning/src/ln/functional_test_utils.rs
lightning/src/ln/functional_tests.rs

index 3600467b12ccd71aa4e45c2732345c6419a02909..489647dcfa094764883d9ee2adfb106226afbf4c 100644 (file)
@@ -403,14 +403,15 @@ pub fn create_announced_chan_between_nodes_with_value<'a, 'b, 'c, 'd>(nodes: &'a
 }
 
 macro_rules! check_spends {
-       ($tx: expr, $spends_tx: expr) => {
+       ($tx: expr, $($spends_txn: expr),*) => {
                {
                        $tx.verify(|out_point| {
-                               if out_point.txid == $spends_tx.txid() {
-                                       $spends_tx.output.get(out_point.vout as usize).cloned()
-                               } else {
-                                       None
-                               }
+                               $(
+                                       if out_point.txid == $spends_txn.txid() {
+                                               return $spends_txn.output.get(out_point.vout as usize).cloned()
+                                       }
+                               )*
+                               None
                        }).unwrap();
                }
        }
index 74342589d674b65b0c65b6e58b69e2806f98239d..a41ae11af2c2d19cb95060ef72d230b1e1cc4ca8 100644 (file)
@@ -2360,16 +2360,9 @@ fn claim_htlc_outputs_single_tx() {
                assert_eq!(node_txn[2].input.len(), 1);
                assert_eq!(node_txn[3].input.len(), 1);
                assert_eq!(node_txn[4].input.len(), 1);
-               fn get_txout(out_point: &BitcoinOutPoint, tx: &Transaction) -> Option<TxOut> {
-                       if out_point.txid == tx.txid() {
-                               tx.output.get(out_point.vout as usize).cloned()
-                       } else {
-                               None
-                       }
-               }
-               node_txn[2].verify(|out|get_txout(out, &revoked_local_txn[0])).unwrap();
-               node_txn[3].verify(|out|get_txout(out, &revoked_local_txn[0])).unwrap();
-               node_txn[4].verify(|out|get_txout(out, &revoked_local_txn[0])).unwrap();
+               check_spends!(node_txn[2], revoked_local_txn[0]);
+               check_spends!(node_txn[3], revoked_local_txn[0]);
+               check_spends!(node_txn[4], revoked_local_txn[0]);
 
                let mut witness_lens = BTreeSet::new();
                witness_lens.insert(node_txn[2].input[0].witness.last().unwrap().len());
@@ -6924,13 +6917,7 @@ fn test_bump_penalty_txn_on_revoked_htlcs() {
                // Verify claim tx are spending revoked HTLC txn
                assert_eq!(node_txn[4].input.len(), 2);
                assert_eq!(node_txn[4].output.len(), 1);
-               if node_txn[4].input[0].previous_output.txid == revoked_htlc_txn[0].txid() {
-                       assert_eq!(node_txn[4].input[1].previous_output.txid, revoked_htlc_txn[1].txid());
-               } else if node_txn[4].input[0].previous_output.txid == revoked_htlc_txn[1].txid() {
-                       assert_eq!(node_txn[4].input[1].previous_output.txid, revoked_htlc_txn[0].txid());
-               } else {
-                       panic!();
-               }
+               check_spends!(node_txn[4], revoked_htlc_txn[0], revoked_htlc_txn[1]);
                first = node_txn[4].txid();
                // Store both feerates for later comparison
                let fee_1 = revoked_htlc_txn[0].output[0].value + revoked_htlc_txn[1].output[0].value - node_txn[4].output[0].value;
@@ -6954,24 +6941,14 @@ fn test_bump_penalty_txn_on_revoked_htlcs() {
 
        // Few more blocks to confirm penalty txn
        let header_135 = connect_blocks(&nodes[0].block_notifier, 5, 130, true, header_130.bitcoin_hash());
-       {
-               let mut node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap();
-               assert_eq!(node_txn.len(), 0);
-               node_txn.clear();
-       }
+       assert!(nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().is_empty());
        let header_144 = connect_blocks(&nodes[0].block_notifier, 9, 135, true, header_135);
        let node_txn = {
                let mut node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap();
                assert_eq!(node_txn.len(), 1);
 
                assert_eq!(node_txn[0].input.len(), 2);
-               if node_txn[0].input[0].previous_output.txid == revoked_htlc_txn[0].txid() {
-                       assert_eq!(node_txn[0].input[1].previous_output.txid, revoked_htlc_txn[1].txid());
-               } else if node_txn[0].input[0].previous_output.txid == revoked_htlc_txn[1].txid() {
-                       assert_eq!(node_txn[0].input[1].previous_output.txid, revoked_htlc_txn[0].txid());
-               } else {
-                       panic!();
-               }
+               check_spends!(node_txn[0], revoked_htlc_txn[0], revoked_htlc_txn[1]);
                //// Verify bumped tx is different and 25% bump heuristic
                assert_ne!(first, node_txn[0].txid());
                let fee_2 = revoked_htlc_txn[0].output[0].value + revoked_htlc_txn[1].output[0].value - node_txn[0].output[0].value;