|
|
|
@ -197,10 +197,7 @@ func TestTaking(t *testing.T) { |
|
|
|
|
if err != nil { |
|
|
|
|
t.Error("download error", err) |
|
|
|
|
} |
|
|
|
|
bs, err := tester.downloader.TakeBlocks() |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("failed to take blocks: %v", err) |
|
|
|
|
} |
|
|
|
|
bs := tester.downloader.TakeBlocks() |
|
|
|
|
if len(bs) != targetBlocks { |
|
|
|
|
t.Error("retrieved block mismatch: have %v, want %v", len(bs), targetBlocks) |
|
|
|
|
} |
|
|
|
@ -280,8 +277,7 @@ func TestThrottling(t *testing.T) { |
|
|
|
|
time.Sleep(time.Millisecond) |
|
|
|
|
} |
|
|
|
|
// Take a batch of blocks and accumulate
|
|
|
|
|
blocks, _ := tester.downloader.TakeBlocks() |
|
|
|
|
took = append(took, blocks...) |
|
|
|
|
took = append(took, tester.downloader.TakeBlocks()...) |
|
|
|
|
} |
|
|
|
|
done <- struct{}{} |
|
|
|
|
}() |
|
|
|
@ -315,14 +311,13 @@ func TestNonExistingParentAttack(t *testing.T) { |
|
|
|
|
if err := tester.sync("attack", hashes[0]); err != nil { |
|
|
|
|
t.Fatalf("failed to synchronise blocks: %v", err) |
|
|
|
|
} |
|
|
|
|
bs, err := tester.downloader.TakeBlocks() |
|
|
|
|
if err != ErrUnknownParent { |
|
|
|
|
t.Fatalf("take error mismatch: have %v, want %v", err, ErrUnknownParent) |
|
|
|
|
bs := tester.downloader.TakeBlocks() |
|
|
|
|
if len(bs) != 1 { |
|
|
|
|
t.Fatalf("retrieved block mismatch: have %v, want %v", len(bs), 1) |
|
|
|
|
} |
|
|
|
|
if len(bs) != 0 { |
|
|
|
|
t.Error("retrieved block mismatch: have %v, want %v", len(bs), 0) |
|
|
|
|
if tester.hasBlock(bs[0].ParentHash()) { |
|
|
|
|
t.Fatalf("tester knows about the unknown hash") |
|
|
|
|
} |
|
|
|
|
// Cancel the download due to the parent attack
|
|
|
|
|
tester.downloader.Cancel() |
|
|
|
|
|
|
|
|
|
// Reconstruct a valid chain, and try to synchronize with it
|
|
|
|
@ -331,11 +326,8 @@ func TestNonExistingParentAttack(t *testing.T) { |
|
|
|
|
if err := tester.sync("valid", hashes[0]); err != nil { |
|
|
|
|
t.Fatalf("failed to synchronise blocks: %v", err) |
|
|
|
|
} |
|
|
|
|
bs, err = tester.downloader.TakeBlocks() |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("failed to retrieve blocks: %v", err) |
|
|
|
|
} |
|
|
|
|
bs = tester.downloader.TakeBlocks() |
|
|
|
|
if len(bs) != 1 { |
|
|
|
|
t.Error("retrieved block mismatch: have %v, want %v", len(bs), 1) |
|
|
|
|
t.Fatalf("retrieved block mismatch: have %v, want %v", len(bs), 1) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|