diff --git a/tests/test_connection.py b/tests/test_connection.py index 99c0d811c..22cc3e259 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1690,3 +1690,26 @@ def test_change_chaining(node_factory, bitcoind): with pytest.raises(RpcError): l1.rpc.fundchannel(l3.info['id'], 10**7) # Defaults to minconf=1 l1.rpc.fundchannel(l3.info['id'], 10**7, minconf=0) + + +@pytest.mark.xfail(strict=True) +def test_feerate_spam(node_factory): + l1, l2 = node_factory.line_graph(2) + + # Pay almost everything to l2. + l1.pay(l2, 10**9 - 25000000) + + # It will send this once (may have happened before line_graph's wait) + wait_for(lambda: l1.daemon.is_in_log('Setting REMOTE feerate to 15000')) + wait_for(lambda: l1.daemon.is_in_log('peer_out WIRE_UPDATE_FEE')) + + # Now change feerates to something l1 can't afford. + l1.set_feerates((100000, 100000, 100000)) + + # It will raise as far as it can (20000) + l1.daemon.wait_for_log('Setting REMOTE feerate to 20000') + l1.daemon.wait_for_log('peer_out WIRE_UPDATE_FEE') + + # But it won't do it again once it's at max. + with pytest.raises(TimeoutError): + l1.daemon.wait_for_log('peer_out WIRE_UPDATE_FEE', timeout=5)