mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-23 17:14:22 +01:00
pytest: Fix up test_partial_payment to use a single groupid
This commit is contained in:
committed by
Rusty Russell
parent
818a4d14cb
commit
bc089d3350
@@ -2731,37 +2731,92 @@ def test_partial_payment(node_factory, bitcoind, executor):
|
|||||||
r124 = l1.rpc.getroute(l4.info['id'], 499, 1, exclude=[scid34 + '/0', scid34 + '/1'])['route']
|
r124 = l1.rpc.getroute(l4.info['id'], 499, 1, exclude=[scid34 + '/0', scid34 + '/1'])['route']
|
||||||
|
|
||||||
# These can happen in parallel.
|
# These can happen in parallel.
|
||||||
l1.rpc.sendpay(route=r134, payment_hash=inv['payment_hash'], msatoshi=1000, bolt11=inv['bolt11'], payment_secret=paysecret, partid=1)
|
l1.rpc.sendpay(
|
||||||
|
route=r134,
|
||||||
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=1,
|
||||||
|
groupid=1
|
||||||
|
)
|
||||||
|
|
||||||
# Can't mix non-parallel payment!
|
# Can't mix non-parallel payment!
|
||||||
with pytest.raises(RpcError, match=r'Already have parallel payment in progress'):
|
with pytest.raises(RpcError, match=r'Already have parallel payment in progress'):
|
||||||
l1.rpc.sendpay(route=r124,
|
l1.rpc.sendpay(
|
||||||
payment_hash=inv['payment_hash'],
|
route=r124,
|
||||||
msatoshi=499,
|
payment_hash=inv['payment_hash'],
|
||||||
payment_secret=paysecret)
|
msatoshi=499,
|
||||||
|
payment_secret=paysecret,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
|
|
||||||
# It will not allow a parallel with different msatoshi!
|
# It will not allow a parallel with different msatoshi!
|
||||||
with pytest.raises(RpcError, match=r'msatoshi was previously 1000msat, now 999msat'):
|
with pytest.raises(RpcError, match=r'msatoshi was previously 1000msat, now 999msat'):
|
||||||
l1.rpc.sendpay(route=r124, payment_hash=inv['payment_hash'],
|
l1.rpc.sendpay(
|
||||||
msatoshi=999, bolt11=inv['bolt11'],
|
route=r124,
|
||||||
payment_secret=paysecret, partid=2)
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=999,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=2,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
|
|
||||||
# This will work fine.
|
# This will work fine.
|
||||||
l1.rpc.sendpay(route=r124, payment_hash=inv['payment_hash'],
|
l1.rpc.sendpay(
|
||||||
msatoshi=1000, bolt11=inv['bolt11'],
|
route=r124,
|
||||||
payment_secret=paysecret, partid=2)
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=2,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
|
|
||||||
# Any more would exceed total payment
|
# Any more would exceed total payment
|
||||||
with pytest.raises(RpcError, match=r'Already have 1000msat of 1000msat payments in progress'):
|
with pytest.raises(RpcError, match=r'Already have 1000msat of 1000msat payments in progress'):
|
||||||
l1.rpc.sendpay(route=r124, payment_hash=inv['payment_hash'],
|
l1.rpc.sendpay(
|
||||||
msatoshi=1000, bolt11=inv['bolt11'], payment_secret=paysecret, partid=3)
|
route=r124,
|
||||||
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=3,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
|
|
||||||
# But repeat is a NOOP, as long as they're exactly the same!
|
# But repeat is a NOOP, as long as they're exactly the same!
|
||||||
with pytest.raises(RpcError, match=r'Already pending with amount 501msat \(not 499msat\)'):
|
with pytest.raises(RpcError, match=r'Already pending with amount 501msat \(not 499msat\)'):
|
||||||
l1.rpc.sendpay(route=r124, payment_hash=inv['payment_hash'], msatoshi=1000, bolt11=inv['bolt11'], payment_secret=paysecret, partid=1)
|
l1.rpc.sendpay(
|
||||||
|
route=r124,
|
||||||
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=1,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
|
|
||||||
l1.rpc.sendpay(route=r134, payment_hash=inv['payment_hash'], msatoshi=1000, bolt11=inv['bolt11'], payment_secret=paysecret, partid=1)
|
l1.rpc.sendpay(
|
||||||
l1.rpc.sendpay(route=r124, payment_hash=inv['payment_hash'], msatoshi=1000, bolt11=inv['bolt11'], payment_secret=paysecret, partid=2)
|
route=r134,
|
||||||
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=1,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
l1.rpc.sendpay(
|
||||||
|
route=r124,
|
||||||
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=2,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
|
|
||||||
# Make sure they've done the suppress-commitment thing before we unsuppress
|
# Make sure they've done the suppress-commitment thing before we unsuppress
|
||||||
l2.daemon.wait_for_log(r'dev_disconnect')
|
l2.daemon.wait_for_log(r'dev_disconnect')
|
||||||
@@ -2790,12 +2845,27 @@ def test_partial_payment(node_factory, bitcoind, executor):
|
|||||||
assert pay['amount_sent_msat'] == Millisatoshi(1002)
|
assert pay['amount_sent_msat'] == Millisatoshi(1002)
|
||||||
|
|
||||||
# It will immediately succeed if we pay again.
|
# It will immediately succeed if we pay again.
|
||||||
pay = l1.rpc.sendpay(route=r124, payment_hash=inv['payment_hash'], msatoshi=1000, bolt11=inv['bolt11'], payment_secret=paysecret, partid=2)
|
pay = l1.rpc.sendpay(
|
||||||
|
route=r124,
|
||||||
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=2,
|
||||||
|
groupid=1,
|
||||||
|
)
|
||||||
assert pay['status'] == 'complete'
|
assert pay['status'] == 'complete'
|
||||||
|
|
||||||
# If we try with an unknown partid, it will refuse.
|
# If we try with an unknown partid, it will refuse.
|
||||||
with pytest.raises(RpcError, match=r'Already succeeded'):
|
with pytest.raises(RpcError, match=r'Already succeeded'):
|
||||||
l1.rpc.sendpay(route=r124, payment_hash=inv['payment_hash'], msatoshi=1000, bolt11=inv['bolt11'], payment_secret=paysecret, partid=3)
|
l1.rpc.sendpay(
|
||||||
|
route=r124,
|
||||||
|
payment_hash=inv['payment_hash'],
|
||||||
|
msatoshi=1000,
|
||||||
|
bolt11=inv['bolt11'],
|
||||||
|
payment_secret=paysecret,
|
||||||
|
partid=3,
|
||||||
|
groupid=1)
|
||||||
|
|
||||||
|
|
||||||
def test_partial_payment_timeout(node_factory, bitcoind):
|
def test_partial_payment_timeout(node_factory, bitcoind):
|
||||||
|
|||||||
Reference in New Issue
Block a user