From e5d69feca942e6958d528096f54087d36c87072f Mon Sep 17 00:00:00 2001 From: Thomas Saunders Date: Thu, 10 Aug 2017 13:18:02 -0500 Subject: [PATCH] fixing up tests so they all work for both mainnet and testnet settings --- neo/Core/test_genesis_block.py | 64 +++++++++++++------ .../Blockchains/LevelDB/test_level_db.py | 16 +++-- 2 files changed, 53 insertions(+), 27 deletions(-) diff --git a/neo/Core/test_genesis_block.py b/neo/Core/test_genesis_block.py index bc6546f85..93750c027 100644 --- a/neo/Core/test_genesis_block.py +++ b/neo/Core/test_genesis_block.py @@ -14,11 +14,14 @@ class GenesisBlockTestCase(unittest.TestCase): testnet_genesis_hash = 'b3181718ef6167105b70920e4a8fbbd0a0a56aacf460d70e10ba6fa1668f1fef' testnet_ghash_current= '' - # b'a86943013e4a0eac66024723fa8689f355c85db674365fc9481a37d3ed5480ab' <-- current + testnet_genesis_merkle = b'c673a4b28f32ccb6d54cf721e8640d7a979def7cef5e4885bb085618ddeb38bd' + mainnet_genesis_merkle = b'803ff4abe3ea6533bcc0be574efa02f83ae8fdc651c879056b0d9be336c01bf4' testnet_genesis_raw = b'000000000000000000000000000000000000000000000000000000000000000000000000bd38ebdd185608bb85485eef7cef9d977a0d64e821f74cd5b6cc328fb2a473c665fc8857000000001dac2b7c00000000f3812db982f3b0089a21a278988efeec6a027b25' - currraw = b'000000000000000000000000000000000000000000000000000000000000000000000000bd38ebdd185608bb85485eef7cef9d977a0d64e821f74cd5b6cc328fb2a473c665fc8857000000001dac2b7c00000000f3812db982f3b0089a21a278988efeec6a027b25' + + mainnet_genesis_hash = b'd42561e3d30e15be6400b6df2f328e02d2bf6354c41dce433bc57687c82144bf' + mainnet_genesis_raw = b'' # b'7a9909d9a8fcf815bacb78b67de8b40936f24d78f7dcb90c0f1857db75a005fa' <-- current testnet_genesis_index = 0 @@ -36,7 +39,7 @@ class GenesisBlockTestCase(unittest.TestCase): gen_issue_tx_id = b'bdecbb623eee6f9ade28d5a8ff5fb3ea9c9d73af039e0286201b3b0291fb4d4a' contractraw= b'54210209e7fd41dfb5c2f8dc72eb30358ac100ea8c72da18847befe06eade68cebfcb9210327da12b5c40200e9f65569476bbff2218da4f32548ff43b6387ec1416a231ee821034ff5ceeac41acf22cd5ed2da17a6df4dd8358fcb2bfb1a43208ad0feaab2746b21026ce35b29147ad09e4afe4ec4a7319095f08198fa8babbe3c56e970b143528d2221038dddc06ce687677a53d54f096d2591ba2302068cf123c1f2d75c2dddc542557921039dafd8571a641058ccc832c5e2111ea39b09c0bde36050914384f7a48bce9bf92102d02b1873a0863cd042cc717da31cea0d7cf9db32b74d4c72c01b0011503e2e2257ae' - + mainnet_contract_raw = b'542102486fd15702c4490a26703112a5cc1d0923fd697a33406bd5a1c00e0013b09a7021024c7b7fb6c310fccf1ba33b082519d82964ea93868d676662d4a59ad548df0e7d2102aaec38470f6aad0042c6e877cfd8087d2676b0f516fddd362801b9bd3936399e2103b209fd4f53a7170ea4444e0cb0a6bb6a53c2bd016926989cf85f9b0fba17a70c2103b8d9d5771d8f513aa0869b9cc8d50986403b78c6da36890638c3d46a5adce04a2102ca0e27697b9c248f6f16e085fd0061e26f44da85b58ee835c110caa5ec3ba5542102df48f60e8f3e01c48ff40b9b7f1310d7a8b2a193188befe1c2e3df740e89509357ae' issuetx_rraw = b'01000000019b7cffdaa674beae0f930ebe6085af9093e5fe56b34a5c220ccdcf6efc336fc50000c16ff2862300197ff6783d512a740d42f4cc4f5572955fa44c95' @@ -47,12 +50,19 @@ class GenesisBlockTestCase(unittest.TestCase): b'bdecbb623eee6f9ade28d5a8ff5fb3ea9c9d73af039e0286201b3b0291fb4d4a', ] + mainnet_genesis_tx_hashes = [ + b"fb5bd72b2d6792d75dc2f1084ffa9e9f70ca85543c717a6b13d9959b452a57d6", + b"c56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b", + b"602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7", + b"3631f66024ca6f5b033d7e0809eb993443374830025af904fb51b0334f127cda" + ] + @classmethod def setUpClass(cls): if Settings.MAGIC == 1953787457: print('ok to test!') - else: - raise unittest.SkipTest('Only test genesis blocks with testnet protocol settings') +# else: +# raise unittest.SkipTest('Only test genesis blocks with testnet protocol settings') def test_miner_tx(self): miner_tx = MinerTransaction() @@ -69,21 +79,22 @@ def test_issue_tx(self): script = Contract.CreateMultiSigRedeemScript(int(len(Blockchain.StandbyValidators()) / 2) + 1, Blockchain.StandbyValidators()) - self.assertEqual(script, self.contractraw) - out = Helper.RawBytesToScriptHash(script) + if Settings.MAGIC == 1953787457: + self.assertEqual(script, self.contractraw) + out = Helper.RawBytesToScriptHash(script) - output = TransactionOutput( - share_tx.HashToByteString(), - Blockchain.SystemShare().Amount, - out - ) + output = TransactionOutput( + share_tx.HashToByteString(), + Blockchain.SystemShare().Amount, + out + ) - script = Witness( bytearray(0), bytearray(ScriptOp.PUSHT)) + script = Witness( bytearray(0), bytearray(ScriptOp.PUSHT)) - issue_tx = IssueTransaction([],[output],[], [script]) + issue_tx = IssueTransaction([],[output],[], [script]) - self.assertEqual(issue_tx.GetHashData(), self.issuetx_rraw) - self.assertEqual(issue_tx.HashToByteString(), self.gen_issue_tx_id) + self.assertEqual(issue_tx.GetHashData(), self.issuetx_rraw) + self.assertEqual(issue_tx.HashToByteString(), self.gen_issue_tx_id) def test_system_share(self): @@ -110,13 +121,24 @@ def test_genesis_block(self): self.assertEqual(block.Index, self.testnet_genesis_index) self.assertEqual(block.ConsensusData, self.testnet_genesis_nonce) self.assertEqual(block.Timestamp, self.genblock_timestamp) - self.assertEqual(block.MerkleRoot, self.testnet_genesis_merkle) + txhashes = [tx.HashToByteString() for tx in block.Transactions] - self.assertEqual(txhashes, self.test_genesis_tx_hashes) + rd = block.RawData() + + if Settings.MAGIC == 1953787457: + self.assertEqual(block.MerkleRoot, self.testnet_genesis_merkle) + self.assertEqual(txhashes, self.test_genesis_tx_hashes) + self.assertEqual(block.RawData(), self.testnet_genesis_raw) + self.assertEqual(block.HashToString(), self.testnet_genesis_hash) + else: + self.assertEqual(block.MerkleRoot, self.mainnet_genesis_merkle) + self.assertEqual(txhashes, self.mainnet_genesis_tx_hashes) + self.assertEqual(block.HashToByteString(), self.mainnet_genesis_hash) + + + + - rd = block.RawData() - self.assertEqual(block.RawData(), self.testnet_genesis_raw) - self.assertEqual(block.HashToString(), self.testnet_genesis_hash) diff --git a/neo/Implementations/Blockchains/LevelDB/test_level_db.py b/neo/Implementations/Blockchains/LevelDB/test_level_db.py index f82319cb6..9ddc46212 100644 --- a/neo/Implementations/Blockchains/LevelDB/test_level_db.py +++ b/neo/Implementations/Blockchains/LevelDB/test_level_db.py @@ -20,6 +20,7 @@ class LevelDBTest(unittest.TestCase): block_one_raw = b'00000000ef1f8f66a16fba100ed760f4ac6aa5a0d0bb8f4a0e92705b106761ef181718b3d0765298ceb5f57de7d2b0dab00ed25be4134706ada2d90adb8b7e3aba323a8e1abd125901000000d11f7a289214bdaff3812db982f3b0089a21a278988efeec6a027b2501fd450140884037dd265cb5f5a54802f53c2c8593b31d5b8a9c0bad4c7e366b153d878989d168080ac36b930036a9eb966b48c70bb41792e698fa021116f27c09643563b840e83ab14404d964a91dbac45f5460e88ad57196b1779478e3475334af8c1b49cd9f0213257895c60b5b92a4800eb32d785cbb39ae1f022528943909fd37deba63403677848bf98cc9dbd8fbfd7f2e4f34471866ea82ca6bffbf0f778b6931483700c17829b4bd066eb04983d3aac0bd46b9c8d03a73a8e714d3119de93cd9522e314054d16853b22014190063f77d9edf6fbccefcf71fffd1234f688823b4e429ae5fa639d0a664c842fbdfcb4d6e21f39d81c23563b92cffa09696d93c95bc4893a6401a43071d00d3e854f7f1f321afa7d5301d36f2195dc1e2643463f34ae637d2b02ae0eb11d4256c507a4f8304cea6396a7fce640f50acb301c2f6336d27717e84f155210209e7fd41dfb5c2f8dc72eb30358ac100ea8c72da18847befe06eade68cebfcb9210327da12b5c40200e9f65569476bbff2218da4f32548ff43b6387ec1416a231ee821034ff5ceeac41acf22cd5ed2da17a6df4dd8358fcb2bfb1a43208ad0feaab2746b21026ce35b29147ad09e4afe4ec4a7319095f08198fa8babbe3c56e970b143528d2221038dddc06ce687677a53d54f096d2591ba2302068cf123c1f2d75c2dddc542557921039dafd8571a641058ccc832c5e2111ea39b09c0bde36050914384f7a48bce9bf92102d02b1873a0863cd042cc717da31cea0d7cf9db32b74d4c72c01b0011503e2e2257ae010000d11f7a2800000000' block_one_hash= b'0012f8566567a9d7ddf25acb5cf98286c9703297de675d01ba73fbfe6bcb841c' + @classmethod def setUpClass(self): self._blockchain = LevelDBBlockchain(path=self.LEVELDB_TESTPATH) @@ -27,11 +28,6 @@ def setUpClass(self): self._genesis = Blockchain.GenesisBlock() -# if Settings.MAGIC == 1953787457: -# print('ok to test!') - # else: - # raise unittest.SkipTest('Only test genesis blocks with testnet protocol settings') - @classmethod def tearDownClass(self): self._blockchain.Dispose() @@ -42,7 +38,11 @@ def test__initial_state(self): self.assertEqual(self._blockchain.CurrentBlockHash(), self._genesis.HashToByteString()) + self.assertEqual(self._blockchain.CurrentHeaderHash(), self._genesis.Header().HashToByteString()) + + self.assertEqual(self._blockchain.CurrentHeaderHash(), self._genesis.Header().HashToByteString()) + self.assertEqual(self._blockchain.HeaderHeight(), 0) self.assertEqual(self._blockchain.Height(), 0) @@ -58,7 +58,11 @@ def test_add_header(self): header = block_one.Header() hHash = header.HashToByteString() - self.assertEqual(self._blockchain.CurrentHeaderHash(), b'b3181718ef6167105b70920e4a8fbbd0a0a56aacf460d70e10ba6fa1668f1fef') + if Settings.MAGIC == 1953787457: + self.assertEqual(self._blockchain.CurrentHeaderHash(), b'b3181718ef6167105b70920e4a8fbbd0a0a56aacf460d70e10ba6fa1668f1fef') + else: + self.assertEqual(self._blockchain.CurrentHeaderHash(), b'd42561e3d30e15be6400b6df2f328e02d2bf6354c41dce433bc57687c82144bf') + self.assertEqual(self._blockchain.HeaderHeight(), 0) #add it to leveldb