From c4da01bfae8275817bf81d530f0501b2e0330efa Mon Sep 17 00:00:00 2001 From: Tom Harding Date: Tue, 17 Nov 2015 13:32:15 +0100 Subject: [PATCH 1/3] Adapt CLTV regtest for XT changes Conflicts: qa/rpc-tests/bip65-cltv-p2p.py qa/rpc-tests/bip65-cltv.py --- qa/rpc-tests/bip65-cltv-p2p.py | 12 ++++----- qa/rpc-tests/bip65-cltv.py | 45 +++++++++++++++++----------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/qa/rpc-tests/bip65-cltv-p2p.py b/qa/rpc-tests/bip65-cltv-p2p.py index 9b1fdd93508..ea4b5d2d23d 100755 --- a/qa/rpc-tests/bip65-cltv-p2p.py +++ b/qa/rpc-tests/bip65-cltv-p2p.py @@ -85,9 +85,9 @@ class BIP65Test(ComparisonTestFramework): height += 1 yield TestInstance(test_blocks, sync_every_block=False) - ''' Mine 749 version 4 blocks ''' + ''' Mine 74 version 4 blocks ''' test_blocks = [] - for i in xrange(749): + for i in xrange(74): block = create_block(self.tip, create_coinbase(height), self.last_block_time + 1) block.nVersion = 4 block.rehash() @@ -99,7 +99,7 @@ class BIP65Test(ComparisonTestFramework): yield TestInstance(test_blocks, sync_every_block=False) ''' - Check that the new CLTV rules are not enforced in the 750th + Check that the new CLTV rules are not enforced in the 75th version 3 block. ''' spendtx = self.create_transaction(self.nodes[0], @@ -120,7 +120,7 @@ class BIP65Test(ComparisonTestFramework): yield TestInstance([[block, True]]) ''' - Check that the new CLTV rules are enforced in the 751st version 4 + Check that the new CLTV rules are enforced in the 76th version 4 block. ''' spendtx = self.create_transaction(self.nodes[0], @@ -137,9 +137,9 @@ class BIP65Test(ComparisonTestFramework): self.last_block_time += 1 yield TestInstance([[block, False]]) - ''' Mine 199 new version blocks on last valid tip ''' + ''' Mine 19 new version blocks on last valid tip ''' test_blocks = [] - for i in xrange(199): + for i in xrange(19): block = create_block(self.tip, create_coinbase(height), self.last_block_time + 1) block.nVersion = 4 block.rehash() diff --git a/qa/rpc-tests/bip65-cltv.py b/qa/rpc-tests/bip65-cltv.py index f666a07c9b7..15c7c0e3cf7 100755 --- a/qa/rpc-tests/bip65-cltv.py +++ b/qa/rpc-tests/bip65-cltv.py @@ -9,6 +9,8 @@ from test_framework.test_framework import BitcoinTestFramework from test_framework.util import * +import os +import shutil class BIP65Test(BitcoinTestFramework): @@ -26,61 +28,60 @@ class BIP65Test(BitcoinTestFramework): cnt = self.nodes[0].getblockcount() # Mine some old-version blocks - self.nodes[1].generate(100) + self.nodes[1].generate(10) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 100): - raise AssertionError("Failed to mine 100 version=3 blocks") + if (self.nodes[0].getblockcount() != cnt + 10): + raise AssertionError("Failed to mine 10 version=3 blocks") - # Mine 750 new-version blocks + # Mine 75 new-version blocks for i in xrange(15): - self.nodes[2].generate(50) + self.nodes[2].generate(5) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 850): - raise AssertionError("Failed to mine 750 version=4 blocks") + if (self.nodes[0].getblockcount() != cnt + 85): + raise AssertionError("Failed to mine 75 version=4 blocks") # TODO: check that new CHECKLOCKTIMEVERIFY rules are not enforced # Mine 1 new-version block self.nodes[2].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 851): - raise AssertionError("Failed to mine a version=4 blocks") + if (self.nodes[0].getblockcount() != cnt + 86): + raise AssertionFailure("Failed to mine a version=4 block") # TODO: check that new CHECKLOCKTIMEVERIFY rules are enforced - # Mine 198 new-version blocks - for i in xrange(2): - self.nodes[2].generate(99) + # Mine 18 new-version blocks + self.nodes[2].generate(18) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1049): - raise AssertionError("Failed to mine 198 version=4 blocks") + if (self.nodes[0].getblockcount() != cnt + 104): + raise AssertionError("Failed to mine 18 version=4 blocks") # Mine 1 old-version block self.nodes[1].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1050): - raise AssertionError("Failed to mine a version=3 block after 949 version=4 blocks") + if (self.nodes[0].getblockcount() != cnt + 105): + raise AssertionError("Failed to mine a version=3 block after 94 version=4 blocks") # Mine 1 new-version blocks self.nodes[2].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1051): - raise AssertionError("Failed to mine a version=4 block") + if (self.nodes[0].getblockcount() != cnt + 106): + raise AssertionError("Failed to mine a version=3 block") # Mine 1 old-version blocks try: self.nodes[1].generate(1) - raise AssertionError("Succeeded to mine a version=3 block after 950 version=4 blocks") + raise AssertionError("Succeeded to mine a version=3 block after 95 version=4 blocks") except JSONRPCException: pass self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1051): - raise AssertionError("Accepted a version=3 block after 950 version=4 blocks") + if (self.nodes[0].getblockcount() != cnt + 106): + raise AssertionError("Accepted a version=3 block after 95 version=4 blocks") # Mine 1 new-version blocks self.nodes[2].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1052): + if (self.nodes[0].getblockcount() != cnt + 107): raise AssertionError("Failed to mine a version=4 block") if __name__ == '__main__': From 0780e4458ea06c41fc0dfc28c54d022beb5924d8 Mon Sep 17 00:00:00 2001 From: Tom Harding Date: Thu, 3 Dec 2015 16:33:31 -0800 Subject: [PATCH 2/3] Fix race condition in CLTV regtests On some systems, these tests fail because the default 200 BIP101-version blocks are mined before the test begins, causing them to think BIP65 is already in effect. --- qa/rpc-tests/bip65-cltv.py | 7 +++++++ qa/rpc-tests/forknotify.py | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/qa/rpc-tests/bip65-cltv.py b/qa/rpc-tests/bip65-cltv.py index 15c7c0e3cf7..82617ad8958 100755 --- a/qa/rpc-tests/bip65-cltv.py +++ b/qa/rpc-tests/bip65-cltv.py @@ -14,6 +14,13 @@ import shutil class BIP65Test(BitcoinTestFramework): + def __init__(self): + self.num_nodes = 3 + + def setup_chain(self): + print "Initializing test directory "+self.options.tmpdir + initialize_chain_clean(self.options.tmpdir, self.num_nodes) + def setup_network(self): self.nodes = [] self.nodes.append(start_node(0, self.options.tmpdir, [])) diff --git a/qa/rpc-tests/forknotify.py b/qa/rpc-tests/forknotify.py index 20e6ce96195..3a4c07f7418 100755 --- a/qa/rpc-tests/forknotify.py +++ b/qa/rpc-tests/forknotify.py @@ -14,6 +14,13 @@ class ForkNotifyTest(BitcoinTestFramework): alert_filename = None # Set by setup_network + def __init__(self): + self.num_nodes = 3 + + def setup_chain(self): + print "Initializing test directory "+self.options.tmpdir + initialize_chain_clean(self.options.tmpdir, self.num_nodes) + def setup_network(self): self.nodes = [] self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt") From cd24f1be9424f2935b14e6b243fa8be04b146dc6 Mon Sep 17 00:00:00 2001 From: rustyloy Date: Tue, 16 Feb 2016 20:04:07 -0500 Subject: [PATCH 3/3] Updated bipdersig test to compensate for 75/100 activation and maxupload target values to work with 2MB block sizes. --- qa/rpc-tests/bip65-cltv.py | 2 -- qa/rpc-tests/bipdersig.py | 45 +++++++++++++++++++-------------- qa/rpc-tests/maxuploadtarget.py | 12 ++++----- 3 files changed, 32 insertions(+), 27 deletions(-) diff --git a/qa/rpc-tests/bip65-cltv.py b/qa/rpc-tests/bip65-cltv.py index 82617ad8958..6db88442c3f 100755 --- a/qa/rpc-tests/bip65-cltv.py +++ b/qa/rpc-tests/bip65-cltv.py @@ -9,8 +9,6 @@ from test_framework.test_framework import BitcoinTestFramework from test_framework.util import * -import os -import shutil class BIP65Test(BitcoinTestFramework): diff --git a/qa/rpc-tests/bipdersig.py b/qa/rpc-tests/bipdersig.py index be9121c4568..00fc6289a3a 100755 --- a/qa/rpc-tests/bipdersig.py +++ b/qa/rpc-tests/bipdersig.py @@ -12,6 +12,13 @@ from test_framework.util import * class BIP66Test(BitcoinTestFramework): + def __init__(self): + self.num_nodes = 3 + + def setup_chain(self): + print "Initializing test directory "+self.options.tmpdir + initialize_chain_clean(self.options.tmpdir, self.num_nodes) + def setup_network(self): self.nodes = [] self.nodes.append(start_node(0, self.options.tmpdir, [])) @@ -26,61 +33,61 @@ class BIP66Test(BitcoinTestFramework): cnt = self.nodes[0].getblockcount() # Mine some old-version blocks - self.nodes[1].generate(100) + self.nodes[1].generate(10) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 100): - raise AssertionError("Failed to mine 100 version=2 blocks") + if (self.nodes[0].getblockcount() != cnt + 10): + raise AssertionError("Failed to mine 10 version=2 blocks") - # Mine 750 new-version blocks + # Mine 75 new-version blocks for i in xrange(15): - self.nodes[2].generate(50) + self.nodes[2].generate(5) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 850): - raise AssertionError("Failed to mine 750 version=3 blocks") + if (self.nodes[0].getblockcount() != cnt + 85): + raise AssertionError("Failed to mine 75 version=3 blocks") # TODO: check that new DERSIG rules are not enforced # Mine 1 new-version block self.nodes[2].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 851): + if (self.nodes[0].getblockcount() != cnt + 86): raise AssertionError("Failed to mine a version=3 blocks") # TODO: check that new DERSIG rules are enforced - # Mine 198 new-version blocks + # Mine 18 new-version blocks for i in xrange(2): - self.nodes[2].generate(99) + self.nodes[2].generate(9) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1049): - raise AssertionError("Failed to mine 198 version=3 blocks") + if (self.nodes[0].getblockcount() != cnt + 104): + raise AssertionError("Failed to mine 18 version=3 blocks") # Mine 1 old-version block self.nodes[1].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1050): - raise AssertionError("Failed to mine a version=2 block after 949 version=3 blocks") + if (self.nodes[0].getblockcount() != cnt + 105): + raise AssertionError("Failed to mine a version=2 block after 94 version=3 blocks") # Mine 1 new-version blocks self.nodes[2].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1051): + if (self.nodes[0].getblockcount() != cnt + 106): raise AssertionError("Failed to mine a version=3 block") # Mine 1 old-version blocks try: self.nodes[1].generate(1) - raise AssertionError("Succeeded to mine a version=2 block after 950 version=3 blocks") + raise AssertionError("Succeeded to mine a version=2 block after 95 version=3 blocks") except JSONRPCException: pass self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1051): - raise AssertionError("Accepted a version=2 block after 950 version=3 blocks") + if (self.nodes[0].getblockcount() != cnt + 106): + raise AssertionError("Accepted a version=2 block after 95 version=3 blocks") # Mine 1 new-version blocks self.nodes[2].generate(1) self.sync_all() - if (self.nodes[0].getblockcount() != cnt + 1052): + if (self.nodes[0].getblockcount() != cnt + 107): raise AssertionError("Failed to mine a version=3 block") if __name__ == '__main__': diff --git a/qa/rpc-tests/maxuploadtarget.py b/qa/rpc-tests/maxuploadtarget.py index 4d6b343f77d..ef754a9295b 100755 --- a/qa/rpc-tests/maxuploadtarget.py +++ b/qa/rpc-tests/maxuploadtarget.py @@ -95,9 +95,9 @@ class MaxUploadTest(BitcoinTestFramework): initialize_chain_clean(self.options.tmpdir, 2) def setup_network(self): - # Start a node with maxuploadtarget of 200 MB (/24h) + # Start a node with maxuploadtarget of 400 MB (/24h) self.nodes = [] - self.nodes.append(start_node(0, self.options.tmpdir, ["-debug", "-maxuploadtarget=200", "-blockmaxsize=999000"])) + self.nodes.append(start_node(0, self.options.tmpdir, ["-debug", "-maxuploadtarget=400", "-blockmaxsize=999000"])) def mine_full_block(self, node, address): # Want to create a full block @@ -175,13 +175,13 @@ class MaxUploadTest(BitcoinTestFramework): getdata_request = msg_getdata() getdata_request.inv.append(CInv(2, big_old_block)) - max_bytes_per_day = 200*1024*1024 - daily_buffer = 144 * 1000000 + max_bytes_per_day = 400*1024*1024 + daily_buffer = 144 * 2000000 max_bytes_available = max_bytes_per_day - daily_buffer success_count = max_bytes_available / old_block_size - # 144MB will be reserved for relaying new blocks, so expect this to - # succeed for ~70 tries. + # Space reserved for relaying 144 new blocks, so expect this to + # succeed for ~140 tries. for i in xrange(success_count): test_nodes[0].send_message(getdata_request) test_nodes[0].sync_with_ping()