aboutsummaryrefslogtreecommitdiffstats
path: root/core/block_cache_test.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-20 22:54:42 +0800
committerobscuren <geffobscura@gmail.com>2015-03-20 22:54:42 +0800
commitdeee9cb170ff105992ede83c52013d0c2c4ad10d (patch)
treea7e8a5267f0c3a03d26e20dc8bcd5f0b3a21feb9 /core/block_cache_test.go
parent01ff0b3176e6d83dcc5e6716f04301de71e3fc9e (diff)
downloaddexon-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar
dexon-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar.gz
dexon-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar.bz2
dexon-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar.lz
dexon-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar.xz
dexon-deee9cb170ff105992ede83c52013d0c2c4ad10d.tar.zst
dexon-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.go48
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())
+ }
+ }
+}