pytest: make dual-funding tests using option_anchors_zero_fee_htlc_tx.

They used to force option_anchor_outputs, so switch them.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2023-06-29 09:44:09 +09:30
parent 825173f1b4
commit f64188f925
3 changed files with 42 additions and 69 deletions

View File

@@ -4,8 +4,7 @@ from pyln.client import Millisatoshi
from db import Sqlite3Db
from fixtures import TEST_NETWORK
from utils import (
sync_blockheight, wait_for, only_one, first_channel_id, TIMEOUT,
anchor_expected
sync_blockheight, wait_for, only_one, first_channel_id, TIMEOUT
)
from pathlib import Path
@@ -337,7 +336,6 @@ def test_bookkeeping_rbf_withdraw(node_factory, bitcoind):
@pytest.mark.openchannel('v2')
@unittest.skipIf(os.getenv('TEST_DB_PROVIDER', 'sqlite3') != 'sqlite3', "turns off bookkeeper at start")
@unittest.skipIf(TEST_NETWORK != 'regtest', "network fees hardcoded")
@pytest.mark.developer("dev-force-features")
def test_bookkeeping_missed_chans_leases(node_factory, bitcoind):
"""
Test that a lease is correctly recorded if bookkeeper was off
@@ -347,10 +345,8 @@ def test_bookkeeping_missed_chans_leases(node_factory, bitcoind):
opts = {'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'plugin': str(coin_mvt_plugin),
'disable-plugin': 'bookkeeper'}
if not anchor_expected():
opts['dev-force-features'] = '+21'
'disable-plugin': 'bookkeeper',
'experimental-anchors': None}
l1, l2 = node_factory.get_nodes(2, opts=opts)

View File

@@ -738,20 +738,18 @@ def test_penalty_outhtlc(node_factory, bitcoind, executor, chainparams):
@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need')
@pytest.mark.openchannel('v2')
@pytest.mark.slow_test
@pytest.mark.developer("requres 'dev-queryrates', 'dev-force-features'")
@pytest.mark.developer("requres 'dev-queryrates'")
def test_channel_lease_falls_behind(node_factory, bitcoind):
'''
If our peer falls too far behind/doesn't send us an update for
their blockheight, the lessor fails the channel
'''
opts = [{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100},
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'experimental-anchors': None},
{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100}]
if not anchor_expected():
for opt in opts:
opt['dev-force-features'] = '+21'
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'experimental-anchors': None}]
l1, l2, = node_factory.get_nodes(2, opts=opts)
amount = 500000
@@ -781,7 +779,7 @@ def test_channel_lease_falls_behind(node_factory, bitcoind):
@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need')
@pytest.mark.openchannel('v2')
@pytest.mark.developer("requres 'dev-queryrates', 'dev-force-features'")
@pytest.mark.developer("requres 'dev-queryrates'")
@pytest.mark.slow_test
def test_channel_lease_post_expiry(node_factory, bitcoind, chainparams):
@@ -789,10 +787,8 @@ def test_channel_lease_post_expiry(node_factory, bitcoind, chainparams):
opts = {'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True, 'plugin': coin_mvt_plugin,
'dev-no-reconnect': None}
if not anchor_expected():
opts['dev-force-features'] = '+21'
'dev-no-reconnect': None,
'experimental-anchors': None}
l1, l2, = node_factory.get_nodes(2, opts=opts)
@@ -886,7 +882,7 @@ def test_channel_lease_post_expiry(node_factory, bitcoind, chainparams):
@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need')
@pytest.mark.openchannel('v2')
@pytest.mark.slow_test
@pytest.mark.developer("requres 'dev-queryrates', 'dev-force-features'")
@pytest.mark.developer("requres 'dev-queryrates'")
def test_channel_lease_unilat_closes(node_factory, bitcoind):
'''
Check that channel leases work
@@ -896,10 +892,8 @@ def test_channel_lease_unilat_closes(node_factory, bitcoind):
'''
opts = {'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'funder-lease-requests-only': False}
if not anchor_expected():
opts['dev-force-features'] = '+21'
'funder-lease-requests-only': False,
'experimental-anchors': None}
l1, l2, l3 = node_factory.get_nodes(3, opts=opts)
# Allow l2 some warnings
@@ -1001,7 +995,7 @@ def test_channel_lease_unilat_closes(node_factory, bitcoind):
@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need')
@pytest.mark.openchannel('v2')
@unittest.skipIf(os.getenv('TEST_DB_PROVIDER', 'sqlite3') != 'sqlite3', "Makes use of the sqlite3 db")
@pytest.mark.developer("requres 'dev-queryrates', 'dev-force-features'")
@pytest.mark.developer("requres 'dev-queryrates'")
def test_channel_lease_lessor_cheat(node_factory, bitcoind, chainparams):
'''
Check that lessee can recover funds if lessor cheats
@@ -1010,16 +1004,14 @@ def test_channel_lease_lessor_cheat(node_factory, bitcoind, chainparams):
opts = [{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True, 'allow_warning': True,
'experimental-anchors': None,
'plugin': balance_snaps},
{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True, 'allow_broken_log': True,
'experimental-anchors': None,
'plugin': balance_snaps}]
if not anchor_expected():
for opt in opts:
opt['dev-force-features'] = '+21'
l1, l2, = node_factory.get_nodes(2, opts=opts)
amount = 500000
feerate = 2000
@@ -1080,7 +1072,7 @@ def test_channel_lease_lessor_cheat(node_factory, bitcoind, chainparams):
@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need')
@pytest.mark.openchannel('v2')
@unittest.skipIf(os.getenv('TEST_DB_PROVIDER', 'sqlite3') != 'sqlite3', "Makes use of the sqlite3 db")
@pytest.mark.developer("requres 'dev-queryrates', dev-no-reconnect, dev-force-features")
@pytest.mark.developer("requres 'dev-queryrates', dev-no-reconnect")
def test_channel_lease_lessee_cheat(node_factory, bitcoind, chainparams):
'''
Check that lessor can recover funds if lessee cheats
@@ -1088,14 +1080,12 @@ def test_channel_lease_lessee_cheat(node_factory, bitcoind, chainparams):
opts = [{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True, 'dev-no-reconnect': None,
'allow_broken_log': True},
'allow_broken_log': True,
'experimental-anchors': None},
{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True, 'dev-no-reconnect': None}]
if not anchor_expected():
for opt in opts:
opt['dev-force-features'] = '+21'
'may_reconnect': True, 'dev-no-reconnect': None,
'experimental-anchors': None}]
l1, l2, = node_factory.get_nodes(2, opts=opts)
amount = 500000

View File

@@ -22,10 +22,8 @@ def find_next_feerate(node, peer):
@pytest.mark.developer("requres 'dev-queryrates' + 'dev-force-features'")
def test_queryrates(node_factory, bitcoind):
opts = {'dev-no-reconnect': None}
if not anchor_expected():
opts['dev-force-features'] = '+21'
opts = {'dev-no-reconnect': None,
'experimental-anchors': None}
l1, l2 = node_factory.get_nodes(2, opts=opts)
@@ -382,16 +380,13 @@ def test_v2_rbf_single(node_factory, bitcoind, chainparams):
@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need')
@pytest.mark.openchannel('v2')
@pytest.mark.developer("requres 'dev-force-features'")
def test_v2_rbf_liquidity_ad(node_factory, bitcoind, chainparams):
opts = {'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'experimental-anchors': None,
'may_reconnect': True}
if not anchor_expected():
opts['dev-force-features'] = '+21'
l1, l2 = node_factory.get_nodes(2, opts=opts)
# what happens when we RBF?
@@ -1266,21 +1261,19 @@ def test_funder_contribution_limits(node_factory, bitcoind):
@pytest.mark.openchannel('v2')
@pytest.mark.developer("requres 'dev-disconnect', 'dev-force-features'")
@pytest.mark.developer("requres 'dev-disconnect'")
def test_inflight_dbload(node_factory, bitcoind):
"""Bad db field access breaks Postgresql on startup with opening leases"""
disconnects = ["@WIRE_COMMITMENT_SIGNED"]
opts = [{'experimental-dual-fund': None, 'dev-no-reconnect': None,
'may_reconnect': True, 'disconnect': disconnects},
'may_reconnect': True, 'disconnect': disconnects,
'experimental-anchors': None},
{'experimental-dual-fund': None, 'dev-no-reconnect': None,
'may_reconnect': True, 'funder-policy': 'match',
'funder-policy-mod': 100, 'lease-fee-base-sat': '100sat',
'lease-fee-basis': 100}]
if not anchor_expected():
for opt in opts:
opt['dev-force-features'] = '+21'
'lease-fee-basis': 100,
'experimental-anchors': None}]
l1, l2 = node_factory.get_nodes(2, opts=opts)
@@ -1578,7 +1571,6 @@ def test_buy_liquidity_ad_no_v2(node_factory, bitcoind):
@pytest.mark.openchannel('v2')
@pytest.mark.developer("dev-force-features required")
def test_v2_replay_bookkeeping(node_factory, bitcoind):
""" Test that your bookkeeping for a liquidity ad is good
even if we replay the opening and locking tx!
@@ -1586,14 +1578,12 @@ def test_v2_replay_bookkeeping(node_factory, bitcoind):
opts = [{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'rescan': 10, 'funding-confirms': 6, 'may_reconnect': True},
'rescan': 10, 'funding-confirms': 6, 'may_reconnect': True,
'experimental-anchors': None},
{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True}]
if not anchor_expected():
for opt in opts:
opt['dev-force-features'] = '+21'
'may_reconnect': True,
'experimental-anchors': None}]
l1, l2, = node_factory.get_nodes(2, opts=opts)
amount = 500000
@@ -1645,21 +1635,18 @@ def test_v2_replay_bookkeeping(node_factory, bitcoind):
@pytest.mark.openchannel('v2')
@pytest.mark.developer("dev-force-features required")
def test_buy_liquidity_ad_check_bookkeeping(node_factory, bitcoind):
""" Test that your bookkeeping for a liquidity ad is good."""
opts = [{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'rescan': 10, 'disable-plugin': 'bookkeeper',
'funding-confirms': 6, 'may_reconnect': True},
'funding-confirms': 6, 'may_reconnect': True,
'experimental-anchors': None},
{'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True}]
if not anchor_expected():
for opt in opts:
opt['dev-force-features'] = '+21'
'may_reconnect': True,
'experimental-anchors': None}]
l1, l2, = node_factory.get_nodes(2, opts=opts)
amount = 500000
@@ -2141,17 +2128,17 @@ def test_openchannel_no_unconfirmed_inputs_accepter(node_factory, bitcoind):
@unittest.skip("anchors not available")
@pytest.mark.developer("dev-force-features, dev-queryrates required")
@pytest.mark.developer("dev-queryrates required")
@pytest.mark.openchannel('v2')
def test_no_anchor_liquidity_ads(node_factory, bitcoind):
""" Liquidity ads requires anchors, which are no longer a
requirement for dual-funded channels. """
l1_opts = {'funder-policy': 'match', 'funder-policy-mod': 100,
l2_opts = {'funder-policy': 'match', 'funder-policy-mod': 100,
'lease-fee-base-sat': '100sat', 'lease-fee-basis': 100,
'may_reconnect': True, 'funder-lease-requests-only': False}
l2_opts = l1_opts.copy()
l2_opts['dev-force-features'] = ["-21"]
l1_opts = l2_opts.copy()
l1_opts['experimental-anchors'] = None
l1, l2 = node_factory.get_nodes(2, opts=[l1_opts, l2_opts])
feerate = 2000