Skip to content

Commit

Permalink
channeld: Add aggressive restart test
Browse files Browse the repository at this point in the history
  • Loading branch information
ddustin committed Feb 16, 2024
1 parent 5ea768f commit 2f9fa9f
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 0 deletions.
14 changes: 14 additions & 0 deletions contrib/pyln-client/pyln/client/lightning.py
Original file line number Diff line number Diff line change
Expand Up @@ -1156,6 +1156,20 @@ def openchannel_abort(self, channel_id):
}
return self.call("openchannel_abort", payload)

def stfu_channels(self, channel_ids):
""" STFU multiple channels """
payload = {
"channel_ids": channel_ids,
}
return self.call("stfu_channels", payload);

def abort_channels(self, channel_ids):
""" Abort multiple channels """
payload = {
"channel_ids": channel_ids,
}
return self.call("abort_channels", payload);

def splice_init(self, chan_id, amount, initialpsbt=None, feerate_per_kw=None):
""" Initiate a splice """
payload = {
Expand Down
116 changes: 116 additions & 0 deletions tests/test_restart.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
from fixtures import * # noqa: F401,F403
import pytest
import unittest
import time
from utils import (
TEST_NETWORK
)


@pytest.mark.openchannel('v1')
@pytest.mark.openchannel('v2')
@unittest.skipIf(TEST_NETWORK != 'regtest', 'elementsd doesnt yet support PSBT features we need')
def test_agressive_restart(node_factory, bitcoind):
l1, l2 = node_factory.line_graph(2, fundamount=1000000, wait_for_announce=True, opts={'experimental-splicing': None})

chan_id = l1.get_channel_id(l2)

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

l1.rpc.stfu_channels([chan_id])
l1.rpc.abort_channels([chan_id])
l1.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')
l2.daemon.wait_for_log(r'peer_in WIRE_CHANNEL_REESTABLISH')

0 comments on commit 2f9fa9f

Please sign in to comment.