Skip to content

Commit 3eeff79

Browse files
committed
pytest: make test_peer_anchor_push robust against short sig generation.
This happens one time in 256: ``` 2025-05-06T11:00:43.2201832Z > assert feerate - 1 < total_feerate_perkw < feerate + 1 2025-05-06T11:00:43.2202133Z E assert 12005.233318796338 < (12000 + 1) ``` Signed-off-by: Rusty Russell <[email protected]>
1 parent 58bfbca commit 3eeff79

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

tests/test_closing.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
scriptpubkey_addr, calc_lease_fee,
99
check_utxos_channel, check_coin_moves,
1010
mine_funding_to_announce, check_inspect_channel,
11-
first_scid
11+
first_scid, check_feerate
1212
)
1313

1414
import bitcoin
@@ -3984,7 +3984,9 @@ def test_closing_minfee(node_factory, bitcoind):
39843984
def test_peer_anchor_push(node_factory, bitcoind, executor, chainparams):
39853985
"""Test that we use anchor on peer's commit to CPFP tx"""
39863986
l1, l2, l3 = node_factory.line_graph(3, opts=[{},
3987-
{'min-emergency-msat': 546000},
3987+
{'min-emergency-msat': 546000,
3988+
'dev-warn-on-overgrind': None,
3989+
'broken_log': 'overgrind: short signature length'},
39883990
{'disconnect': ['-WIRE_UPDATE_FULFILL_HTLC']}],
39893991
wait_for_announce=True)
39903992

@@ -4048,7 +4050,7 @@ def test_peer_anchor_push(node_factory, bitcoind, executor, chainparams):
40484050
total_weight = sum([d['weight'] for d in details])
40494051
total_fees = sum([float(d['fees']['base']) * 100_000_000 for d in details])
40504052
total_feerate_perkw = total_fees / total_weight * 1000
4051-
assert feerate - 1 < total_feerate_perkw < feerate + 1
4053+
check_feerate(l2, total_feerate_perkw, feerate)
40524054
bitcoind.generate_block(1, needfeerate=16000)
40534055
sync_blockheight(bitcoind, [l2])
40544056
assert len(bitcoind.rpc.getrawmempool()) == 2

tests/test_wallet.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from utils import (
77
only_one, wait_for, sync_blockheight,
88
VALGRIND, check_coin_moves, TailableProc, scriptpubkey_addr,
9-
check_utxos_channel
9+
check_utxos_channel, check_feerate, did_short_sig
1010
)
1111

1212
import os
@@ -304,21 +304,6 @@ def feerate_from_psbt(chainparams, bitcoind, node, psbt):
304304
return fee / weight * 1000
305305

306306

307-
# I wish we could force libwally to use different entropy and thus force it to
308-
# create 71-byte sigs always!
309-
def did_short_sig(node):
310-
# This can take a moment to appear in the log!
311-
time.sleep(1)
312-
return node.daemon.is_in_log('overgrind: short signature length')
313-
314-
315-
def check_feerate(node, actual_feerate, expected_feerate):
316-
# Feerate can't be lower.
317-
assert actual_feerate > expected_feerate - 2
318-
if not did_short_sig(node):
319-
assert actual_feerate < expected_feerate + 2
320-
321-
322307
def test_txprepare(node_factory, bitcoind, chainparams):
323308
amount = 1000000
324309
l1 = node_factory.get_node(random_hsm=True, options={'dev-warn-on-overgrind': None},

tests/utils.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,3 +658,18 @@ def serialize_payload_final_tlv(amount_msat, delay, total_msat, blockheight, pay
658658
# * [`tu64`:`total_msat`]
659659
payload.add_field(8, bytes.fromhex(payment_secret) + tu64_encode(int(total_msat)))
660660
return payload.to_bytes()
661+
662+
663+
# I wish we could force libwally to use different entropy and thus force it to
664+
# create 71-byte sigs always!
665+
def did_short_sig(node):
666+
# This can take a moment to appear in the log!
667+
time.sleep(1)
668+
return node.daemon.is_in_log('overgrind: short signature length')
669+
670+
671+
def check_feerate(node, actual_feerate, expected_feerate):
672+
# Feerate can't be lower.
673+
assert actual_feerate > expected_feerate - 2
674+
if not did_short_sig(node):
675+
assert actual_feerate < expected_feerate + 2

0 commit comments

Comments
 (0)