From d50722d26beaae803967c3690e454ff94093cf61 Mon Sep 17 00:00:00 2001 From: Michael Schmoock Date: Tue, 14 Feb 2023 16:32:13 +0100 Subject: [PATCH] pygossmap: adds a more complete mesh testcase --- .../tests/data/gossip_store.mesh-3x3.xz | Bin 0 -> 7376 bytes contrib/pyln-client/tests/test_gossmap.py | 55 ++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 contrib/pyln-client/tests/data/gossip_store.mesh-3x3.xz diff --git a/contrib/pyln-client/tests/data/gossip_store.mesh-3x3.xz b/contrib/pyln-client/tests/data/gossip_store.mesh-3x3.xz new file mode 100644 index 0000000000000000000000000000000000000000..1ed9a48cc233e8753e3215227bfb98e9fce81cc7 GIT binary patch literal 7376 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 CJ92yg literal 0 HcmV?d00001 diff --git a/contrib/pyln-client/tests/test_gossmap.py b/contrib/pyln-client/tests/test_gossmap.py index e83400320..5fa38ecc9 100644 --- a/contrib/pyln-client/tests/test_gossmap.py +++ b/contrib/pyln-client/tests/test_gossmap.py @@ -119,3 +119,58 @@ def test_objects(): assert boltz_node < acinq_node assert acinq_node > boltz_node assert boltz_node != acinq_node + + +def test_mesh(tmp_path): + """This gossip store is a nice mesh created with pyln-testing: + + l1--l2--l3 + | | | + l4--l5--l6 + | | | + l7--l8--l9 + """ + sfile = unxz_data_tmp("gossip_store.mesh-3x3.xz", tmp_path, "gossip_store", "xb") + g = Gossmap(sfile) + assert len(g.nodes) == 9 + assert len(g.channels) == 12 + + nodeids = ['0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518', + '022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59', + '035d2b1192dfba134e10e540875d366ebc8bc353d5aa766b80c090b39c3a5d885d', + '0382ce59ebf18be7d84677c2e35f23294b9992ceca95491fcf8a56c6cb2d9de199', + '032cf15d1ad9c4a08d26eab1918f732d8ef8fdc6abb9640bf3db174372c491304e', + '0265b6ab5ec860cd257865d61ef0bbf5b3339c36cbda8b26b74e7f1dca490b6518', + '0269f9862c311261241e5aee7abe0ec93c88613cc8f3c5f33cb1eea90d2bc4ddb6', + '03a7fd8070eea99341418fefe0b31086054d09cff64649eec3605db2340631c616', + '030eeb52087b9dbb27b7aec79ca5249369f6ce7b20a5684ce38d9f4595a21c2fda'] + scid12 = '103x1x0' + scid14 = '105x1x1' + scid23 = '107x1x1' + scid25 = '109x1x1' + scid36 = '111x1x0' + scid45 = '113x1x0' + scid47 = '115x1x1' + scid56 = '117x1x1' + scid58 = '119x1x0' + scid69 = '121x1x1' + scid78 = '123x1x1' + scid89 = '125x1x1' + scids = [scid12, scid14, scid23, scid25, scid36, scid45, scid47, scid56, + scid58, scid69, scid78, scid89] + + # check all nodes are there + for nodeid in nodeids: + node = g.get_node(nodeid) + assert node + assert str(node.node_id) == nodeid + for channel in node.channels: + assert str(channel.scid) in scids + + # assert all channels are there + for scid in scids: + channel = g.get_channel(scid) + assert channel + assert str(channel.scid) == scid + assert channel.half_channels[0] + assert channel.half_channels[1]