From 6e60c118b7d05192e8f3b596df2bac9b3e9842d4 Mon Sep 17 00:00:00 2001 From: winsvega Date: Sat, 28 Feb 2015 20:57:01 +0300 Subject: [PATCH 1/4] Transaction Tests A few changes --- test/TestHelper.cpp | 2 +- test/transaction.cpp | 2 +- test/ttTransactionTestFiller.json | 31 +++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/test/TestHelper.cpp b/test/TestHelper.cpp index ea44111c9..f82b72b88 100644 --- a/test/TestHelper.cpp +++ b/test/TestHelper.cpp @@ -170,7 +170,7 @@ void ImportTest::importTransaction(json_spirit::mObject& _o) } } -void ImportTest::exportTest(bytes _output, State& _statePost) +void ImportTest::exportTest(bytes const& _output, State const& _statePost) { // export output m_TestObject["out"] = "0x" + toHex(_output); diff --git a/test/transaction.cpp b/test/transaction.cpp index c7a0e61d7..8cda18f1e 100644 --- a/test/transaction.cpp +++ b/test/transaction.cpp @@ -104,7 +104,7 @@ void doTransactionTests(json_spirit::mValue& _v, bool _fillin) BOOST_AUTO_TEST_SUITE(TransactionTests) -BOOST_AUTO_TEST_CASE(TransactionTest) +BOOST_AUTO_TEST_CASE(ttTransactionTest) { dev::test::executeTests("ttTransactionTest", "/TransactionTests", dev::test::doTransactionTests); } diff --git a/test/ttTransactionTestFiller.json b/test/ttTransactionTestFiller.json index 23a384d50..96e4c78a6 100644 --- a/test/ttTransactionTestFiller.json +++ b/test/ttTransactionTestFiller.json @@ -59,6 +59,21 @@ } }, + "WrongVRSTestVOverflow" : { + "transaction" : + { + "data" : "", + "gasLimit" : "2000", + "gasPrice" : "1", + "nonce" : "0", + "to" : "b94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "value" : "10", + "v" : "310", + "r" : "0x98ff921201554726367d2be8c804a7ff89ccf285ebc57dff8ae4c44b9c19ac4a", + "s" : "0x8887321be575c8095f789dd4c743dfe42c1820f9231f98a962b210e3ac2452a3" + } + }, + "WrongVRSTestIncorrectSize" : { "transaction" : { @@ -91,6 +106,22 @@ } }, + "DataTest" : { + "transaction" : + { + "data" : "0x0358ac39584bc98a7c979f984b03", + "gasLimit" : "850", + "gasPrice" : "1", + "nonce" : "0", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : "10", + "v" : "27", + "r" : "0x48b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353", + "s" : "secretkey 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "s" : "0xefffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804" + } + }, + "TransactionWithTooManyRLPElements" : { "transaction" : { From 3e7e391b57861a135894be635e185df147da552a Mon Sep 17 00:00:00 2001 From: winsvega Date: Mon, 2 Mar 2015 18:18:28 +0300 Subject: [PATCH 2/4] Test Cases Changes userDefinedFile test now goes with --test option for all cases --- test/block.cpp | 144 ++++++++++++++++++++++--------------------- test/state.cpp | 2 +- test/transaction.cpp | 4 +- test/vm.cpp | 4 +- 4 files changed, 78 insertions(+), 76 deletions(-) diff --git a/test/block.cpp b/test/block.cpp index fdf65affa..7c50eef4d 100644 --- a/test/block.cpp +++ b/test/block.cpp @@ -81,6 +81,76 @@ bytes createBlockRLPFromFields(mObject& _tObj) return rlpStream.out(); } +void overwriteBlockHeader(mObject& _o, BlockInfo _current_BlockHeader) +{ + if (_o.count("blockHeader")) + { + if (_o["blockHeader"].get_obj().size() != 14) + { + + BlockInfo tmp = _current_BlockHeader; + + if (_o["blockHeader"].get_obj().count("parentHash")) + tmp.parentHash = h256(_o["blockHeader"].get_obj()["parentHash"].get_str()); + + if (_o["blockHeader"].get_obj().count("uncleHash")) + tmp.sha3Uncles = h256(_o["blockHeader"].get_obj()["uncleHash"].get_str()); + + if (_o["blockHeader"].get_obj().count("coinbase")) + tmp.coinbaseAddress = Address(_o["blockHeader"].get_obj()["coinbase"].get_str()); + + if (_o["blockHeader"].get_obj().count("stateRoot")) + tmp.stateRoot = h256(_o["blockHeader"].get_obj()["stateRoot"].get_str()); + + if (_o["blockHeader"].get_obj().count("transactionsTrie")) + tmp.transactionsRoot = h256(_o["blockHeader"].get_obj()["transactionsTrie"].get_str()); + + if (_o["blockHeader"].get_obj().count("receiptTrie")) + tmp.receiptsRoot = h256(_o["blockHeader"].get_obj()["receiptTrie"].get_str()); + + if (_o["blockHeader"].get_obj().count("bloom")) + tmp.logBloom = LogBloom(_o["blockHeader"].get_obj()["bloom"].get_str()); + + if (_o["blockHeader"].get_obj().count("difficulty")) + tmp.difficulty = toInt(_o["blockHeader"].get_obj()["difficulty"]); + + if (_o["blockHeader"].get_obj().count("number")) + tmp.number = toInt(_o["blockHeader"].get_obj()["number"]); + + if (_o["blockHeader"].get_obj().count("gasLimit")) + tmp.gasLimit = toInt(_o["blockHeader"].get_obj()["gasLimit"]); + + if (_o["blockHeader"].get_obj().count("gasUsed")) + tmp.gasUsed = toInt(_o["blockHeader"].get_obj()["gasUsed"]); + + if (_o["blockHeader"].get_obj().count("timestamp")) + tmp.timestamp = toInt(_o["blockHeader"].get_obj()["timestamp"]); + + if (_o["blockHeader"].get_obj().count("extraData")) + tmp.extraData = importByteArray(_o["blockHeader"].get_obj()["extraData"].get_str()); + + // find new valid nonce + + if (tmp != _current_BlockHeader) + { + _current_BlockHeader = tmp; + cout << "new header!\n"; + ProofOfWork pow; + MineInfo ret; + while (!ProofOfWork::verify(_current_BlockHeader.headerHash(WithoutNonce), _current_BlockHeader.nonce, _current_BlockHeader.difficulty)) + tie(ret, _current_BlockHeader.nonce) = pow.mine(_current_BlockHeader.headerHash(WithoutNonce), _current_BlockHeader.difficulty, 10000, true, true); + } + } + else + { + // take the blockheader as is + const bytes c_blockRLP = createBlockRLPFromFields(_o["blockHeader"].get_obj()); + const RLP c_bRLP(c_blockRLP); + _current_BlockHeader.populateFromHeader(c_bRLP, false); + } + } +} + void doBlockTests(json_spirit::mValue& _v, bool _fillin) { for (auto& i: _v.get_obj()) @@ -214,76 +284,9 @@ void doBlockTests(json_spirit::mValue& _v, bool _fillin) BlockInfo current_BlockHeader = state.info(); // overwrite blockheader with (possible wrong) data from "blockheader" in filler; - - if (o.count("blockHeader")) - { - if (o["blockHeader"].get_obj().size() != 14) - { - - BlockInfo tmp = current_BlockHeader; - - if (o["blockHeader"].get_obj().count("parentHash")) - tmp.parentHash = h256(o["blockHeader"].get_obj()["parentHash"].get_str()); - - if (o["blockHeader"].get_obj().count("uncleHash")) - tmp.sha3Uncles = h256(o["blockHeader"].get_obj()["uncleHash"].get_str()); - - if (o["blockHeader"].get_obj().count("coinbase")) - tmp.coinbaseAddress = Address(o["blockHeader"].get_obj()["coinbase"].get_str()); - - if (o["blockHeader"].get_obj().count("stateRoot")) - tmp.stateRoot = h256(o["blockHeader"].get_obj()["stateRoot"].get_str()); - - if (o["blockHeader"].get_obj().count("transactionsTrie")) - tmp.transactionsRoot = h256(o["blockHeader"].get_obj()["transactionsTrie"].get_str()); - - if (o["blockHeader"].get_obj().count("receiptTrie")) - tmp.receiptsRoot = h256(o["blockHeader"].get_obj()["receiptTrie"].get_str()); - - if (o["blockHeader"].get_obj().count("bloom")) - tmp.logBloom = LogBloom(o["blockHeader"].get_obj()["bloom"].get_str()); - - if (o["blockHeader"].get_obj().count("difficulty")) - tmp.difficulty = toInt(o["blockHeader"].get_obj()["difficulty"]); - - if (o["blockHeader"].get_obj().count("number")) - tmp.number = toInt(o["blockHeader"].get_obj()["number"]); - - if (o["blockHeader"].get_obj().count("gasLimit")) - tmp.gasLimit = toInt(o["blockHeader"].get_obj()["gasLimit"]); - - if (o["blockHeader"].get_obj().count("gasUsed")) - tmp.gasUsed = toInt(o["blockHeader"].get_obj()["gasUsed"]); - - if (o["blockHeader"].get_obj().count("timestamp")) - tmp.timestamp = toInt(o["blockHeader"].get_obj()["timestamp"]); - - if (o["blockHeader"].get_obj().count("extraData")) - tmp.extraData = importByteArray(o["blockHeader"].get_obj()["extraData"].get_str()); - - // find new valid nonce - - if (tmp != current_BlockHeader) - { - current_BlockHeader = tmp; - cout << "new header!\n"; - ProofOfWork pow; - MineInfo ret; - while (!ProofOfWork::verify(current_BlockHeader.headerHash(WithoutNonce), current_BlockHeader.nonce, current_BlockHeader.difficulty)) - tie(ret, current_BlockHeader.nonce) = pow.mine(current_BlockHeader.headerHash(WithoutNonce), current_BlockHeader.difficulty, 10000, true, true); - } - } - else - { - // take the blockheader as is - const bytes c_blockRLP = createBlockRLPFromFields(o["blockHeader"].get_obj()); - const RLP c_bRLP(c_blockRLP); - current_BlockHeader.populateFromHeader(c_bRLP, false); - } - } + overwriteBlockHeader(o, current_BlockHeader); // write block header - mObject oBlockHeader; oBlockHeader["parentHash"] = toString(current_BlockHeader.parentHash); oBlockHeader["uncleHash"] = toString(current_BlockHeader.sha3Uncles); @@ -423,7 +426,6 @@ void doBlockTests(json_spirit::mValue& _v, bool _fillin) BOOST_CHECK_MESSAGE(blockHeaderFromFields == blockFromRlp, "However, blockHeaderFromFields != blockFromRlp!"); //Check transaction list - Transactions txsFromField; for (auto const& txObj: o["transactions"].get_array()) @@ -511,9 +513,9 @@ BOOST_AUTO_TEST_CASE(blForkBlocks) dev::test::executeTests("blForkBlocks", "/BlockTests", dev::test::doBlockTests); } -BOOST_AUTO_TEST_CASE(userDefinedFileBl) +BOOST_AUTO_TEST_CASE(userDefinedFile) { - dev::test::userDefinedTest("--bltest", dev::test::doBlockTests); + dev::test::userDefinedTest("--singletest", dev::test::doBlockTests); } BOOST_AUTO_TEST_SUITE_END() diff --git a/test/state.cpp b/test/state.cpp index 1581e4055..fe133822a 100644 --- a/test/state.cpp +++ b/test/state.cpp @@ -241,7 +241,7 @@ BOOST_AUTO_TEST_CASE(stCreateTest) BOOST_AUTO_TEST_CASE(userDefinedFileState) { - dev::test::userDefinedTest("--statetest", dev::test::doStateTests); + dev::test::userDefinedTest("--singletest", dev::test::doStateTests); } BOOST_AUTO_TEST_SUITE_END() diff --git a/test/transaction.cpp b/test/transaction.cpp index 8cda18f1e..83fd8da4d 100644 --- a/test/transaction.cpp +++ b/test/transaction.cpp @@ -167,9 +167,9 @@ BOOST_AUTO_TEST_CASE(ttCreateTest) } } -BOOST_AUTO_TEST_CASE(userDefinedFileTT) +BOOST_AUTO_TEST_CASE(userDefinedFile) { - dev::test::userDefinedTest("--ttTest", dev::test::doTransactionTests); + dev::test::userDefinedTest("--singletest", dev::test::doTransactionTests); } BOOST_AUTO_TEST_SUITE_END() diff --git a/test/vm.cpp b/test/vm.cpp index 21bea0650..16f7385a0 100644 --- a/test/vm.cpp +++ b/test/vm.cpp @@ -592,9 +592,9 @@ BOOST_AUTO_TEST_CASE(vmRandom) } } -BOOST_AUTO_TEST_CASE(userDefinedFileVM) +BOOST_AUTO_TEST_CASE(userDefinedFile) { - dev::test::userDefinedTest("--vmtest", dev::test::doVMTests); + dev::test::userDefinedTest("--singletest", dev::test::doVMTests); } BOOST_AUTO_TEST_SUITE_END() From 0c16c19a1fc59d4161dba9b8a5e7a3ddbf777289 Mon Sep 17 00:00:00 2001 From: winsvega Date: Mon, 2 Mar 2015 18:21:41 +0300 Subject: [PATCH 3/4] Transaction Tests missing TestHelper.h file --- test/TestHelper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/TestHelper.h b/test/TestHelper.h index c4dde1a60..3707a5fff 100644 --- a/test/TestHelper.h +++ b/test/TestHelper.h @@ -52,7 +52,7 @@ public: void importEnv(json_spirit::mObject& _o); void importState(json_spirit::mObject& _o, eth::State& _state); void importTransaction(json_spirit::mObject& _o); - void exportTest(bytes _output, eth::State& _statePost); + void exportTest(bytes const& _output, eth::State const& _statePost); eth::State m_statePre; eth::State m_statePost;