eth/downloader: added additional tests
This commit is contained in:
parent
c6ad3aec05
commit
25bc88113f
|
@ -23,12 +23,19 @@ func createHashes(start, amount int) (hashes []common.Hash) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createBlock(i int, prevHash, hash common.Hash) *types.Block {
|
||||||
|
header := &types.Header{Number: big.NewInt(int64(i))}
|
||||||
|
block := types.NewBlockWithHeader(header)
|
||||||
|
block.HeaderHash = hash
|
||||||
|
block.ParentHeaderHash = knownHash
|
||||||
|
return block
|
||||||
|
}
|
||||||
|
|
||||||
func createBlocksFromHashes(hashes []common.Hash) map[common.Hash]*types.Block {
|
func createBlocksFromHashes(hashes []common.Hash) map[common.Hash]*types.Block {
|
||||||
blocks := make(map[common.Hash]*types.Block)
|
blocks := make(map[common.Hash]*types.Block)
|
||||||
|
|
||||||
for i, hash := range hashes {
|
for i, hash := range hashes {
|
||||||
header := &types.Header{Number: big.NewInt(int64(len(hashes) - i))}
|
blocks[hash] = createBlock(len(hashes)-i, knownHash, hash)
|
||||||
blocks[hash] = types.NewBlockWithHeader(header)
|
|
||||||
blocks[hash].HeaderHash = hash
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return blocks
|
return blocks
|
||||||
|
@ -162,7 +169,7 @@ func TestTaking(t *testing.T) {
|
||||||
t.Error("download error", err)
|
t.Error("download error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
bs1 := tester.downloader.TakeBlocks(1000)
|
bs1 := tester.downloader.TakeBlocks()
|
||||||
if len(bs1) != 1000 {
|
if len(bs1) != 1000 {
|
||||||
t.Error("expected to take 1000, got", len(bs1))
|
t.Error("expected to take 1000, got", len(bs1))
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
package downloader
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
|
"gopkg.in/fatih/set.v0"
|
||||||
|
)
|
||||||
|
|
||||||
|
func createHashSet(hashes []common.Hash) *set.Set {
|
||||||
|
hset := set.New()
|
||||||
|
|
||||||
|
for _, hash := range hashes {
|
||||||
|
hset.Add(hash)
|
||||||
|
}
|
||||||
|
|
||||||
|
return hset
|
||||||
|
}
|
||||||
|
|
||||||
|
func createBlocksFromHashSet(hashes *set.Set) []*types.Block {
|
||||||
|
blocks := make([]*types.Block, hashes.Size())
|
||||||
|
|
||||||
|
var i int
|
||||||
|
hashes.Each(func(v interface{}) bool {
|
||||||
|
blocks[i] = createBlock(i, common.Hash{}, v.(common.Hash))
|
||||||
|
i++
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
return blocks
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestChunking(t *testing.T) {
|
||||||
|
queue := newqueue()
|
||||||
|
peer1 := newPeer("peer1", common.Hash{}, nil, nil)
|
||||||
|
peer2 := newPeer("peer2", common.Hash{}, nil, nil)
|
||||||
|
|
||||||
|
// 99 + 1 (1 == known genesis hash)
|
||||||
|
hashes := createHashes(0, 99)
|
||||||
|
hashSet := createHashSet(hashes)
|
||||||
|
queue.put(hashSet)
|
||||||
|
|
||||||
|
chunk1 := queue.get(peer1, 99)
|
||||||
|
if chunk1 == nil {
|
||||||
|
t.Errorf("chunk1 is nil")
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
chunk2 := queue.get(peer2, 99)
|
||||||
|
if chunk2 == nil {
|
||||||
|
t.Errorf("chunk2 is nil")
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
if chunk1.hashes.Size() != 99 {
|
||||||
|
t.Error("expected chunk1 hashes to be 99, got", chunk1.hashes.Size())
|
||||||
|
}
|
||||||
|
|
||||||
|
if chunk2.hashes.Size() != 1 {
|
||||||
|
t.Error("expected chunk1 hashes to be 1, got", chunk2.hashes.Size())
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue