[qa] Rewrite BIP65 functional tests
[bitcoinplatinum.git] / test / functional / bipdersig.py
blob41f88fb664b2318f447be09c4063a7e694f8c6a5
1 #!/usr/bin/env python3
2 # Copyright (c) 2014-2016 The Bitcoin Core developers
3 # Distributed under the MIT software license, see the accompanying
4 # file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 """Test the BIP66 changeover logic."""
7 from test_framework.test_framework import BitcoinTestFramework
8 from test_framework.util import *
10 class BIP66Test(BitcoinTestFramework):
11 def __init__(self):
12 super().__init__()
13 self.num_nodes = 3
14 self.setup_clean_chain = False
15 self.extra_args = [[], ["-blockversion=2"], ["-blockversion=3"]]
17 def setup_network(self):
18 self.setup_nodes()
19 connect_nodes(self.nodes[1], 0)
20 connect_nodes(self.nodes[2], 0)
21 self.sync_all()
23 def run_test(self):
24 cnt = self.nodes[0].getblockcount()
26 # Mine some old-version blocks
27 self.nodes[1].generate(100)
28 self.sync_all()
29 if (self.nodes[0].getblockcount() != cnt + 100):
30 raise AssertionError("Failed to mine 100 version=2 blocks")
32 # Mine 750 new-version blocks
33 for i in range(15):
34 self.nodes[2].generate(50)
35 self.sync_all()
36 if (self.nodes[0].getblockcount() != cnt + 850):
37 raise AssertionError("Failed to mine 750 version=3 blocks")
39 # TODO: check that new DERSIG rules are not enforced
41 # Mine 1 new-version block
42 self.nodes[2].generate(1)
43 self.sync_all()
44 if (self.nodes[0].getblockcount() != cnt + 851):
45 raise AssertionError("Failed to mine a version=3 blocks")
47 # TODO: check that new DERSIG rules are enforced
49 # Mine 198 new-version blocks
50 for i in range(2):
51 self.nodes[2].generate(99)
52 self.sync_all()
53 if (self.nodes[0].getblockcount() != cnt + 1049):
54 raise AssertionError("Failed to mine 198 version=3 blocks")
56 # Mine 1 old-version block
57 self.nodes[1].generate(1)
58 self.sync_all()
59 if (self.nodes[0].getblockcount() != cnt + 1050):
60 raise AssertionError("Failed to mine a version=2 block after 949 version=3 blocks")
62 # Mine 1 new-version blocks
63 self.nodes[2].generate(1)
64 self.sync_all()
65 if (self.nodes[0].getblockcount() != cnt + 1051):
66 raise AssertionError("Failed to mine a version=3 block")
68 # Mine 1 old-version blocks. This should fail
69 assert_raises_jsonrpc(-1, "CreateNewBlock: TestBlockValidity failed: bad-version(0x00000002)", self.nodes[1].generate, 1)
70 self.sync_all()
71 if (self.nodes[0].getblockcount() != cnt + 1051):
72 raise AssertionError("Accepted a version=2 block after 950 version=3 blocks")
74 # Mine 1 new-version blocks
75 self.nodes[2].generate(1)
76 self.sync_all()
77 if (self.nodes[0].getblockcount() != cnt + 1052):
78 raise AssertionError("Failed to mine a version=3 block")
80 if __name__ == '__main__':
81 BIP66Test().main()