X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=database%2Fcache_test.go;h=9e71dc205f71834f54d10e52b2674d70baf98f22;hp=d7116ec1ff05d0a272c39da524d6b45552db505a;hb=0515c69584c7cfb67df0eebc095001e177979200;hpb=2febbf927df3a6234c0f4ea2db3b0f4611c8a264 diff --git a/database/cache_test.go b/database/cache_test.go index d7116ec1..9e71dc20 100644 --- a/database/cache_test.go +++ b/database/cache_test.go @@ -5,6 +5,7 @@ import ( "github.com/vapor/protocol/bc" "github.com/vapor/protocol/bc/types" + "github.com/vapor/protocol/state" ) func TestBlockCache(t *testing.T) { @@ -15,11 +16,21 @@ func TestBlockCache(t *testing.T) { }, } } + newVoteResult := func(seq uint64) *state.VoteResult { + return &state.VoteResult{ + Seq: seq, + } + } blocks := make(map[bc.Hash]*types.Block) for i := 0; i < maxCachedBlockHeaders+10; i++ { block := newBlock(uint64(i)) blocks[block.Hash()] = block } + voteResults := make(map[uint64]*state.VoteResult) + for i := 0; i < maxCachedVoteResults+10; i++ { + voteResult := newVoteResult(uint64(i)) + voteResults[voteResult.Seq] = voteResult + } fillBlockHeaderFn := func(hash *bc.Hash, height uint64) (*types.BlockHeader, error) { return &blocks[*hash].BlockHeader, nil @@ -29,7 +40,11 @@ func TestBlockCache(t *testing.T) { return blocks[*hash].Transactions, nil } - cache := newBlockCache(fillBlockHeaderFn, fillBlockTxsFn) + fillVoteResultFn := func(seq uint64) (*state.VoteResult, error) { + return voteResults[seq], nil + } + + cache := newBlockCache(fillBlockHeaderFn, fillBlockTxsFn, fillVoteResultFn) for i := 0; i < maxCachedBlockHeaders+10; i++ { block := newBlock(uint64(i)) @@ -52,4 +67,23 @@ func TestBlockCache(t *testing.T) { t.Fatalf("can't find new block") } } + + for i := 0; i < maxCachedVoteResults+10; i++ { + voteResult := newVoteResult(uint64(i)) + cache.lookupVoteResult(voteResult.Seq) + } + + for i := 0; i < 10; i++ { + voteResult := newVoteResult(uint64(i)) + if v, _ := cache.getVoteResult(voteResult.Seq); v != nil { + t.Fatalf("find old vote result") + } + } + + for i := 10; i < maxCachedVoteResults+10; i++ { + voteResult := newVoteResult(uint64(i)) + if v, _ := cache.getVoteResult(voteResult.Seq); v == nil { + t.Fatalf("can't find new vote result") + } + } }