diff options
author | subtly <subtly@users.noreply.github.com> | 2014-11-13 09:05:54 +0800 |
---|---|---|
committer | subtly <subtly@users.noreply.github.com> | 2014-11-13 09:05:54 +0800 |
commit | 00d92ca54edcaa7fbeeb74654f0702eab3752f07 (patch) | |
tree | 3c7d53670e870403d0d3e842cfc1d79c2468c568 | |
parent | 84b3fb6168a5deb1e40801407c5aaedd6801e313 (diff) | |
parent | e4f4eaf7c86481f4ee5f30f24cd1a26c239a4915 (diff) | |
download | dexon-solidity-00d92ca54edcaa7fbeeb74654f0702eab3752f07.tar.gz dexon-solidity-00d92ca54edcaa7fbeeb74654f0702eab3752f07.tar.zst dexon-solidity-00d92ca54edcaa7fbeeb74654f0702eab3752f07.zip |
Merge branch 'develop' into crypto
Conflicts:
libdevcrypto/Common.cpp
libdevcrypto/EC.cpp
-rw-r--r-- | createRandomTest.cpp | 9 | ||||
-rw-r--r-- | vm.cpp | 16 | ||||
-rw-r--r-- | whisperTopic.cpp | 84 |
3 files changed, 104 insertions, 5 deletions
diff --git a/createRandomTest.cpp b/createRandomTest.cpp index f74be930..60a2039c 100644 --- a/createRandomTest.cpp +++ b/createRandomTest.cpp @@ -32,6 +32,7 @@ #include <libdevcore/CommonIO.h> #include <libdevcore/CommonData.h> #include <libevmcore/Instruction.h> +#include <libevm/VM.h> #include "vm.h" using namespace std; @@ -142,10 +143,16 @@ void doMyTests(json_spirit::mValue& v) vm.reset(fev.gas); bytes output; + u256 gas; try { output = vm.go(fev).toBytes(); } + catch (eth::VMException const& _e) + { + cnote << "VM did throw an exception: " << diagnostic_information(_e); + gas = 0; + } catch (Exception const& _e) { cnote << "VM did throw an exception: " << diagnostic_information(_e); @@ -176,6 +183,6 @@ void doMyTests(json_spirit::mValue& v) o["post"] = mValue(fev.exportState()); o["callcreates"] = fev.exportCallCreates(); o["out"] = "0x" + toHex(output); - fev.push(o, "gas", vm.gas()); + fev.push(o, "gas", gas); } } @@ -298,19 +298,27 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) bytes output; VM vm(fev.gas); + + u256 gas; try { output = vm.go(fev, fev.simpleTrace()).toVector(); + gas = vm.gas(); + } + catch (VMException const& _e) + { + cnote << "VM did throw an exception: " << diagnostic_information(_e); + gas = 0; } catch (Exception const& _e) { cnote << "VM did throw an exception: " << diagnostic_information(_e); - //BOOST_ERROR("Failed VM Test with Exception: " << e.what()); + BOOST_ERROR("Failed VM Test with Exception: " << _e.what()); } catch (std::exception const& _e) { cnote << "VM did throw an exception: " << _e.what(); - //BOOST_ERROR("Failed VM Test with Exception: " << e.what()); + BOOST_ERROR("Failed VM Test with Exception: " << _e.what()); } // delete null entries in storage for the sake of comparison @@ -337,7 +345,7 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) o["post"] = mValue(fev.exportState()); o["callcreates"] = fev.exportCallCreates(); o["out"] = "0x" + toHex(output); - fev.push(o, "gas", vm.gas()); + fev.push(o, "gas", gas); } else { @@ -352,7 +360,7 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) checkOutput(output, o); - BOOST_CHECK_EQUAL(toInt(o["gas"]), vm.gas()); + BOOST_CHECK_EQUAL(toInt(o["gas"]), gas); auto& expectedAddrs = test.addresses; auto& resultAddrs = fev.addresses; diff --git a/whisperTopic.cpp b/whisperTopic.cpp new file mode 100644 index 00000000..493b37bc --- /dev/null +++ b/whisperTopic.cpp @@ -0,0 +1,84 @@ +/* + This file is part of cpp-ethereum. + + cpp-ethereum is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + cpp-ethereum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>. +*/ +/** @file whisperTopic.cpp + * @author Gav Wood <i@gavwood.com> + * @date 2014 + */ +#include <functional> +#include <boost/test/unit_test.hpp> +#include <libp2p/Host.h> +#include <libwhisper/WhisperPeer.h> +#include <libwhisper/WhisperHost.h> +using namespace std; +using namespace dev; +using namespace dev::p2p; +using namespace dev::shh; + +BOOST_AUTO_TEST_SUITE(whisper) + +BOOST_AUTO_TEST_CASE(topic) +{ + g_logVerbosity = 0; + + bool started = false; + unsigned result = 0; + std::thread listener([&]() + { + setThreadName("other"); + + Host ph("Test", NetworkPreferences(30303, "", false, true)); + auto wh = ph.registerCapability(new WhisperHost()); + ph.start(); + + started = true; + + /// Only interested in odd packets + auto w = wh->installWatch(BuildTopicMask()("odd")); + + for (int i = 0, last = 0; i < 100 && last < 81; ++i) + { + for (auto i: wh->checkWatch(w)) + { + Message msg = wh->envelope(i).open(); + last = RLP(msg.payload()).toInt<unsigned>(); + cnote << "New message from:" << msg.from().abridged() << RLP(msg.payload()).toInt<unsigned>(); + result += last; + } + this_thread::sleep_for(chrono::milliseconds(50)); + } + }); + + while (!started) + this_thread::sleep_for(chrono::milliseconds(50)); + + Host ph("Test", NetworkPreferences(30300, "", false, true)); + auto wh = ph.registerCapability(new WhisperHost()); + ph.start(); + ph.connect("127.0.0.1", 30303); + + KeyPair us = KeyPair::create(); + for (int i = 0; i < 10; ++i) + { + wh->post(us.sec(), RLPStream().append(i * i).out(), BuildTopic(i)(i % 2 ? "odd" : "even")); + this_thread::sleep_for(chrono::milliseconds(250)); + } + + listener.join(); + BOOST_REQUIRE_EQUAL(result, 1 + 9 + 25 + 49 + 81); +} + +BOOST_AUTO_TEST_SUITE_END() |