From ede05ecd405ba9eb9fa8cd378ed54a7495f364c6 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 22 Aug 2018 12:03:32 +0930 Subject: [PATCH] pytest: demonstrate feerate on restart bug. We don't update a channel's feerate on reestablishment: we insert a restart in test_onchain_different_fees() (which we'll need soon anyway) to show it. Signed-off-by: Rusty Russell --- tests/test_closing.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tests/test_closing.py b/tests/test_closing.py index 9d37c147c..be581f5ff 100644 --- a/tests/test_closing.py +++ b/tests/test_closing.py @@ -917,20 +917,26 @@ def test_onchain_all_dust(node_factory, bitcoind, executor): l1.daemon.wait_for_log('onchaind complete, forgetting peer') +@pytest.mark.xfail(strict=True) @unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1 for dev_fail") def test_onchain_different_fees(node_factory, bitcoind, executor): """Onchain handling when we've had a range of fees""" - l1, l2 = node_factory.line_graph(2, fundchannel=True, fundamount=10**7) + l1, l2 = node_factory.line_graph(2, fundchannel=True, fundamount=10**7, + opts={'may_reconnect': True}) l2.rpc.dev_ignore_htlcs(id=l1.info['id'], ignore=True) p1 = executor.submit(l1.pay, l2, 1000000000) l1.daemon.wait_for_log('htlc 0: RCVD_ADD_ACK_COMMIT->SENT_ADD_ACK_REVOCATION') - l1.rpc.dev_setfees('14000') + l1.set_feerates((16000, 7500, 3750)) p2 = executor.submit(l1.pay, l2, 900000000) l1.daemon.wait_for_log('htlc 1: RCVD_ADD_ACK_COMMIT->SENT_ADD_ACK_REVOCATION') - l1.rpc.dev_setfees('5000') + # Restart with different feerate for second HTLC. + l1.set_feerates((5000, 5000, 3750)) + l1.restart() + l1.daemon.wait_for_log('peer_out WIRE_UPDATE_FEE') + p3 = executor.submit(l1.pay, l2, 800000000) l1.daemon.wait_for_log('htlc 2: RCVD_ADD_ACK_COMMIT->SENT_ADD_ACK_REVOCATION') @@ -945,11 +951,11 @@ def test_onchain_different_fees(node_factory, bitcoind, executor): # Both sides should have correct feerate assert l1.db_query('SELECT min_possible_feerate, max_possible_feerate FROM channels;') == [{ 'min_possible_feerate': 5000, - 'max_possible_feerate': 14000 + 'max_possible_feerate': 16000 }] assert l2.db_query('SELECT min_possible_feerate, max_possible_feerate FROM channels;') == [{ 'min_possible_feerate': 5000, - 'max_possible_feerate': 14000 + 'max_possible_feerate': 16000 }] bitcoind.generate_block(5)