1
0

config/regtest: add config to disable automatic fee updates

Some regtest tests depend on manual fee injection to simulate certain
mempool conditions (e.g. lnwatcher_waits_until_fees_go_down). This is
done by manually injecting fee estimates into the `Network` object using
the `test_inject_fee_etas` cli command. However it can still happen that
the Network automatically updates its fee estimates from the connected
electrum server in the time between injecting the fee and the actual
tested logic making decisions based on the fee. This causes the test to
fail sometimes.
By setting the `test_disable_automatic_fee_eta_update` true the Network
will stop automatically updating the fee estimates and the test will
behave as expected.
This commit is contained in:
f321x
2025-10-31 13:31:10 +01:00
parent 19e32d6054
commit 76f69676d3
4 changed files with 6 additions and 0 deletions

View File

@@ -1624,6 +1624,8 @@ class Commands(Logger):
async def test_inject_fee_etas(self, fee_est):
"""
Inject fee estimates into the network object, as if they were coming from connected servers.
`setconfig 'test_disable_automatic_fee_eta_update' true` to prevent Network from overriding
the configured fees.
Useful on regtest.
arg:str:fee_est:dict of ETA-based fee estimates, encoded as str

View File

@@ -612,6 +612,8 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
def update_fee_estimates(self, *, fee_est: Dict[int, int] = None):
if fee_est is None:
if self.config.TEST_DISABLE_AUTOMATIC_FEE_ETA_UPDATE:
return
fee_est = self.get_fee_estimates()
for nblock_target, fee in fee_est.items():
self.fee_estimates.set_data(nblock_target, fee)

View File

@@ -775,6 +775,7 @@ Warning: setting this to too low will result in lots of payment failures."""),
FEE_POLICY = ConfigVar('fee_policy.default', default='eta:2', type_=str) # exposed to GUI
FEE_POLICY_LIGHTNING = ConfigVar('fee_policy.lnwatcher', default='eta:2', type_=str) # for txbatcher (sweeping)
FEE_POLICY_SWAPS = ConfigVar('fee_policy.swaps', default='eta:2', type_=str) # for txbatcher (sweeping and sending if we are a swapserver)
TEST_DISABLE_AUTOMATIC_FEE_ETA_UPDATE = ConfigVar('test_disable_automatic_fee_eta_update', default=False, type_=bool)
RPC_USERNAME = ConfigVar('rpcuser', default=None, type_=str)
RPC_PASSWORD = ConfigVar('rpcpassword', default=None, type_=str)

View File

@@ -331,6 +331,7 @@ if [[ $1 == "lnwatcher_waits_until_fees_go_down" ]]; then
$alice setconfig test_force_disable_mpp true
$alice setconfig test_force_mpp false
wait_for_balance alice 1
$alice setconfig test_disable_automatic_fee_eta_update true
$alice test_inject_fee_etas "{2:1000}"
$bob test_inject_fee_etas "{2:1000}"
echo "alice opens channel"