aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2016-06-13 23:10:58 +0800
committerchriseth <c@ethdev.com>2016-06-29 05:18:54 +0800
commit966709b7d7ee70cfc550923e22e17a22556609a4 (patch)
tree191798580608041aedbfc5f97c30a8a4253e3dc0 /test
parent603bad34f9ea24a5a202ae7844549171c10c0ea2 (diff)
downloaddexon-solidity-966709b7d7ee70cfc550923e22e17a22556609a4.tar.gz
dexon-solidity-966709b7d7ee70cfc550923e22e17a22556609a4.tar.zst
dexon-solidity-966709b7d7ee70cfc550923e22e17a22556609a4.zip
logs
Diffstat (limited to 'test')
-rw-r--r--test/IPCSocket.cpp14
-rw-r--r--test/IPCSocket.h7
-rw-r--r--test/libsolidity/SolidityEndToEndTest.cpp12
-rw-r--r--test/libsolidity/SolidityExecutionFramework.cpp12
-rw-r--r--test/libsolidity/SolidityExecutionFramework.h9
5 files changed, 42 insertions, 12 deletions
diff --git a/test/IPCSocket.cpp b/test/IPCSocket.cpp
index f89cd335..2c1eb7a6 100644
--- a/test/IPCSocket.cpp
+++ b/test/IPCSocket.cpp
@@ -85,6 +85,15 @@ RPCSession::TransactionReceipt RPCSession::eth_getTransactionReceipt(string cons
BOOST_REQUIRE(!result.isNull());
receipt.gasUsed = result["gasUsed"].asString();
receipt.contractAddress = result["contractAddress"].asString();
+ for (auto const& log: result["logs"])
+ {
+ LogEntry entry;
+ entry.address = log["address"].asString();
+ entry.data = log["data"].asString();
+ for (auto const& topic: log["topics"])
+ entry.topics.push_back(topic.asString());
+ receipt.logEntries.push_back(entry);
+ }
return receipt;
}
@@ -174,10 +183,9 @@ Json::Value RPCSession::rpcCall(string const& _methodName, vector<string> const&
request += "],\"id\":" + to_string(m_rpcSequence) + "}";
++m_rpcSequence;
+ //cout << "Request: " << request << endl;
string reply = m_ipcSocket.sendRequest(request);
-
- cout << "Request: " << request << endl;
- cout << "Reply: " << reply << endl;
+ //cout << "Reply: " << reply << endl;
Json::Value result;
Json::Reader().parse(reply, result, false);
diff --git a/test/IPCSocket.h b/test/IPCSocket.h
index 9b4ab73e..bc641e88 100644
--- a/test/IPCSocket.h
+++ b/test/IPCSocket.h
@@ -59,10 +59,17 @@ public:
std::string toJson() const;
};
+ struct LogEntry {
+ std::string address;
+ std::vector<std::string> topics;
+ std::string data;
+ };
+
struct TransactionReceipt
{
std::string gasUsed;
std::string contractAddress;
+ std::vector<LogEntry> logEntries;
};
static RPCSession& instance(std::string const& _path);
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp
index 46677acb..3208cedf 100644
--- a/test/libsolidity/SolidityEndToEndTest.cpp
+++ b/test/libsolidity/SolidityEndToEndTest.cpp
@@ -1553,7 +1553,7 @@ BOOST_AUTO_TEST_CASE(log0)
"}\n";
compileAndRun(sourceCode);
callContractFunction("a()");
- BOOST_CHECK_EQUAL(m_logs.size(), 1);
+ BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1)));
BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 0);
@@ -1568,7 +1568,7 @@ BOOST_AUTO_TEST_CASE(log1)
"}\n";
compileAndRun(sourceCode);
callContractFunction("a()");
- BOOST_CHECK_EQUAL(m_logs.size(), 1);
+ BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1)));
BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 1);
@@ -1584,7 +1584,7 @@ BOOST_AUTO_TEST_CASE(log2)
"}\n";
compileAndRun(sourceCode);
callContractFunction("a()");
- BOOST_CHECK_EQUAL(m_logs.size(), 1);
+ BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1)));
BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 2);
@@ -1601,7 +1601,7 @@ BOOST_AUTO_TEST_CASE(log3)
"}\n";
compileAndRun(sourceCode);
callContractFunction("a()");
- BOOST_CHECK_EQUAL(m_logs.size(), 1);
+ BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1)));
BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 3);
@@ -1618,7 +1618,7 @@ BOOST_AUTO_TEST_CASE(log4)
"}\n";
compileAndRun(sourceCode);
callContractFunction("a()");
- BOOST_CHECK_EQUAL(m_logs.size(), 1);
+ BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1)));
BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 4);
@@ -1634,7 +1634,7 @@ BOOST_AUTO_TEST_CASE(log_in_constructor)
" }\n"
"}\n";
compileAndRun(sourceCode);
- BOOST_CHECK_EQUAL(m_logs.size(), 1);
+ BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1)));
BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 1);
diff --git a/test/libsolidity/SolidityExecutionFramework.cpp b/test/libsolidity/SolidityExecutionFramework.cpp
index 5c8aff8d..871c0eba 100644
--- a/test/libsolidity/SolidityExecutionFramework.cpp
+++ b/test/libsolidity/SolidityExecutionFramework.cpp
@@ -39,7 +39,6 @@ ExecutionFramework::ExecutionFramework():
if (g_logVerbosity != -1)
g_logVerbosity = 0;
- cout << "New Framework" << endl;
m_rpc.test_rewindToBlock(0);
}
@@ -69,9 +68,18 @@ void ExecutionFramework::sendMessage(bytes const& _data, bool _isCreation, u256
BOOST_REQUIRE(m_contractAddress);
string code = m_rpc.eth_getCode(receipt.contractAddress, "latest");
BOOST_REQUIRE(code.size() > 2);
- m_output = asBytes(code);
+ m_output = fromHex(code, WhenError::Throw);
}
m_gasUsed = u256(receipt.gasUsed);
m_logs.clear();
+ for (auto const& log: receipt.logEntries)
+ {
+ LogEntry entry;
+ entry.address = Address(log.address);
+ for (auto const& topic: log.topics)
+ entry.topics.push_back(h256(topic));
+ entry.data = fromHex(log.data, WhenError::Throw);
+ m_logs.push_back(entry);
+ }
}
diff --git a/test/libsolidity/SolidityExecutionFramework.h b/test/libsolidity/SolidityExecutionFramework.h
index 512f515f..8e266819 100644
--- a/test/libsolidity/SolidityExecutionFramework.h
+++ b/test/libsolidity/SolidityExecutionFramework.h
@@ -253,6 +253,13 @@ protected:
RPCSession& m_rpc;
+ struct LogEntry
+ {
+ Address address;
+ std::vector<h256> topics;
+ bytes data;
+ };
+
std::unique_ptr<eth::SealEngineFace> m_sealEngine;
size_t m_optimizeRuns = 200;
bool m_optimize = false;
@@ -265,7 +272,7 @@ protected:
u256 const m_gasPrice = 100 * eth::szabo;
u256 const m_gas = 100000000;
bytes m_output;
- eth::LogEntries m_logs;
+ std::vector<LogEntry> m_logs;
u256 m_gasUsed;
};