aboutsummaryrefslogtreecommitdiff
path: root/test/functional/feature_reindex.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/feature_reindex.py')
-rwxr-xr-xtest/functional/feature_reindex.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/functional/feature_reindex.py b/test/functional/feature_reindex.py
new file mode 100755
index 0000000000..ac67e6e9ba
--- /dev/null
+++ b/test/functional/feature_reindex.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+# Copyright (c) 2014-2017 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 assert_equal
+import time
+
+class ReindexTest(BitcoinTestFramework):
+
+ def set_test_params(self):
+ self.setup_clean_chain = True
+ self.num_nodes = 1
+
+ def reindex(self, justchainstate=False):
+ self.nodes[0].generate(3)
+ blockcount = self.nodes[0].getblockcount()
+ self.stop_nodes()
+ extra_args = [["-reindex-chainstate" if justchainstate else "-reindex", "-checkblockindex=1"]]
+ self.start_nodes(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()