diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-20 22:54:42 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-20 22:54:42 +0800 |
commit | deee9cb170ff105992ede83c52013d0c2c4ad10d (patch) | |
tree | a7e8a5267f0c3a03d26e20dc8bcd5f0b3a21feb9 /core/block_cache_test.go | |
parent | 01ff0b3176e6d83dcc5e6716f04301de71e3fc9e (diff) | |
download | go-tangerine-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar.gz go-tangerine-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar.zst go-tangerine-deee9cb170ff105992ede83c52013d0c2c4ad10d.zip |
Added caching for block chain. Currently set to 10k
Diffstat (limited to 'core/block_cache_test.go')
-rw-r--r-- | core/block_cache_test.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/core/block_cache_test.go b/core/block_cache_test.go new file mode 100644 index 000000000..d4f610b71 --- /dev/null +++ b/core/block_cache_test.go @@ -0,0 +1,48 @@ +package core + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" +) + +func newChain(size int) (chain []*types.Block) { + var parentHash common.Hash + for i := 0; i < size; i++ { + block := types.NewBlock(parentHash, common.Address{}, common.Hash{}, new(big.Int), 0, "") + block.Header().Number = big.NewInt(int64(i)) + chain = append(chain, block) + parentHash = block.Hash() + } + return +} + +func insertChainCache(cache *BlockCache, chain []*types.Block) { + for _, block := range chain { + cache.Push(block) + } +} + +func TestNewBlockCache(t *testing.T) { + chain := newChain(3) + cache := NewBlockCache(2) + insertChainCache(cache, chain) + + if cache.hashes[0] != chain[1].Hash() { + t.Error("oldest block incorrect") + } +} + +func TestInclusion(t *testing.T) { + chain := newChain(3) + cache := NewBlockCache(3) + insertChainCache(cache, chain) + + for _, block := range chain { + if b := cache.Get(block.Hash()); b == nil { + t.Errorf("getting %x failed", block.Hash()) + } + } +} |