aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGav Wood <i@gavwood.com>2015-03-02 05:54:05 +0800
committerGav Wood <i@gavwood.com>2015-03-06 19:19:43 +0800
commit25c1498b0443c4f606d12e6eb3f1ee8c22e9cd6d (patch)
treeafb7837bb83f93744a7158da86b772d7e2dac487
parent6da03561d7a81ee02a7a5dd9331b0e1553edff15 (diff)
downloaddexon-solidity-25c1498b0443c4f606d12e6eb3f1ee8c22e9cd6d.tar.gz
dexon-solidity-25c1498b0443c4f606d12e6eb3f1ee8c22e9cd6d.tar.zst
dexon-solidity-25c1498b0443c4f606d12e6eb3f1ee8c22e9cd6d.zip
State integration test.
Fixes to the FatTrie.
-rw-r--r--CMakeLists.txt2
-rw-r--r--stateOriginal.cpp36
-rw-r--r--trie.cpp20
3 files changed, 48 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7ddfdb40..292f62a0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,7 +26,7 @@ target_link_libraries(testeth ethereum)
target_link_libraries(testeth ethcore)
target_link_libraries(testeth secp256k1)
target_link_libraries(testeth solidity)
-if (NOT HEADLESS)
+if (NOT HEADLESS AND NOT JUSTTESTS)
target_link_libraries(testeth webthree)
target_link_libraries(testeth natspec)
endif()
diff --git a/stateOriginal.cpp b/stateOriginal.cpp
index 65ff5084..5b7b0415 100644
--- a/stateOriginal.cpp
+++ b/stateOriginal.cpp
@@ -20,6 +20,7 @@
* State test functions.
*/
+#include <boost/test/unit_test.hpp>
#include <boost/filesystem/operations.hpp>
#include <secp256k1/secp256k1.h>
#include <libethereum/CanonBlockChain.h>
@@ -29,7 +30,21 @@ using namespace std;
using namespace dev;
using namespace dev::eth;
-int stateTest()
+namespace dev
+{
+namespace test
+{
+
+int stateTest();
+
+BOOST_AUTO_TEST_SUITE(StateIntegration)
+
+BOOST_AUTO_TEST_CASE(Basic)
+{
+ State s;
+}
+
+BOOST_AUTO_TEST_CASE(Complex)
{
cnote << "Testing State...";
@@ -37,14 +52,15 @@ int stateTest()
KeyPair myMiner = sha3("Gav's Miner");
// KeyPair you = sha3("123");
- Defaults::setDBPath(boost::filesystem::temp_directory_path().string());
+ Defaults::setDBPath(boost::filesystem::temp_directory_path().string() + "/" + toString(chrono::system_clock::now().time_since_epoch().count()));
OverlayDB stateDB = State::openDB();
CanonBlockChain bc;
- State s(myMiner.address(), stateDB);
-
cout << bc;
+ State s(myMiner.address(), stateDB);
+ cout << s;
+
// Sync up - this won't do much until we use the last state.
s.sync(bc);
@@ -52,7 +68,7 @@ int stateTest()
// Mine to get some ether!
s.commitToMine(bc);
- while (!s.mine(100).completed) {}
+ while (!s.mine(100, true).completed) {}
s.completeMine();
bc.attemptImport(s.blockData(), stateDB);
@@ -65,7 +81,7 @@ int stateTest()
// Inject a transaction to transfer funds from miner to me.
bytes tx;
{
- Transaction t(1000, 0, 0, me.address(), bytes(), s.transactionsFrom(myMiner.address()), myMiner.secret());
+ Transaction t(1000, 10000, 10000, me.address(), bytes(), s.transactionsFrom(myMiner.address()), myMiner.secret());
assert(t.sender() == myMiner.address());
tx = t.rlp();
}
@@ -76,7 +92,7 @@ int stateTest()
// Mine to get some ether and set in stone.
s.commitToMine(bc);
s.commitToMine(bc);
- while (!s.mine(50).completed) { s.commitToMine(bc); }
+ while (!s.mine(100, true).completed) {}
s.completeMine();
bc.attemptImport(s.blockData(), stateDB);
@@ -85,7 +101,9 @@ int stateTest()
s.sync(bc);
cout << s;
-
- return 0;
}
+BOOST_AUTO_TEST_SUITE_END()
+
+}
+}
diff --git a/trie.cpp b/trie.cpp
index 4b676fb9..aa453925 100644
--- a/trie.cpp
+++ b/trie.cpp
@@ -52,6 +52,26 @@ using dev::operator <<;
BOOST_AUTO_TEST_SUITE(TrieTests)
+BOOST_AUTO_TEST_CASE(fat_trie)
+{
+ h256 r;
+ MemoryDB fm;
+ {
+ FatGenericTrieDB<MemoryDB> ft(&fm);
+ ft.init();
+ ft.insert(h256("69", h256::FromHex, h256::AlignRight).ref(), h256("414243", h256::FromHex, h256::AlignRight).ref());
+ for (auto i: ft)
+ cnote << i.first << i.second;
+ r = ft.root();
+ }
+ {
+ FatGenericTrieDB<MemoryDB> ft(&fm);
+ ft.setRoot(r);
+ for (auto i: ft)
+ cnote << i.first << i.second;
+ }
+}
+
BOOST_AUTO_TEST_CASE(trie_test_anyorder)
{
string testPath = test::getTestPath();