mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-04 23:04:35 +01:00
pytest: test for whether we gossip spent channels.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -2226,6 +2226,51 @@ def test_gossip_private_updates(node_factory, bitcoind):
|
||||
wait_for(lambda: l1.daemon.is_in_log(r'gossip_store_compact_offline: 5 deleted, 3 copied'))
|
||||
|
||||
|
||||
@pytest.mark.xfail(strict=True)
|
||||
def test_gossip_not_dying(node_factory, bitcoind):
|
||||
l1 = node_factory.get_node()
|
||||
l2, l3 = node_factory.line_graph(2, wait_for_announce=True)
|
||||
|
||||
l1.rpc.connect(l2.info['id'], 'localhost', l2.port)
|
||||
# Wait until it sees all the updates, node announcments.
|
||||
wait_for(lambda: len([n for n in l1.rpc.listnodes()['nodes'] if 'alias' in n])
|
||||
+ len(l1.rpc.listchannels()['channels']) == 4)
|
||||
|
||||
def get_gossip(node):
|
||||
out = subprocess.run(['devtools/gossipwith',
|
||||
'--initial-sync',
|
||||
'--timeout-after=2',
|
||||
'{}@localhost:{}'.format(node.info['id'], node.port)],
|
||||
check=True,
|
||||
timeout=TIMEOUT, stdout=subprocess.PIPE).stdout
|
||||
|
||||
msgs = []
|
||||
while len(out):
|
||||
l, t = struct.unpack('>HH', out[0:4])
|
||||
msg = out[2:2 + l]
|
||||
out = out[2 + l:]
|
||||
|
||||
# Ignore pings, timestamp_filter
|
||||
if t == 265 or t == 18:
|
||||
continue
|
||||
# channel_announcement node_announcement or channel_update
|
||||
assert t == 256 or t == 257 or t == 258
|
||||
msgs.append(msg)
|
||||
|
||||
return msgs
|
||||
|
||||
assert len(get_gossip(l1)) == 5
|
||||
|
||||
# Close l2->l3, mine block.
|
||||
l2.rpc.close(l3.info['id'])
|
||||
bitcoind.generate_block(1, wait_for_mempool=1)
|
||||
|
||||
l1.daemon.wait_for_log("closing soon due to the funding outpoint being spent")
|
||||
|
||||
# We won't gossip the dead channel any more (but we still propagate node_announcement)
|
||||
assert len(get_gossip(l1)) == 2
|
||||
|
||||
|
||||
@pytest.mark.skip("Zombie research had unexpected side effects")
|
||||
@pytest.mark.developer("Needs --dev-fast-gossip, --dev-fast-gossip-prune")
|
||||
def test_channel_resurrection(node_factory, bitcoind):
|
||||
|
||||
Reference in New Issue
Block a user