eth/downloader: prioritize block fetch based on chain position, cap memory use

This commit is contained in:
Péter Szilágyi
2015-05-06 15:32:53 +03:00
parent 97c37356fd
commit 4800c94392
11 changed files with 808 additions and 283 deletions

View File

@ -32,31 +32,30 @@ func createBlocksFromHashSet(hashes *set.Set) []*types.Block {
}
func TestChunking(t *testing.T) {
queue := newqueue()
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)
queue.Insert(hashes)
chunk1 := queue.get(peer1, 99)
chunk1 := queue.Reserve(peer1, 99)
if chunk1 == nil {
t.Errorf("chunk1 is nil")
t.FailNow()
}
chunk2 := queue.get(peer2, 99)
chunk2 := queue.Reserve(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 len(chunk1.Hashes) != 99 {
t.Error("expected chunk1 hashes to be 99, got", len(chunk1.Hashes))
}
if chunk2.hashes.Size() != 1 {
t.Error("expected chunk1 hashes to be 1, got", chunk2.hashes.Size())
if len(chunk2.Hashes) != 1 {
t.Error("expected chunk1 hashes to be 1, got", len(chunk2.Hashes))
}
}