pytest: fix flake in test_routing_gossip.
If we mine too fast, gossip can reach a node which considers it too far in the guture. Break it up. ``` @pytest.mark.developer("Too slow without --dev-fast-gossip") def test_routing_gossip(node_factory, bitcoind): nodes = node_factory.get_nodes(5) for i in range(len(nodes) - 1): src, dst = nodes[i], nodes[i + 1] src.rpc.connect(dst.info['id'], 'localhost', dst.port) src.openchannel(dst, CHANNEL_SIZE, confirm=False, wait_for_announce=False) # openchannel calls fundwallet which mines a block; so first channel # is 4 deep, last is unconfirmed. # Allow announce messages. mine_funding_to_announce(bitcoind, nodes, num_blocks=6, wait_for_mempool=1) # Deep check that all channels are in there comb = [] for i in range(len(nodes) - 1): comb.append((nodes[i].info['id'], nodes[i + 1].info['id'])) comb.append((nodes[i + 1].info['id'], nodes[i].info['id'])) def check_gossip(n): seen = [] channels = n.rpc.listchannels()['channels'] for c in channels: seen.append((c['source'], c['destination'])) missing = set(comb) - set(seen) logging.debug("Node {id} is missing channels {chans}".format( id=n.info['id'], chans=missing) ) return len(missing) == 0 for n in nodes: > wait_for(lambda: check_gossip(n)) tests/test_gossip.py:721: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ success = <function test_routing_gossip.<locals>.<lambda> at 0x7f3200534ef0> timeout = 180 def wait_for(success, timeout=TIMEOUT): start_time = time.time() interval = 0.25 while not success(): time_left = start_time + timeout - time.time() if time_left <= 0: > raise ValueError("Timeout while waiting for {}".format(success)) E ValueError: Timeout while waiting for <function test_routing_gossip.<locals>.<lambda> at 0x7f3200534ef0>
This commit is contained in:
parent
b197b713be
commit
4b9537730b
|
@ -696,8 +696,10 @@ def test_routing_gossip(node_factory, bitcoind):
|
|||
# openchannel calls fundwallet which mines a block; so first channel
|
||||
# is 4 deep, last is unconfirmed.
|
||||
|
||||
# Allow announce messages.
|
||||
mine_funding_to_announce(bitcoind, nodes, num_blocks=6, wait_for_mempool=1)
|
||||
# Allow announce messages, but don't run too fast, otherwise gossip can be in the future for nodes.
|
||||
sync_blockheight(bitcoind, nodes)
|
||||
bitcoind.generate_block(wait_for_mempool=1)
|
||||
mine_funding_to_announce(bitcoind, nodes)
|
||||
|
||||
# Deep check that all channels are in there
|
||||
comb = []
|
||||
|
|
Loading…
Reference in New Issue