mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 23:24:27 +01:00
pytest: Check that we forget irrevocably settled channels
Signed-off-by: Christian Decker <decker.christian@gmail.com>
This commit is contained in:
committed by
Rusty Russell
parent
9588c961bb
commit
7b0d806d71
@@ -56,6 +56,12 @@ def wait_for(success, timeout=30, interval=0.1):
|
|||||||
if time.time() > start_time + timeout:
|
if time.time() > start_time + timeout:
|
||||||
raise ValueError("Error waiting for {}", success)
|
raise ValueError("Error waiting for {}", success)
|
||||||
|
|
||||||
|
def wait_forget_channels(node):
|
||||||
|
"""This node is closing all of its channels, check we are forgetting them
|
||||||
|
"""
|
||||||
|
node.daemon.wait_for_log(r'onchaind complete, forgetting peer')
|
||||||
|
assert node.rpc.listpeers()['peers'] == []
|
||||||
|
assert node.db_query("SELECT * FROM channels") == []
|
||||||
|
|
||||||
def sync_blockheight(nodes):
|
def sync_blockheight(nodes):
|
||||||
target = bitcoind.rpc.getblockcount()
|
target = bitcoind.rpc.getblockcount()
|
||||||
@@ -868,6 +874,11 @@ 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 l1.rpc.listfunds()['outputs']])
|
||||||
assert closetxid in set([o['txid'] for o in l2.rpc.listfunds()['outputs']])
|
assert closetxid in set([o['txid'] for o in l2.rpc.listfunds()['outputs']])
|
||||||
|
|
||||||
|
# Make sure both have forgotten about it
|
||||||
|
l1.bitcoin.rpc.generate(100)
|
||||||
|
wait_forget_channels(l1)
|
||||||
|
wait_forget_channels(l2)
|
||||||
|
|
||||||
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
||||||
def test_permfail(self):
|
def test_permfail(self):
|
||||||
l1,l2 = self.connect()
|
l1,l2 = self.connect()
|
||||||
@@ -912,11 +923,11 @@ class LightningDTests(BaseLightningDTests):
|
|||||||
|
|
||||||
# 100 after l1 sees tx, it should be done.
|
# 100 after l1 sees tx, it should be done.
|
||||||
bitcoind.generate_block(95)
|
bitcoind.generate_block(95)
|
||||||
l1.daemon.wait_for_log('onchaind complete, forgetting peer')
|
wait_forget_channels(l1)
|
||||||
|
|
||||||
# Now, 100 blocks l2 should be done.
|
# Now, 100 blocks l2 should be done.
|
||||||
bitcoind.generate_block(5)
|
bitcoind.generate_block(5)
|
||||||
l2.daemon.wait_for_log('onchaind complete, forgetting peer')
|
wait_forget_channels(l2)
|
||||||
|
|
||||||
# Only l1 has a direct output since all of l2's outputs are respent (it failed)
|
# Only l1 has a direct output since all of l2's outputs are respent (it failed)
|
||||||
assert closetxid in set([o['txid'] for o in l1.rpc.listfunds()['outputs']])
|
assert closetxid in set([o['txid'] for o in l1.rpc.listfunds()['outputs']])
|
||||||
@@ -1276,7 +1287,7 @@ class LightningDTests(BaseLightningDTests):
|
|||||||
bitcoind.generate_block(100)
|
bitcoind.generate_block(100)
|
||||||
|
|
||||||
# FIXME: Test wallet balance...
|
# FIXME: Test wallet balance...
|
||||||
l2.daemon.wait_for_log('onchaind complete, forgetting peer')
|
wait_forget_channels(l2)
|
||||||
|
|
||||||
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
||||||
def test_permfail_new_commit(self):
|
def test_permfail_new_commit(self):
|
||||||
@@ -1311,8 +1322,8 @@ class LightningDTests(BaseLightningDTests):
|
|||||||
|
|
||||||
# Now, 100 blocks it should be done.
|
# Now, 100 blocks it should be done.
|
||||||
bitcoind.generate_block(100)
|
bitcoind.generate_block(100)
|
||||||
l1.daemon.wait_for_log('onchaind complete, forgetting peer')
|
wait_forget_channels(l1)
|
||||||
l2.daemon.wait_for_log('onchaind complete, forgetting peer')
|
wait_forget_channels(l2)
|
||||||
|
|
||||||
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
@unittest.skipIf(not DEVELOPER, "needs DEVELOPER=1")
|
||||||
def test_permfail_htlc_in(self):
|
def test_permfail_htlc_in(self):
|
||||||
@@ -1404,7 +1415,7 @@ class LightningDTests(BaseLightningDTests):
|
|||||||
bitcoind.generate_block(5)
|
bitcoind.generate_block(5)
|
||||||
assert not l2.daemon.is_in_log('onchaind complete, forgetting peer')
|
assert not l2.daemon.is_in_log('onchaind complete, forgetting peer')
|
||||||
bitcoind.generate_block(1)
|
bitcoind.generate_block(1)
|
||||||
l2.daemon.wait_for_log('onchaind complete, forgetting peer')
|
wait_forget_channels(l2)
|
||||||
|
|
||||||
def test_gossip_jsonrpc(self):
|
def test_gossip_jsonrpc(self):
|
||||||
l1, l2 = self.line_graph(n=2)
|
l1, l2 = self.line_graph(n=2)
|
||||||
|
|||||||
Reference in New Issue
Block a user