@ -20,7 +20,9 @@
* block test functions .
*/
# include <boost/filesystem.hpp>
# include <libdevcrypto/FileSystem.h>
# include <libtestutils/TransientDirectory.h>
# include <libethereum/CanonBlockChain.h>
# include "TestHelper.h"
@ -35,8 +37,8 @@ bytes createBlockRLPFromFields(mObject& _tObj);
void overwriteBlockHeader ( BlockInfo & _current_BlockHeader , mObject & _blObj ) ;
BlockInfo constructBlock ( mObject & _o ) ;
void updatePoW ( BlockInfo & _bi ) ;
void writeBlockHeaderToJson ( mObject & _o , const BlockInfo & _bi ) ;
RLPStream createFullBlockFromHeader ( const BlockInfo & _bi , const bytes & _txs = RLPEmptyList , const bytes & _uncles = RLPEmptyList ) ;
void writeBlockHeaderToJson ( mObject & _o , BlockInfo const & _bi ) ;
RLPStream createFullBlockFromHeader ( BlockInfo const & _bi , bytes const & _txs = RLPEmptyList , bytes const & _uncles = RLPEmptyList ) ;
void doBlockchainTests ( json_spirit : : mValue & _v , bool _fillin )
{
@ -75,7 +77,8 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
o [ " genesisRLP " ] = " 0x " + toHex ( rlpGenesisBlock . out ( ) ) ;
// construct blockchain
BlockChain bc ( rlpGenesisBlock . out ( ) , string ( ) , true ) ;
TransientDirectory td ;
BlockChain bc ( rlpGenesisBlock . out ( ) , td . path ( ) , true ) ;
if ( _fillin )
{
@ -241,6 +244,7 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
if ( sha3 ( RLP ( state . blockData ( ) ) [ 2 ] . data ( ) ) ! = sha3 ( RLP ( block2 . out ( ) ) [ 2 ] . data ( ) ) )
cnote < < " uncle list mismatch \n " < < RLP ( state . blockData ( ) ) [ 2 ] . data ( ) < < " \n " < < RLP ( block2 . out ( ) ) [ 2 ] . data ( ) ;
try
{
state . sync ( bc ) ;
@ -388,7 +392,6 @@ void doBlockchainTests(json_spirit::mValue& _v, bool _fillin)
BOOST_CHECK_MESSAGE ( txsFromField [ i ] = = txsFromRlp [ i ] , " transactions from rlp and transaction from field do not match " ) ;
BOOST_CHECK_MESSAGE ( txsFromField [ i ] . rlp ( ) = = txsFromRlp [ i ] . rlp ( ) , " transactions rlp do not match " ) ;
}
// check uncle list
@ -488,12 +491,12 @@ bytes createBlockRLPFromFields(mObject& _tObj)
return rlpStream . out ( ) ;
}
void overwriteBlockHeader ( BlockInfo & _current_ BlockHeader , mObject & _blObj )
void overwriteBlockHeader ( BlockInfo & _currentBlockHeader , mObject & _blObj )
{
if ( _blObj [ " blockHeader " ] . get_obj ( ) . size ( ) ! = 14 )
{
BlockInfo tmp = _current_ BlockHeader ;
BlockInfo tmp = _currentBlockHeader ;
if ( _blObj [ " blockHeader " ] . get_obj ( ) . count ( " parentHash " ) )
tmp . parentHash = h256 ( _blObj [ " blockHeader " ] . get_obj ( ) [ " parentHash " ] . get_str ( ) ) ;
@ -539,16 +542,16 @@ void overwriteBlockHeader(BlockInfo& _current_BlockHeader, mObject& _blObj)
// find new valid nonce
if ( tmp ! = _current_ BlockHeader )
if ( tmp ! = _currentBlockHeader )
{
_current_ BlockHeader = tmp ;
_currentBlockHeader = tmp ;
ProofOfWork pow ;
std : : pair < MineInfo , Ethash : : Proof > ret ;
while ( ! ProofOfWork : : verify ( _current_ BlockHeader ) )
while ( ! ProofOfWork : : verify ( _currentBlockHeader ) )
{
ret = pow . mine ( _current_ BlockHeader , 1000 , true , true ) ;
Ethash : : assignResult ( ret . second , _current_ BlockHeader ) ;
ret = pow . mine ( _currentBlockHeader , 1000 , true , true ) ;
Ethash : : assignResult ( ret . second , _currentBlockHeader ) ;
}
}
}
@ -557,13 +560,12 @@ void overwriteBlockHeader(BlockInfo& _current_BlockHeader, mObject& _blObj)
// take the blockheader as is
const bytes c_blockRLP = createBlockRLPFromFields ( _blObj [ " blockHeader " ] . get_obj ( ) ) ;
const RLP c_bRLP ( c_blockRLP ) ;
_current_ BlockHeader . populateFromHeader ( c_bRLP , IgnoreNonce ) ;
_currentBlockHeader . populateFromHeader ( c_bRLP , IgnoreNonce ) ;
}
}
BlockInfo constructBlock ( mObject & _o )
{
BlockInfo ret ;
try
{
@ -600,7 +602,7 @@ void updatePoW(BlockInfo& _bi)
_bi . hash = _bi . headerHash ( WithNonce ) ;
}
void writeBlockHeaderToJson ( mObject & _o , const BlockInfo & _bi )
void writeBlockHeaderToJson ( mObject & _o , BlockInfo const & _bi )
{
_o [ " parentHash " ] = toString ( _bi . parentHash ) ;
_o [ " uncleHash " ] = toString ( _bi . sha3Uncles ) ;
@ -620,7 +622,7 @@ void writeBlockHeaderToJson(mObject& _o, const BlockInfo& _bi)
_o [ " hash " ] = toString ( _bi . hash ) ;
}
RLPStream createFullBlockFromHeader ( const BlockInfo & _bi , const bytes & _txs , const bytes & _uncles )
RLPStream createFullBlockFromHeader ( BlockInfo const & _bi , bytes const & _txs , bytes const & _uncles )
{
RLPStream rlpStream ;
_bi . streamRLP ( rlpStream , WithNonce ) ;
@ -632,8 +634,8 @@ RLPStream createFullBlockFromHeader(const BlockInfo& _bi,const bytes& _txs, cons
return ret ;
}
} } // Namespace Close
} } // Namespace Close
BOOST_AUTO_TEST_SUITE ( BlockChainTests )