Skip to content

Commit

Permalink
tests: fix feature_pruning.py (#3967)
Browse files Browse the repository at this point in the history
* tests: postpone dip3 and dip8 activation in feature_pruning.py

* tests: Mine one block before restart to avoid automatic recovery from forks
  • Loading branch information
nunumichael committed Feb 16, 2021
1 parent aab4958 commit 94bc9d2
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions test/functional/feature_pruning.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ def set_test_params(self):

# Create nodes 0 and 1 to mine.
# Create node 2 to test pruning.
self.full_node_default_args = ["-maxreceivebuffer=20000","-blockmaxsize=999000", "-checkblocks=5", "-limitdescendantcount=100", "-limitdescendantsize=5000", "-limitancestorcount=100", "-limitancestorsize=5000" ]
self.full_node_default_args = ["-dip3params=2000:2000", "-dip8params=2000", "-maxreceivebuffer=20000","-blockmaxsize=999000", "-checkblocks=5", "-limitdescendantcount=100", "-limitdescendantsize=5000", "-limitancestorcount=100", "-limitancestorsize=5000" ]
# Create nodes 3 and 4 to test manual pruning (they will be re-started with manual pruning later)
# Create nodes 5 to test wallet in prune mode, but do not connect
self.extra_args = [self.full_node_default_args,
self.full_node_default_args,
["-disablegovernance","-txindex=0","-maxreceivebuffer=20000","-prune=550"],
["-disablegovernance","-txindex=0","-maxreceivebuffer=20000","-blockmaxsize=999000"],
["-disablegovernance","-txindex=0","-maxreceivebuffer=20000","-blockmaxsize=999000"],
["-disablegovernance","-txindex=0","-prune=550"]]
["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance","-txindex=0","-maxreceivebuffer=20000","-prune=550"],
["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance","-txindex=0","-maxreceivebuffer=20000","-blockmaxsize=999000"],
["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance","-txindex=0","-maxreceivebuffer=20000","-blockmaxsize=999000"],
["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance","-txindex=0","-prune=550"]]

def setup_network(self):
self.setup_nodes()
Expand Down Expand Up @@ -125,7 +125,7 @@ def reorg_test(self):
# Reboot node 1 to clear its mempool (hopefully make the invalidate faster)
# Lower the block max size so we don't keep mining all our big mempool transactions (from disconnected blocks)
self.stop_node(1)
self.start_node(1, extra_args=["-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5"])
self.start_node(1, extra_args=["-dip3params=2000:2000", "-dip8params=2000", "-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5"])

height = self.nodes[1].getblockcount()
self.log.info("Current block height: %d" % height)
Expand All @@ -146,12 +146,14 @@ def reorg_test(self):
assert(self.nodes[1].getblockcount() == invalidheight - 1)
self.log.info("New best height: %d" % self.nodes[1].getblockcount())

# Mine one block to avoid automatic recovery from forks on restart
self.nodes[1].generate(1)
# Reboot node1 to clear those giant tx's from mempool
self.stop_node(1)
self.start_node(1, extra_args=["-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5"])
self.start_node(1, extra_args=["-dip3params=2000:2000", "-dip8params=2000", "-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5"])

self.log.info("Generating new longer chain of 300 more blocks")
self.nodes[1].generate(300)
self.nodes[1].generate(299)

self.log.info("Reconnect nodes")
connect_nodes(self.nodes[0], 1)
Expand Down Expand Up @@ -223,14 +225,14 @@ def reorg_back(self):

def manual_test(self, node_number, use_timestamp):
# at this point, node has 995 blocks and has not yet run in prune mode
self.start_node(node_number, extra_args=["-disablegovernance", "-txindex=0"])
self.start_node(node_number, extra_args=["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance", "-txindex=0"])
node = self.nodes[node_number]
assert_equal(node.getblockcount(), 995)
assert_raises_rpc_error(-1, "not in prune mode", node.pruneblockchain, 500)

# now re-start in manual pruning mode
self.stop_node(node_number)
self.start_node(node_number, extra_args=["-disablegovernance", "-txindex=0", "-prune=1"])
self.start_node(node_number, extra_args=["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance", "-txindex=0", "-prune=1"])
node = self.nodes[node_number]
assert_equal(node.getblockcount(), 995)

Expand Down Expand Up @@ -312,15 +314,15 @@ def has_block(index):

# stop node, start back up with auto-prune at 550MB, make sure still runs
self.stop_node(node_number)
self.start_node(node_number, extra_args=["-disablegovernance", "-txindex=0", "-prune=550"])
self.start_node(node_number, extra_args=["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance", "-txindex=0", "-prune=550"])

self.log.info("Success")

def wallet_test(self):
# check that the pruning node's wallet is still in good shape
self.log.info("Stop and start pruning node to trigger wallet rescan")
self.stop_node(2)
self.start_node(2, extra_args=["-disablegovernance", "-txindex=0", "-prune=550"])
self.start_node(2, extra_args=["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance", "-txindex=0", "-prune=550"])
self.log.info("Success")

# check that wallet loads successfully when restarting a pruned node after IBD.
Expand All @@ -330,7 +332,7 @@ def wallet_test(self):
nds = [self.nodes[0], self.nodes[5]]
self.sync_blocks(nds, wait=5, timeout=300)
self.stop_node(5) #stop and start to trigger rescan
self.start_node(5, extra_args=["-disablegovernance", "-txindex=0", "-prune=550"])
self.start_node(5, extra_args=["-dip3params=2000:2000", "-dip8params=2000", "-disablegovernance", "-txindex=0", "-prune=550"])
self.log.info("Success")

def run_test(self):
Expand Down

0 comments on commit 94bc9d2

Please sign in to comment.