mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-22 16:44:20 +01:00
channel_states: fold all the ONCHAIND states into one.
The billboard is now far more useful to tell what's going on, and this gets us closer to a state == owner mapping. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
866ba00445
commit
cccdb53bec
@@ -1052,10 +1052,10 @@ class LightningDTests(BaseLightningDTests):
|
||||
assert closetxid in set([o['txid'] for o in l1.rpc.listfunds()['outputs']])
|
||||
assert closetxid in set([o['txid'] for o in l2.rpc.listfunds()['outputs']])
|
||||
|
||||
wait_for(lambda: l1.rpc.listpeers(l2.info['id'])['peers'][0]['channels'][0]['status'] == ['CLOSINGD_SIGEXCHANGE:We agreed on a closing fee of 5430 satoshi', 'ONCHAIND_MUTUAL:Tracking mutual close transaction', 'ONCHAIND_MUTUAL:All outputs resolved: waiting 99 more blocks before forgetting channel'])
|
||||
wait_for(lambda: l1.rpc.listpeers(l2.info['id'])['peers'][0]['channels'][0]['status'] == ['CLOSINGD_SIGEXCHANGE:We agreed on a closing fee of 5430 satoshi', 'ONCHAIND:Tracking mutual close transaction', 'ONCHAIND_MUTUAL:All outputs resolved: waiting 99 more blocks before forgetting channel'])
|
||||
|
||||
l1.bitcoin.rpc.generate(9)
|
||||
wait_for(lambda: l1.rpc.listpeers(l2.info['id'])['peers'][0]['channels'][0]['status'] == ['CLOSINGD_SIGEXCHANGE:We agreed on a closing fee of 5430 satoshi', 'ONCHAIND_MUTUAL:Tracking mutual close transaction', 'ONCHAIND_MUTUAL:All outputs resolved: waiting 90 more blocks before forgetting channel'])
|
||||
wait_for(lambda: l1.rpc.listpeers(l2.info['id'])['peers'][0]['channels'][0]['status'] == ['CLOSINGD_SIGEXCHANGE:We agreed on a closing fee of 5430 satoshi', 'ONCHAIND:Tracking mutual close transaction', 'ONCHAIND_MUTUAL:All outputs resolved: waiting 90 more blocks before forgetting channel'])
|
||||
|
||||
# Make sure both have forgotten about it
|
||||
l1.bitcoin.rpc.generate(90)
|
||||
@@ -1131,9 +1131,9 @@ class LightningDTests(BaseLightningDTests):
|
||||
|
||||
bitcoind.generate_block(1)
|
||||
for p in peers:
|
||||
p.daemon.wait_for_log(' to ONCHAIND_MUTUAL')
|
||||
|
||||
l1.daemon.wait_for_logs([' to ONCHAIND_MUTUAL'] * num_peers)
|
||||
p.daemon.wait_for_log(' to ONCHAIN')
|
||||
wait_for(lambda: p.rpc.listpeers(l1.info['id'])['peers'][0]['channels'][0]['status'][1] == 'ONCHAIND:Tracking mutual close transaction')
|
||||
l1.daemon.wait_for_logs([' to ONCHAIN'] * num_peers)
|
||||
|
||||
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
||||
def test_permfail(self):
|
||||
@@ -1166,19 +1166,19 @@ class LightningDTests(BaseLightningDTests):
|
||||
bitcoind.generate_block(1)
|
||||
|
||||
l1.daemon.wait_for_log('Their unilateral tx, old commit point')
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log('Propose handling OUR_UNILATERAL/DELAYED_OUTPUT_TO_US by OUR_DELAYED_RETURN_TO_WALLET (.*) in 5 blocks')
|
||||
|
||||
wait_for(lambda: l1.rpc.listpeers(l2.info['id'])['peers'][0]['channels'][0]['status']
|
||||
== ['CHANNELD_NORMAL:Received error from peer: channel ALL: Internal error: Failing due to dev-fail command',
|
||||
'ONCHAIND_THEIR_UNILATERAL:Tracking their unilateral close',
|
||||
'ONCHAIND_THEIR_UNILATERAL:All outputs resolved: waiting 99 more blocks before forgetting channel'])
|
||||
'ONCHAIND:Tracking their unilateral close',
|
||||
'ONCHAIND:All outputs resolved: waiting 99 more blocks before forgetting channel'])
|
||||
|
||||
billboard = l2.rpc.listpeers(l1.info['id'])['peers'][0]['channels'][0]['status']
|
||||
assert len(billboard) == 2
|
||||
assert billboard[0] == 'ONCHAIND_OUR_UNILATERAL:Tracking our own unilateral close'
|
||||
assert re.fullmatch('ONCHAIND_OUR_UNILATERAL:.* outputs unresolved: in 4 blocks will spend DELAYED_OUTPUT_TO_US \(.*:0\) using OUR_DELAYED_RETURN_TO_WALLET', billboard[1])
|
||||
assert billboard[0] == 'ONCHAIND:Tracking our own unilateral close'
|
||||
assert re.fullmatch('ONCHAIND:.* outputs unresolved: in 4 blocks will spend DELAYED_OUTPUT_TO_US \(.*:0\) using OUR_DELAYED_RETURN_TO_WALLET', billboard[1])
|
||||
|
||||
# Now, mine 4 blocks so it sends out the spending tx.
|
||||
bitcoind.generate_block(4)
|
||||
@@ -1191,7 +1191,7 @@ class LightningDTests(BaseLightningDTests):
|
||||
bitcoind.generate_block(95)
|
||||
wait_forget_channels(l1)
|
||||
|
||||
wait_for(lambda: l2.rpc.listpeers(l1.info['id'])['peers'][0]['channels'][0]['status'] == ['ONCHAIND_OUR_UNILATERAL:Tracking our own unilateral close', 'ONCHAIND_OUR_UNILATERAL:All outputs resolved: waiting 5 more blocks before forgetting channel'], timeout=1)
|
||||
wait_for(lambda: l2.rpc.listpeers(l1.info['id'])['peers'][0]['channels'][0]['status'] == ['ONCHAIND:Tracking our own unilateral close', 'ONCHAIND:All outputs resolved: waiting 5 more blocks before forgetting channel'], timeout=1)
|
||||
|
||||
# Now, 100 blocks l2 should be done.
|
||||
bitcoind.generate_block(5)
|
||||
@@ -1226,8 +1226,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l1.daemon.wait_for_log('permfail')
|
||||
l1.daemon.wait_for_log('sendrawtx exit 0')
|
||||
l1.bitcoin.generate_block(1)
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
# 10 later, l1 should collect its to-self payment.
|
||||
bitcoind.generate_block(10)
|
||||
@@ -1255,8 +1255,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l1.daemon.wait_for_log('sendrawtx exit 0')
|
||||
|
||||
l1.bitcoin.generate_block(1)
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
# 10 later, l1 should collect its to-self payment.
|
||||
bitcoind.generate_block(10)
|
||||
@@ -1316,8 +1316,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l1.daemon.wait_for_log('permfail')
|
||||
l1.daemon.wait_for_log('sendrawtx exit 0')
|
||||
l1.bitcoin.generate_block(1)
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
# We use 3 blocks for "reasonable depth"
|
||||
bitcoind.generate_block(3)
|
||||
@@ -1369,8 +1369,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l1.daemon.wait_for_log('permfail')
|
||||
l1.daemon.wait_for_log('sendrawtx exit 0')
|
||||
l1.bitcoin.generate_block(1)
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
# Wait for timeout.
|
||||
l1.daemon.wait_for_log('Propose handling OUR_UNILATERAL/DELAYED_OUTPUT_TO_US by OUR_DELAYED_RETURN_TO_WALLET .* in 5 blocks')
|
||||
@@ -1448,8 +1448,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
# l2 will drop to chain.
|
||||
l2.daemon.wait_for_log('sendrawtx exit 0')
|
||||
l1.bitcoin.generate_block(1)
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log('OUR_UNILATERAL/THEIR_HTLC')
|
||||
|
||||
# l2 should fulfill HTLC onchain, and spend to-us (any order)
|
||||
@@ -1524,7 +1524,7 @@ class LightningDTests(BaseLightningDTests):
|
||||
bitcoind.rpc.sendrawtransaction(tx)
|
||||
bitcoind.generate_block(1)
|
||||
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_CHEATED')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
# FIXME: l1 should try to stumble along!
|
||||
wait_for(lambda: len(l2.getactivechannels()) == 0)
|
||||
|
||||
@@ -1587,7 +1587,7 @@ class LightningDTests(BaseLightningDTests):
|
||||
bitcoind.rpc.sendrawtransaction(tx)
|
||||
bitcoind.generate_block(1)
|
||||
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_CHEATED')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
# FIXME: l1 should try to stumble along!
|
||||
|
||||
# l2 should spend all of the outputs (except to-us).
|
||||
@@ -1623,8 +1623,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l2.daemon.wait_for_log('sendrawtx exit 0')
|
||||
bitcoind.generate_block(1)
|
||||
l1.daemon.wait_for_log('Their unilateral tx, new commit point')
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log('Propose handling OUR_UNILATERAL/THEIR_HTLC by THEIR_HTLC_TIMEOUT_TO_THEM \\(IGNORING\\) in 5 blocks')
|
||||
l1.daemon.wait_for_log('Propose handling THEIR_UNILATERAL/OUR_HTLC by OUR_HTLC_TIMEOUT_TO_US (.*) in 5 blocks')
|
||||
|
||||
@@ -1659,8 +1659,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l2.daemon.wait_for_log('sendrawtx exit 0')
|
||||
bitcoind.generate_block(1)
|
||||
l1.daemon.wait_for_log('Their unilateral tx, old commit point')
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log('Propose handling OUR_UNILATERAL/THEIR_HTLC by THEIR_HTLC_TIMEOUT_TO_THEM \\(IGNORING\\) in 5 blocks')
|
||||
l1.daemon.wait_for_log('Propose handling THEIR_UNILATERAL/OUR_HTLC by OUR_HTLC_TIMEOUT_TO_US (.*) in 5 blocks')
|
||||
# l2 then gets preimage, uses it instead of ignoring
|
||||
@@ -1701,8 +1701,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l2.daemon.wait_for_log('sendrawtx exit 0')
|
||||
bitcoind.generate_block(1)
|
||||
l1.daemon.wait_for_log('Their unilateral tx, old commit point')
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_logs(['Propose handling OUR_UNILATERAL/OUR_HTLC by OUR_HTLC_TIMEOUT_TX \\(.*\\) in 5 blocks',
|
||||
'Propose handling OUR_UNILATERAL/DELAYED_OUTPUT_TO_US by OUR_DELAYED_RETURN_TO_WALLET .* in 5 blocks'])
|
||||
|
||||
@@ -2277,8 +2277,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l1.daemon.wait_for_log('Offered HTLC 0 SENT_ADD_ACK_REVOCATION cltv .* hit deadline')
|
||||
l1.daemon.wait_for_log('sendrawtx exit 0')
|
||||
l1.bitcoin.generate_block(1)
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
# L1 will timeout HTLC immediately
|
||||
l1.daemon.wait_for_logs(['Propose handling OUR_UNILATERAL/OUR_HTLC by OUR_HTLC_TIMEOUT_TX .* in 0 blocks',
|
||||
@@ -2332,8 +2332,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l2.daemon.wait_for_log('Fulfilled HTLC 0 SENT_REMOVE_COMMIT cltv .* hit deadline')
|
||||
l2.daemon.wait_for_log('sendrawtx exit 0')
|
||||
l2.bitcoin.generate_block(1)
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_OUR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
# L2 will collect HTLC
|
||||
l2.daemon.wait_for_log('Propose handling OUR_UNILATERAL/THEIR_HTLC by OUR_HTLC_SUCCESS_TX .* in 0 blocks')
|
||||
@@ -3016,7 +3016,7 @@ class LightningDTests(BaseLightningDTests):
|
||||
bitcoind.generate_block(1)
|
||||
|
||||
# L1 must notice.
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_THEIR_UNILATERAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
||||
def test_payment_success_persistence(self):
|
||||
@@ -3294,8 +3294,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l2.daemon.wait_for_log('sendrawtx exit 0')
|
||||
|
||||
bitcoind.generate_block(1)
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_MUTUAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_MUTUAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
bitcoind.generate_block(99)
|
||||
l1.daemon.wait_for_log('onchaind complete, forgetting peer')
|
||||
@@ -3410,8 +3410,8 @@ class LightningDTests(BaseLightningDTests):
|
||||
l2.daemon.wait_for_log('sendrawtx exit 0')
|
||||
|
||||
bitcoind.generate_block(1)
|
||||
l1.daemon.wait_for_log(' to ONCHAIND_MUTUAL')
|
||||
l2.daemon.wait_for_log(' to ONCHAIND_MUTUAL')
|
||||
l1.daemon.wait_for_log(' to ONCHAIN')
|
||||
l2.daemon.wait_for_log(' to ONCHAIN')
|
||||
|
||||
bitcoind.generate_block(99)
|
||||
l1.daemon.wait_for_log('onchaind complete, forgetting peer')
|
||||
|
||||
Reference in New Issue
Block a user