Add tests for peer information containing alias

This commit is contained in:
John Barboza 2018-03-01 10:33:52 -05:00 committed by Rusty Russell
parent b50912d8b1
commit 35ce13179c

View File

@ -3731,6 +3731,40 @@ class LightningDTests(BaseLightningDTests):
l1.restart()
assert len(l1.rpc.listpeers()['peers']) == 0
def test_peerinfo(self):
l1, l2 = self.connect()
# Gossiping but no node announcement yet
assert l1.rpc.getpeer(l2.info['id'])['state'] == "GOSSIPING"
assert 'alias' not in l1.rpc.getpeer(l2.info['id'])
assert 'color' not in l1.rpc.getpeer(l2.info['id'])
# Fund a channel to force a node announcement
self.fund_channel(l1, l2, 10**6)
# Now proceed to funding-depth and do a full gossip round
bitcoind.generate_block(5)
l1.daemon.wait_for_logs(['Received node_announcement for node ' + l2.info['id']])
# With the node announcement, ensure we see that information in the peer info
assert l1.rpc.getpeer(l2.info['id'])['alias'] == l1.rpc.listnodes(l2.info['id'])['nodes'][0]['alias']
assert l1.rpc.getpeer(l2.info['id'])['color'] == l1.rpc.listnodes(l2.info['id'])['nodes'][0]['color']
# Close the channel to forget the peer
l1.rpc.close(l2.info['id'])
l1.daemon.wait_for_log('Forgetting remote peer')
bitcoind.generate_block(100)
l1.daemon.wait_for_log('WIRE_ONCHAIN_ALL_IRREVOCABLY_RESOLVED')
# Reconnect
l1.rpc.connect(l2.info['id'], 'localhost', l2.info['port'])
l1.daemon.wait_for_log('WIRE_GOSSIP_PEER_CONNECTED')
# This time we already know about this node. So the node information appears even in
# GOSSIPING state
assert l1.rpc.getpeer(l2.info['id'])['state'] == "GOSSIPING"
assert l1.rpc.getpeer(l2.info['id'])['alias'] == l1.rpc.listnodes(l2.info['id'])['nodes'][0]['alias']
assert l1.rpc.getpeer(l2.info['id'])['color'] == l1.rpc.listnodes(l2.info['id'])['nodes'][0]['color']
if __name__ == '__main__':
unittest.main(verbosity=2)