-
Notifications
You must be signed in to change notification settings - Fork 1k
Expand file tree
/
Copy pathtest_gossip_announcement.py
More file actions
71 lines (50 loc) · 2.29 KB
/
Copy pathtest_gossip_announcement.py
File metadata and controls
71 lines (50 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from fixtures import * # noqa: F401,F403
from pyln.testing.utils import wait_for
import time
import pytest
def test_channel_announcement_after_restart_with_saved_sigs(node_factory, bitcoind):
l1, l2 = node_factory.line_graph(
2,
fundchannel=True,
announce_channels=True,
wait_for_announce=False,
opts={'may_reconnect': True}
)
bitcoind.generate_block(6)
wait_for(lambda: l1.rpc.listpeerchannels(l2.info['id'])['channels'][0]['state'] == 'CHANNELD_NORMAL')
wait_for(lambda: l2.rpc.listpeerchannels(l1.info['id'])['channels'][0]['state'] == 'CHANNELD_NORMAL')
time.sleep(2)
channels_before = l1.rpc.listchannels()['channels']
scid = l1.rpc.listpeerchannels(l2.info['id'])['channels'][0]['short_channel_id']
print(f"Channel SCID: {scid}")
print(f"Channels before restart: {len(channels_before)}")
l1.rpc.disconnect(l2.info['id'], force=True)
l1.restart()
l1.rpc.connect(l2.info['id'], 'localhost', l2.port)
wait_for(lambda: l1.rpc.listpeerchannels(l2.info['id'])['channels'][0]['state'] == 'CHANNELD_NORMAL')
bitcoind.generate_block(6)
def channel_announced():
channels = l1.rpc.listchannels(scid)['channels']
return len(channels) == 2
wait_for(channel_announced, timeout=30)
channels = l1.rpc.listchannels(scid)['channels']
assert len(channels) == 2
print(f"SUCCESS: Both channel directions announced after restart!")
def test_channel_announcement_reconnect_without_restart(node_factory, bitcoind):
l1, l2 = node_factory.line_graph(
2,
fundchannel=True,
announce_channels=True,
wait_for_announce=True,
opts={'may_reconnect': True}
)
scid = l1.rpc.listpeerchannels(l2.info['id'])['channels'][0]['short_channel_id']
channels = l1.rpc.listchannels(scid)['channels']
assert len(channels) == 2
l1.rpc.disconnect(l2.info['id'], force=True)
time.sleep(1)
l1.rpc.connect(l2.info['id'], 'localhost', l2.port)
wait_for(lambda: l1.rpc.listpeerchannels(l2.info['id'])['channels'][0]['state'] == 'CHANNELD_NORMAL')
channels = l1.rpc.listchannels(scid)['channels']
assert len(channels) == 2
print(f"SUCCESS: Channel still announced after reconnect!")