From 871dfd399be8ee657109112d527645c2c1b3a8f9 Mon Sep 17 00:00:00 2001 From: Gustav Simonsson Date: Tue, 3 Mar 2015 18:41:51 +0100 Subject: Add initial implementation of block tests * Add blocktest cmd and support for block tests files in tests/BlockTests , the launched node does not connect to network, resets state with a genesis block from the test file and starts the RPC API --- core/chain_manager.go | 15 +++++++++++++++ core/error.go | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'core') diff --git a/core/chain_manager.go b/core/chain_manager.go index f2382cf8d..17bfb1f3e 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -231,6 +231,21 @@ func (bc *ChainManager) Reset() { bc.setTotalDifficulty(ethutil.Big("0")) } +func (bc *ChainManager) ResetWithGenesisBlock(gb *types.Block) { + bc.mu.Lock() + defer bc.mu.Unlock() + + for block := bc.currentBlock; block != nil; block = bc.GetBlock(block.Header().ParentHash) { + bc.db.Delete(block.Hash()) + } + + // Prepare the genesis block + bc.genesisBlock = gb + bc.write(bc.genesisBlock) + bc.insert(bc.genesisBlock) + bc.currentBlock = bc.genesisBlock +} + func (self *ChainManager) Export() []byte { self.mu.RLock() defer self.mu.RUnlock() diff --git a/core/error.go b/core/error.go index fb1eaed84..514cd076b 100644 --- a/core/error.go +++ b/core/error.go @@ -22,7 +22,7 @@ func (err *ParentErr) Error() string { } func ParentError(hash []byte) error { - return &ParentErr{Message: fmt.Sprintf("Block's parent unkown %x", hash)} + return &ParentErr{Message: fmt.Sprintf("Block's parent unknown %x", hash)} } func IsParentErr(err error) bool { -- cgit