aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGav Wood <g@ethdev.com>2015-04-05 05:56:07 +0800
committerGav Wood <g@ethdev.com>2015-04-05 05:56:07 +0800
commit158fdc17982c983be686fb928595c30076b7acb7 (patch)
tree922a60c54969886a037ae5d3cd8e308f5154026f
parent42ef1880271a99a69f6dcc5fbad97290baed8a2a (diff)
parentfc3ea6aa6cc4e7eb740ec0fb1c329b1fca1d372c (diff)
downloaddexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar
dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.gz
dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.bz2
dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.lz
dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.xz
dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.zst
dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.zip
Merge pull request #1466 from imapp-pl/pr/jit_cache
EVM JIT stack limit support
-rw-r--r--TestHelper.cpp19
-rw-r--r--TestHelper.h4
-rw-r--r--state.cpp5
-rw-r--r--vm.cpp5
4 files changed, 21 insertions, 12 deletions
diff --git a/TestHelper.cpp b/TestHelper.cpp
index 7dc00149..295b759f 100644
--- a/TestHelper.cpp
+++ b/TestHelper.cpp
@@ -29,6 +29,7 @@
#include <libethereum/Client.h>
#include <liblll/Compiler.h>
#include <libevm/VMFactory.h>
+#include "Stats.h"
using namespace std;
using namespace dev::eth;
@@ -431,6 +432,9 @@ void executeTests(const string& _name, const string& _testPathAppendix, std::fun
string testPath = getTestPath();
testPath += _testPathAppendix;
+ if (Options::get().stats)
+ Listener::registerListener(Stats::get());
+
if (Options::get().fillTests)
{
try
@@ -462,6 +466,7 @@ void executeTests(const string& _name, const string& _testPathAppendix, std::fun
string s = asString(dev::contents(testPath + "/" + _name + ".json"));
BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + testPath + "/" + _name + ".json is empty. Have you cloned the 'tests' repo branch develop and set ETHEREUM_TEST_PATH to its path?");
json_spirit::read_string(s, v);
+ Listener::notifySuiteStarted(_name);
doTests(v, false);
}
catch (Exception const& _e)
@@ -535,10 +540,12 @@ Options::Options()
vmtrace = true;
else if (arg == "--filltests")
fillTests = true;
- else if (arg == "--stats")
+ else if (arg.compare(0, 7, "--stats") == 0)
+ {
stats = true;
- else if (arg == "--stats=full")
- stats = statsFull = true;
+ if (arg.size() > 7)
+ statsOutFile = arg.substr(8); // skip '=' char
+ }
else if (arg == "--performance")
performance = true;
else if (arg == "--quadratic")
@@ -586,6 +593,12 @@ void Listener::registerListener(Listener& _listener)
g_listener = &_listener;
}
+void Listener::notifySuiteStarted(std::string const& _name)
+{
+ if (g_listener)
+ g_listener->suiteStarted(_name);
+}
+
void Listener::notifyTestStarted(std::string const& _name)
{
if (g_listener)
diff --git a/TestHelper.h b/TestHelper.h
index 022c715f..e5f96f51 100644
--- a/TestHelper.h
+++ b/TestHelper.h
@@ -164,7 +164,7 @@ public:
bool vmtrace = false; ///< Create EVM execution tracer // TODO: Link with log verbosity?
bool fillTests = false; ///< Create JSON test files from execution results
bool stats = false; ///< Execution time stats
- bool statsFull = false; ///< Output full stats - execution times for every test
+ std::string statsOutFile; ///< Stats output file. "out" for standard output
/// Test selection
/// @{
@@ -191,10 +191,12 @@ class Listener
public:
virtual ~Listener() = default;
+ virtual void suiteStarted(std::string const&) {}
virtual void testStarted(std::string const& _name) = 0;
virtual void testFinished() = 0;
static void registerListener(Listener& _listener);
+ static void notifySuiteStarted(std::string const& _name);
static void notifyTestStarted(std::string const& _name);
static void notifyTestFinished();
diff --git a/state.cpp b/state.cpp
index 7c586ec7..e4bf06bd 100644
--- a/state.cpp
+++ b/state.cpp
@@ -31,7 +31,6 @@
#include <libethereum/Defaults.h>
#include <libevm/VM.h>
#include "TestHelper.h"
-#include "Stats.h"
using namespace std;
using namespace json_spirit;
@@ -42,9 +41,6 @@ namespace dev { namespace test {
void doStateTests(json_spirit::mValue& v, bool _fillin)
{
- if (Options::get().stats)
- Listener::registerListener(Stats::get());
-
for (auto& i: v.get_obj())
{
std::cout << " " << i.first << "\n";
@@ -254,6 +250,7 @@ BOOST_AUTO_TEST_CASE(stRandom)
string s = asString(dev::contents(path.string()));
BOOST_REQUIRE_MESSAGE(s.length() > 0, "Content of " + path.string() + " is empty. Have you cloned the 'tests' repo branch develop and set ETHEREUM_TEST_PATH to its path?");
json_spirit::read_string(s, v);
+ test::Listener::notifySuiteStarted(path.filename().string());
dev::test::doStateTests(v, false);
}
catch (Exception const& _e)
diff --git a/vm.cpp b/vm.cpp
index 2bdafb27..cffbaa64 100644
--- a/vm.cpp
+++ b/vm.cpp
@@ -25,7 +25,6 @@
#include <libethereum/Executive.h>
#include <libevm/VMFactory.h>
#include "vm.h"
-#include "Stats.h"
using namespace std;
using namespace json_spirit;
@@ -311,9 +310,6 @@ namespace dev { namespace test {
void doVMTests(json_spirit::mValue& v, bool _fillin)
{
- if (Options::get().stats)
- Listener::registerListener(Stats::get());
-
for (auto& i: v.get_obj())
{
std::cout << " " << i.first << "\n";
@@ -549,6 +545,7 @@ BOOST_AUTO_TEST_CASE(vmRandom)
string s = asString(dev::contents(path.string()));
BOOST_REQUIRE_MESSAGE(s.length() > 0, "Content of " + path.string() + " is empty. Have you cloned the 'tests' repo branch develop and set ETHEREUM_TEST_PATH to its path?");
json_spirit::read_string(s, v);
+ test::Listener::notifySuiteStarted(path.filename().string());
doVMTests(v, false);
}
catch (Exception const& _e)