test: improve assertions in feature_blockfilterindex_prune.py

pull/826/head
Jon Atack 4 years ago
parent 1b1d8bde1c
commit ace3f4cbdf
No known key found for this signature in database
GPG Key ID: 4F5721B3D0E3921D

@ -16,36 +16,48 @@ class FeatureBlockfilterindexPruneTest(BitcoinTestFramework):
self.num_nodes = 2 self.num_nodes = 2
self.extra_args = [["-fastprune", "-prune=1"], ["-fastprune", "-prune=1", "-blockfilterindex=1"]] self.extra_args = [["-fastprune", "-prune=1"], ["-fastprune", "-prune=1", "-blockfilterindex=1"]]
def sync_index(self, height):
expected = {'basic block filter index': {'synced': True, 'best_block_height': height}}
self.wait_until(lambda: self.nodes[1].getindexinfo() == expected)
def run_test(self): def run_test(self):
self.log.info("check if we can access a blockfilter when pruning is enabled but no blocks are actually pruned") self.log.info("check if we can access a blockfilter when pruning is enabled but no blocks are actually pruned")
self.wait_until(lambda: self.nodes[1].getindexinfo() == {'basic block filter index': {'synced': True, 'best_block_height': 200}}) self.sync_index(height=200)
assert len(self.nodes[1].getblockfilter(self.nodes[1].getbestblockhash())['filter']) > 0 assert_greater_than(len(self.nodes[1].getblockfilter(self.nodes[1].getbestblockhash())['filter']), 0)
# Mine two batches of blocks to avoid hitting NODE_NETWORK_LIMITED_MIN_BLOCKS disconnection # Mine two batches of blocks to avoid hitting NODE_NETWORK_LIMITED_MIN_BLOCKS disconnection
self.nodes[1].generate(250) self.nodes[1].generate(250)
self.sync_all() self.sync_all()
self.nodes[1].generate(250) self.nodes[1].generate(250)
self.sync_all() self.sync_all()
self.wait_until(lambda: self.nodes[1].getindexinfo() == {'basic block filter index': {'synced': True, 'best_block_height': 700}}) self.sync_index(height=700)
self.log.info("prune some blocks") self.log.info("prune some blocks")
pruneheight = self.nodes[1].pruneblockchain(400) pruneheight = self.nodes[1].pruneblockchain(400)
assert_equal(pruneheight, 250) assert_equal(pruneheight, 250)
self.log.info("check if we can access the tips blockfilter when we have pruned some blocks") self.log.info("check if we can access the tips blockfilter when we have pruned some blocks")
assert len(self.nodes[1].getblockfilter(self.nodes[1].getbestblockhash())['filter']) > 0 assert_greater_than(len(self.nodes[1].getblockfilter(self.nodes[1].getbestblockhash())['filter']), 0)
self.log.info("check if we can access the blockfilter of a pruned block") self.log.info("check if we can access the blockfilter of a pruned block")
assert len(self.nodes[1].getblockfilter(self.nodes[1].getblockhash(2))['filter']) > 0 assert_greater_than(len(self.nodes[1].getblockfilter(self.nodes[1].getblockhash(2))['filter']), 0)
self.log.info("start node without blockfilterindex") self.log.info("start node without blockfilterindex")
self.stop_node(1) self.stop_node(1)
self.start_node(1, extra_args=self.extra_args[0]) self.start_node(1, extra_args=self.extra_args[0])
self.log.info("make sure accessing the blockfilters throws an error") self.log.info("make sure accessing the blockfilters throws an error")
assert_raises_rpc_error(-1, "Index is not enabled for filtertype basic", self.nodes[1].getblockfilter, self.nodes[1].getblockhash(2)) assert_raises_rpc_error(-1, "Index is not enabled for filtertype basic", self.nodes[1].getblockfilter, self.nodes[1].getblockhash(2))
self.nodes[1].generate(1000) self.nodes[1].generate(1000)
self.log.info("prune below the blockfilterindexes best block while blockfilters are disabled") self.log.info("prune below the blockfilterindexes best block while blockfilters are disabled")
pruneheight_new = self.nodes[1].pruneblockchain(1000) pruneheight_new = self.nodes[1].pruneblockchain(1000)
assert_greater_than(pruneheight_new, pruneheight) assert_greater_than(pruneheight_new, pruneheight)
self.stop_node(1) self.stop_node(1)
self.log.info("make sure we get an init error when starting the node again with block filters") self.log.info("make sure we get an init error when starting the node again with block filters")
with self.nodes[1].assert_debug_log(["basic block filter index best block of the index goes beyond pruned data. Please disable the index or reindex (which will download the whole blockchain again)"]): with self.nodes[1].assert_debug_log(["basic block filter index best block of the index goes beyond pruned data. Please disable the index or reindex (which will download the whole blockchain again)"]):
self.nodes[1].assert_start_raises_init_error(extra_args=self.extra_args[1]) self.nodes[1].assert_start_raises_init_error(extra_args=self.extra_args[1])
self.log.info("make sure the node starts again with the -reindex arg") self.log.info("make sure the node starts again with the -reindex arg")
reindex_args = self.extra_args[1] reindex_args = self.extra_args[1]
reindex_args.append("-reindex") reindex_args.append("-reindex")

Loading…
Cancel
Save