mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-23 00:54:20 +01:00
pytest: fix race in test_penalty_htlc_tx_timeout
We don't always get two transactions on line 1019; the comment is confused (only one penalty tx successfully comes out of l3). So make sure we get the other transactions when we expect them, and then make this test more specific. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -974,7 +974,7 @@ def test_penalty_htlc_tx_timeout(node_factory, bitcoind, chainparams):
|
||||
l2.daemon.wait_for_log('coins payment_hash: {}'.format(sticky_inv_2['payment_hash']))
|
||||
|
||||
# l2 moves on for closed l3
|
||||
bitcoind.generate_block(1)
|
||||
bitcoind.generate_block(1, wait_for_mempool=1)
|
||||
l2.daemon.wait_for_log('to ONCHAIN')
|
||||
l2.daemon.wait_for_logs(['Propose handling OUR_UNILATERAL/OUR_HTLC by OUR_HTLC_TIMEOUT_TX .* after 16 blocks',
|
||||
'Propose handling OUR_UNILATERAL/DELAYED_OUTPUT_TO_US by OUR_DELAYED_RETURN_TO_WALLET .* after 5 blocks',
|
||||
@@ -983,7 +983,7 @@ def test_penalty_htlc_tx_timeout(node_factory, bitcoind, chainparams):
|
||||
l2.wait_for_onchaind_broadcast('OUR_HTLC_SUCCESS_TX',
|
||||
'OUR_UNILATERAL/THEIR_HTLC')
|
||||
|
||||
bitcoind.generate_block(1)
|
||||
bitcoind.generate_block(1, wait_for_mempool=1)
|
||||
l2.daemon.wait_for_log('Propose handling OUR_HTLC_SUCCESS_TX/DELAYED_OUTPUT_TO_US by OUR_DELAYED_RETURN_TO_WALLET .* after 5 blocks')
|
||||
|
||||
# after 5 blocks, l2 reclaims both their DELAYED_OUTPUT_TO_US and their delayed output
|
||||
@@ -996,7 +996,7 @@ def test_penalty_htlc_tx_timeout(node_factory, bitcoind, chainparams):
|
||||
l2.wait_for_onchaind_broadcast('OUR_HTLC_TIMEOUT_TX',
|
||||
'OUR_UNILATERAL/OUR_HTLC')
|
||||
|
||||
bitcoind.generate_block(1)
|
||||
bitcoind.generate_block(1, wait_for_mempool=1)
|
||||
l2.daemon.wait_for_log('Propose handling OUR_HTLC_TIMEOUT_TX/DELAYED_OUTPUT_TO_US by OUR_DELAYED_RETURN_TO_WALLET .* after 5 blocks')
|
||||
|
||||
# l3 comes back up, sees cheat, penalizes l2 (revokes the htlc they've offered;
|
||||
@@ -1016,7 +1016,16 @@ def test_penalty_htlc_tx_timeout(node_factory, bitcoind, chainparams):
|
||||
'by THEIR_DELAYED_CHEAT',
|
||||
'Resolved THEIR_REVOKED_UNILATERAL/THEIR_HTLC by THEIR_HTLC_TIMEOUT_TO_THEM',
|
||||
'Propose handling THEIR_HTLC_TIMEOUT_TO_THEM/DELAYED_CHEAT_OUTPUT_TO_THEM by OUR_PENALTY_TX'])
|
||||
bitcoind.generate_block(1, wait_for_mempool=2) # OUR_PENALTY_TX + OUR_HTLC_TIMEOUT_TO_US
|
||||
|
||||
# Make sure we've broadcast the tx we expect (other channels shutting down can create
|
||||
# unrelated txs!)
|
||||
|
||||
# In theory this could have occurred before all the previous loglines appeared.
|
||||
l3.daemon.logsearch_start = 0
|
||||
line = l3.daemon.wait_for_log(r'Broadcasting OUR_PENALTY_TX \([0-9a-f]*\) to resolve THEIR_HTLC_TIMEOUT_TO_THEM/DELAYED_CHEAT_OUTPUT_TO_THEM')
|
||||
tx = re.search(r'\(([0-9a-f]*)\)', line).group(1)
|
||||
txid = bitcoind.rpc.decoderawtransaction(tx)['txid']
|
||||
bitcoind.generate_block(1, wait_for_mempool=[txid])
|
||||
l3.daemon.wait_for_log('Resolved THEIR_HTLC_TIMEOUT_TO_THEM/DELAYED_CHEAT_OUTPUT_TO_THEM '
|
||||
'by our proposal OUR_PENALTY_TX')
|
||||
l2.daemon.wait_for_log('Unknown spend of OUR_HTLC_TIMEOUT_TX/DELAYED_OUTPUT_TO_US')
|
||||
|
||||
Reference in New Issue
Block a user