From 31f82eb3347454f64f3d41de3087109d09597806 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 24 Apr 2015 15:04:58 +0200 Subject: eth, eth/downloader: don't require td on downloader. Fixed tests --- eth/downloader/downloader.go | 5 +---- eth/downloader/downloader_test.go | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 21 deletions(-) (limited to 'eth/downloader') diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 6ac8310b3..00c4cd88f 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -39,7 +39,6 @@ var ( type hashCheckFn func(common.Hash) bool type chainInsertFn func(types.Blocks) error type hashIterFn func() (common.Hash, error) -type currentTdFn func() *big.Int type blockPack struct { peerId string @@ -61,7 +60,6 @@ type Downloader struct { // Callbacks hasBlock hashCheckFn insertChain chainInsertFn - currentTd currentTdFn // Status fetchingHashes int32 @@ -76,13 +74,12 @@ type Downloader struct { quit chan struct{} } -func New(hasBlock hashCheckFn, insertChain chainInsertFn, currentTd currentTdFn) *Downloader { +func New(hasBlock hashCheckFn, insertChain chainInsertFn) *Downloader { downloader := &Downloader{ queue: newqueue(), peers: make(peers), hasBlock: hasBlock, insertChain: insertChain, - currentTd: currentTd, newPeerCh: make(chan *peer, 1), syncCh: make(chan syncPack, 1), hashCh: make(chan []common.Hash, 1), diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 1d449cfba..ddb3ec7ae 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -49,7 +49,7 @@ type downloadTester struct { func newTester(t *testing.T, hashes []common.Hash, blocks map[common.Hash]*types.Block) *downloadTester { tester := &downloadTester{t: t, hashes: hashes, blocks: blocks, done: make(chan bool)} - downloader := New(tester.hasBlock, tester.insertChain, func() *big.Int { return new(big.Int) }) + downloader := New(tester.hasBlock, tester.insertChain) tester.downloader = downloader return tester @@ -112,7 +112,8 @@ func TestDownload(t *testing.T) { minDesiredPeerCount = 4 blockTtl = 1 * time.Second - hashes := createHashes(0, 1000) + targetBlocks := 1000 + hashes := createHashes(0, targetBlocks) blocks := createBlocksFromHashes(hashes) tester := newTester(t, hashes, blocks) @@ -121,21 +122,21 @@ func TestDownload(t *testing.T) { tester.badBlocksPeer("peer3", big.NewInt(0), common.Hash{}) tester.badBlocksPeer("peer4", big.NewInt(0), common.Hash{}) -success: - select { - case <-tester.done: - break success - case <-time.After(10 * time.Second): // XXX this could actually fail on a slow computer - t.Error("timeout") + blox, err := tester.downloader.Synchronise("peer1", hashes[0]) + if err != nil { + t.Error("download error", err) + } + + if len(blox) != targetBlocks { + t.Error("expected", targetBlocks, "have", len(blox)) } } func TestMissing(t *testing.T) { - t.Skip() - glog.SetV(logger.Detail) glog.SetToStderr(true) + targetBlocks := 1000 hashes := createHashes(0, 1000) extraHashes := createHashes(1001, 1003) blocks := createBlocksFromHashes(append(extraHashes, hashes...)) @@ -146,13 +147,12 @@ func TestMissing(t *testing.T) { hashes = append(extraHashes, hashes[:len(hashes)-1]...) tester.newPeer("peer2", big.NewInt(0), common.Hash{}) -success1: - select { - case <-tester.done: - break success1 - case <-time.After(10 * time.Second): // XXX this could actually fail on a slow computer - t.Error("timout") + blox, err := tester.downloader.Synchronise("peer1", hashes[0]) + if err != nil { + t.Error("download error", err) } - tester.downloader.AddBlock("peer2", blocks[hashes[len(hashes)-1]], big.NewInt(10001)) + if len(blox) != targetBlocks { + t.Error("expected", targetBlocks, "have", len(blox)) + } } -- cgit v1.2.3