From 74fa10757819b3e36483b3221b62065a3794e754 Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Fri, 20 Apr 2018 17:22:44 +0200 Subject: [PATCH] pytest: Add a test for the new --rescan option Signed-off-by: Christian Decker --- tests/test_lightningd.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/test_lightningd.py b/tests/test_lightningd.py index 189e7320e..94f615029 100644 --- a/tests/test_lightningd.py +++ b/tests/test_lightningd.py @@ -4476,6 +4476,40 @@ class LightningDTests(BaseLightningDTests): self.assertRaisesRegex(ValueError, "Peer is not in gossip mode", l1.rpc.disconnect, l3.info['id']) + def test_rescan(self): + """Test the rescan option + """ + l1 = self.node_factory.get_node() + btc = l1.bitcoin + + # The first start should start at current_height - 30 = 71, make sure + # it's not earlier + l1.daemon.wait_for_log(r'Adding block 101') + assert not l1.daemon.is_in_log(r'Adding block 70') + + # Restarting with a higher rescan should go back further + l1.daemon.opts['rescan'] = 50 + l1.restart() + l1.daemon.wait_for_log(r'Adding block 101') + assert l1.daemon.is_in_log(r'Adding block 51') + assert not l1.daemon.is_in_log(r'Adding block 50') + + # Restarting with an absolute rescan should start from there + l1.daemon.opts['rescan'] = -31 + l1.restart() + l1.daemon.wait_for_log(r'Adding block 101') + assert l1.daemon.is_in_log(r'Adding block 31') + assert not l1.daemon.is_in_log(r'Adding block 30') + + # Restarting with a future absolute blockheight should just start with + # the current height + l1.daemon.opts['rescan'] = -500000 + l1.stop() + btc.rpc.generate(4) + l1.daemon.start() + l1.daemon.wait_for_log(r'Adding block 105') + assert not l1.daemon.is_in_log(r'Adding block 102') + if __name__ == '__main__': unittest.main(verbosity=2)