aboutsummaryrefslogtreecommitdiff
path: root/test/rpc-tests/reindex.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/rpc-tests/reindex.py')
-rwxr-xr-xtest/rpc-tests/reindex.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/rpc-tests/reindex.py b/test/rpc-tests/reindex.py
new file mode 100755
index 0000000000..0cebb0466f
--- /dev/null
+++ b/test/rpc-tests/reindex.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+# Copyright (c) 2014-2016 The Bitcoin Core developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+"""Test running bitcoind with -reindex and -reindex-chainstate options.
+
+- Start a single node and generate 3 blocks.
+- Stop the node and restart it with -reindex. Verify that the node has reindexed up to block 3.
+- Stop the node and restart it with -reindex-chainstate. Verify that the node has reindexed up to block 3.
+"""
+
+from test_framework.test_framework import BitcoinTestFramework
+from test_framework.util import (
+ start_nodes,
+ stop_nodes,
+ assert_equal,
+)
+import time
+
+class ReindexTest(BitcoinTestFramework):
+
+ def __init__(self):
+ super().__init__()
+ self.setup_clean_chain = True
+ self.num_nodes = 1
+
+ def setup_network(self):
+ self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
+
+ def reindex(self, justchainstate=False):
+ self.nodes[0].generate(3)
+ blockcount = self.nodes[0].getblockcount()
+ stop_nodes(self.nodes)
+ extra_args = [["-reindex-chainstate" if justchainstate else "-reindex", "-checkblockindex=1"]]
+ self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
+ while self.nodes[0].getblockcount() < blockcount:
+ time.sleep(0.1)
+ assert_equal(self.nodes[0].getblockcount(), blockcount)
+ self.log.info("Success")
+
+ def run_test(self):
+ self.reindex(False)
+ self.reindex(True)
+ self.reindex(False)
+ self.reindex(True)
+
+if __name__ == '__main__':
+ ReindexTest().main()