Browse Source

Merge remote-tracking branch 'winsvega/block2' into winsvegaBlock2

Conflicts:
	test/libethereum/blockchain.cpp
cl-refactor
CJentzsch 10 years ago
parent
commit
e8da5d3f61
  1. 2
      test/libethereum/BlockchainTestsFiller/bcValidBlockTestFiller.json
  2. 22
      test/libethereum/blockchain.cpp

2
test/libethereum/BlockchainTestsFiller/bcValidBlockTestFiller.json

@ -167,7 +167,7 @@
}, },
"expect" : { "expect" : {
"095e7baea6a6c7c4c2dfeb977efac326af552d87" : { "095e7baea6a6c7c4c2dfeb977efac326af552d87" : {
"balance" : "100" "balance" : "5100"
} }
}, },
"pre" : { "pre" : {

22
test/libethereum/blockchain.cpp

@ -28,7 +28,6 @@
#include <libethereum/TransactionQueue.h> #include <libethereum/TransactionQueue.h>
#include <test/TestHelper.h> #include <test/TestHelper.h>
#include <libethereum/Block.h> #include <libethereum/Block.h>
#include <libethereum/GenesisInfo.h>
using namespace std; using namespace std;
using namespace json_spirit; using namespace json_spirit;
@ -70,9 +69,11 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
TBOOST_REQUIRE(o.count("pre")); TBOOST_REQUIRE(o.count("pre"));
ImportTest importer(o, _fillin, testType::BlockChainTests); ImportTest importer(o, _fillin, testType::BlockChainTests);
TransientDirectory tdStateDB; TransientDirectory td_stateDB_tmp;
BlockHeader biGenesisBlock = constructBlock(o["genesisBlockHeader"].get_obj(), h256{}); BlockHeader biGenesisBlock = constructBlock(o["genesisBlockHeader"].get_obj(), h256{});
State trueState(OverlayDB(State::openDB(tdStateDB.path(), h256{}, WithExisting::Kill)), BaseState::Empty);
State trueState(OverlayDB(State::openDB(td_stateDB_tmp.path(), h256{}, WithExisting::Kill)), BaseState::Empty);
Block trueBlock; //lastBlock of trueBlockchain
ImportTest::importState(o["pre"].get_obj(), trueState); ImportTest::importState(o["pre"].get_obj(), trueState);
o["pre"] = fillJsonWithState(trueState); //convert all fields to hex o["pre"] = fillJsonWithState(trueState); //convert all fields to hex
trueState.commit(); trueState.commit();
@ -83,7 +84,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
if (_fillin) if (_fillin)
biGenesisBlock = constructBlock(o["genesisBlockHeader"].get_obj(), trueState.rootHash()); biGenesisBlock = constructBlock(o["genesisBlockHeader"].get_obj(), trueState.rootHash());
else else
TBOOST_CHECK_MESSAGE((biGenesisBlock.stateRoot() == trueState.rootHash()), "root hash does not match"); TBOOST_CHECK_MESSAGE((biGenesisBlock.stateRoot() == trueState.rootHash()), testname + "root hash does not match");
if (_fillin) if (_fillin)
{ {
@ -128,12 +129,12 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
vBiBlocks.clear(); vBiBlocks.clear();
vBiBlocks.push_back(biGenesisBlock); vBiBlocks.push_back(biGenesisBlock);
TransientDirectory tdBc; TransientDirectory td_bc;
TransientDirectory tdStateDB; TransientDirectory td_stateDB;
FullBlockChain<Ethash> bc(rlpGenesisBlock.out(), AccountMap(), tdBc.path(), WithExisting::Kill); FullBlockChain<Ethash> bc(rlpGenesisBlock.out(), AccountMap(), td_bc.path(), WithExisting::Kill);
//OverlayDB database (State::openDB(td_stateDB.path(), h256{}, WithExisting::Kill)); //OverlayDB database (State::openDB(td_stateDB.path(), h256{}, WithExisting::Kill));
State state(OverlayDB(State::openDB(tdStateDB.path(), h256{}, WithExisting::Kill)), BaseState::Empty); //= importer.m_statePre; State state(OverlayDB(State::openDB(td_stateDB.path(), h256{}, WithExisting::Kill)), BaseState::Empty); //= importer.m_statePre;
ImportTest::importState(o["pre"].get_obj(), state); ImportTest::importState(o["pre"].get_obj(), state);
state.commit(); state.commit();
@ -190,7 +191,8 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
bc.sync(uncleBlockQueue, state.db(), 4); bc.sync(uncleBlockQueue, state.db(), 4);
Block block = bc.genesisBlock(state.db()); Block block = bc.genesisBlock(state.db()); //NOT CLEAR WHAT IT RETURNS IF bc INITIALIZED WITH CUSTOM GENESIS BLOCK
block.setBeneficiary(biGenesisBlock.beneficiary());
try try
{ {
block.sync(bc); block.sync(bc);
@ -313,7 +315,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
AccountMaskMap expectStateMap; AccountMaskMap expectStateMap;
State stateExpect(OverlayDB(), BaseState::Empty); State stateExpect(OverlayDB(), BaseState::Empty);
ImportTest::importState(o["expect"].get_obj(), stateExpect, expectStateMap); ImportTest::importState(o["expect"].get_obj(), stateExpect, expectStateMap);
ImportTest::compareStates(stateExpect, trueState, expectStateMap, Options::get().checkState ? WhenError::Throw : WhenError::DontThrow); ImportTest::compareStates(stateExpect, trueBlock.state(), expectStateMap, Options::get().checkState ? WhenError::Throw : WhenError::DontThrow);
o.erase(o.find("expect")); o.erase(o.find("expect"));
} }

Loading…
Cancel
Save