mirror of
https://github.com/aljazceru/lightning.git
synced 2026-02-04 21:54:22 +01:00
pytest: adds skipped test_create_gossip_mesh
This can be adapted and used to create test gossip stores. The test is just skipped by design as it would fail on intention.
This commit is contained in:
committed by
Rusty Russell
parent
fb0027e314
commit
882cafd3c7
@@ -838,7 +838,7 @@ class LightningNode(object):
|
||||
)
|
||||
|
||||
def connect(self, remote_node):
|
||||
self.rpc.connect(remote_node.info['id'], '127.0.0.1', remote_node.daemon.port)
|
||||
self.rpc.connect(remote_node.info['id'], '127.0.0.1', remote_node.port)
|
||||
|
||||
def is_connected(self, remote_node):
|
||||
return remote_node.info['id'] in [p['id'] for p in self.rpc.listpeers()['peers']]
|
||||
@@ -846,6 +846,7 @@ class LightningNode(object):
|
||||
def openchannel(self, remote_node, capacity=FUNDAMOUNT, addrtype="bech32", confirm=True, wait_for_announce=True, connect=True):
|
||||
addr, wallettxid = self.fundwallet(10 * capacity, addrtype)
|
||||
|
||||
# connect if necessary
|
||||
if connect and not self.is_connected(remote_node):
|
||||
self.connect(remote_node)
|
||||
|
||||
@@ -892,7 +893,9 @@ class LightningNode(object):
|
||||
else:
|
||||
chan_capacity = total_capacity
|
||||
|
||||
self.rpc.connect(remote_node.info['id'], 'localhost', remote_node.port)
|
||||
# connect if necessary
|
||||
if not self.is_connected(remote_node):
|
||||
self.connect(remote_node)
|
||||
|
||||
res = self.rpc.fundchannel(remote_node.info['id'], chan_capacity, feerate='slow', minconf=0, announce=announce, push_msat=Millisatoshi(chan_capacity * 500))
|
||||
blockid = self.bitcoin.generate_block(1, wait_for_mempool=res['txid'])[0]
|
||||
@@ -994,6 +997,10 @@ class LightningNode(object):
|
||||
# Now we should.
|
||||
wait_for(lambda: has_funds_on_addr(addr))
|
||||
|
||||
# connect if necessary
|
||||
if not self.is_connected(l2):
|
||||
self.connect(l2)
|
||||
|
||||
# Now go ahead and open a channel
|
||||
res = self.rpc.fundchannel(l2.info['id'], amount,
|
||||
announce=announce_channel,
|
||||
|
||||
@@ -3102,3 +3102,48 @@ def test_hsm_capabilities(node_factory):
|
||||
l1 = node_factory.get_node()
|
||||
# This appears before the start message, so it'll already be present.
|
||||
assert l1.daemon.is_in_log(r"hsmd: capability \+WIRE_HSMD_CHECK_PUBKEY")
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Fails by intention for creating test gossip stores")
|
||||
def test_create_gossip_mesh(node_factory, bitcoind):
|
||||
"""
|
||||
Feel free to modify this test and remove the '@pytest.mark.skip' above.
|
||||
Run it to get a customized gossip store. It fails on purpose, see below.
|
||||
|
||||
This builds a small mesh
|
||||
|
||||
l1--l2--l3
|
||||
| | |
|
||||
l4--l5--l6
|
||||
| | |
|
||||
l7--l8--l9
|
||||
"""
|
||||
nodes = node_factory.get_nodes(9)
|
||||
nodeids = [n.info['id'] for n in nodes]
|
||||
|
||||
[l1, l2, l3, l4, l5, l6, l7, l8, l9] = nodes
|
||||
scid12, _ = l1.fundchannel(l2, wait_for_active=False, connect=True)
|
||||
scid14, _ = l1.fundchannel(l4, wait_for_active=False, connect=True)
|
||||
scid23, _ = l2.fundchannel(l3, wait_for_active=False, connect=True)
|
||||
scid25, _ = l2.fundchannel(l5, wait_for_active=False, connect=True)
|
||||
scid36, _ = l3.fundchannel(l6, wait_for_active=False, connect=True)
|
||||
scid45, _ = l4.fundchannel(l5, wait_for_active=False, connect=True)
|
||||
scid47, _ = l4.fundchannel(l7, wait_for_active=False, connect=True)
|
||||
scid56, _ = l5.fundchannel(l6, wait_for_active=False, connect=True)
|
||||
scid58, _ = l5.fundchannel(l8, wait_for_active=False, connect=True)
|
||||
scid69, _ = l6.fundchannel(l9, wait_for_active=False, connect=True)
|
||||
scid78, _ = l7.fundchannel(l8, wait_for_active=False, connect=True)
|
||||
scid89, _ = l8.fundchannel(l9, wait_for_active=False, connect=True)
|
||||
bitcoind.generate_block(10)
|
||||
|
||||
scids = [scid12, scid14, scid23, scid25, scid36, scid45, scid47, scid56,
|
||||
scid58, scid69, scid78, scid89]
|
||||
|
||||
# waits for all nodes to have all scids gossip active
|
||||
for n in nodes:
|
||||
for scid in scids:
|
||||
n.wait_channel_active(scid)
|
||||
|
||||
print("nodeids", nodeids)
|
||||
print("scids", scids)
|
||||
assert False, "Test failed on purpose, grab the gossip store from /tmp/ltests-..."
|
||||
|
||||
Reference in New Issue
Block a user