aboutsummaryrefslogtreecommitdiffstats
path: root/state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'state.cpp')
-rw-r--r--state.cpp77
1 files changed, 44 insertions, 33 deletions
diff --git a/state.cpp b/state.cpp
index 17ebe2b7..5202aff2 100644
--- a/state.cpp
+++ b/state.cpp
@@ -65,6 +65,7 @@ void doStateTests(json_spirit::mValue& v, bool _fillin)
catch (Exception const& _e)
{
cnote << "state execution did throw an exception: " << diagnostic_information(_e);
+ theState.commit();
}
catch (std::exception const& _e)
{
@@ -72,7 +73,13 @@ void doStateTests(json_spirit::mValue& v, bool _fillin)
}
if (_fillin)
+ {
+#if ETH_FATDB
importer.exportTest(output, theState);
+#else
+ BOOST_THROW_EXCEPTION(Exception() << errinfo_comment("You can not fill tests when FATDB is switched off"));
+#endif
+ }
else
{
BOOST_REQUIRE(o.count("post") > 0);
@@ -85,6 +92,7 @@ void doStateTests(json_spirit::mValue& v, bool _fillin)
checkLog(theState.pending().size() ? theState.log(0) : LogEntries(), importer.m_environment.sub.logs);
// check addresses
+#if ETH_FATDB
auto expectedAddrs = importer.m_statePost.addresses();
auto resultAddrs = theState.addresses();
for (auto& expectedPair : expectedAddrs)
@@ -103,6 +111,8 @@ void doStateTests(json_spirit::mValue& v, bool _fillin)
}
}
checkAddresses<map<Address, u256> >(expectedAddrs, resultAddrs);
+#endif
+ BOOST_CHECK_MESSAGE(theState.rootHash() == h256(o["postStateRoot"].get_str()), "wrong post state root");
}
}
}
@@ -162,50 +172,51 @@ BOOST_AUTO_TEST_CASE(stBlockHashTest)
BOOST_AUTO_TEST_CASE(stQuadraticComplexityTest)
{
- for (int i = 1; i < boost::unit_test::framework::master_test_suite().argc; ++i)
- {
- string arg = boost::unit_test::framework::master_test_suite().argv[i];
- if (arg == "--quadratic" || arg == "--all")
- {
- auto start = chrono::steady_clock::now();
-
- dev::test::executeTests("stQuadraticComplexityTest", "/StateTests", dev::test::doStateTests);
-
- auto end = chrono::steady_clock::now();
- auto duration(chrono::duration_cast<chrono::milliseconds>(end - start));
- cnote << "test duration: " << duration.count() << " milliseconds.\n";
- }
- }
+ for (int i = 1; i < boost::unit_test::framework::master_test_suite().argc; ++i)
+ {
+ string arg = boost::unit_test::framework::master_test_suite().argv[i];
+ if (arg == "--quadratic" || arg == "--all")
+ {
+ auto start = chrono::steady_clock::now();
+
+ dev::test::executeTests("stQuadraticComplexityTest", "/StateTests", dev::test::doStateTests);
+
+ auto end = chrono::steady_clock::now();
+ auto duration(chrono::duration_cast<chrono::milliseconds>(end - start));
+ cnote << "test duration: " << duration.count() << " milliseconds.\n";
+ }
+ }
}
BOOST_AUTO_TEST_CASE(stMemoryStressTest)
{
- for (int i = 1; i < boost::unit_test::framework::master_test_suite().argc; ++i)
- {
- string arg = boost::unit_test::framework::master_test_suite().argv[i];
- if (arg == "--memory" || arg == "--all")
- {
- auto start = chrono::steady_clock::now();
-
- dev::test::executeTests("stMemoryStressTest", "/StateTests", dev::test::doStateTests);
-
- auto end = chrono::steady_clock::now();
- auto duration(chrono::duration_cast<chrono::milliseconds>(end - start));
- cnote << "test duration: " << duration.count() << " milliseconds.\n";
- }
- }
+ for (int i = 1; i < boost::unit_test::framework::master_test_suite().argc; ++i)
+ {
+ string arg = boost::unit_test::framework::master_test_suite().argv[i];
+ if (arg == "--memory" || arg == "--all")
+ {
+ auto start = chrono::steady_clock::now();
+
+ dev::test::executeTests("stMemoryStressTest", "/StateTests", dev::test::doStateTests);
+
+ auto end = chrono::steady_clock::now();
+ auto duration(chrono::duration_cast<chrono::milliseconds>(end - start));
+ cnote << "test duration: " << duration.count() << " milliseconds.\n";
+ }
+ }
}
-BOOST_AUTO_TEST_CASE(stSolidityTest)
-{
- dev::test::executeTests("stSolidityTest", "/StateTests", dev::test::doStateTests);
-}
+ BOOST_AUTO_TEST_CASE(stSolidityTest)
+ {
+ dev::test::executeTests("stSolidityTest", "/StateTests", dev::test::doStateTests);
+ }
BOOST_AUTO_TEST_CASE(stMemoryTest)
{
- dev::test::executeTests("stMemoryTest", "/StateTests", dev::test::doStateTests);
+ dev::test::executeTests("stMemoryTest", "/StateTests", dev::test::doStateTests);
}
+
BOOST_AUTO_TEST_CASE(stCreateTest)
{
for (int i = 1; i < boost::unit_test::framework::master_test_suite().argc; ++i)