From a6ec55bb31d59acdd9d21d8a1fc9551c7c571c23 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Wed, 11 May 2022 17:09:28 +0530 Subject: [PATCH] fix tests and format --- eth/downloader/downloader.go | 28 ++++++++++----------- eth/downloader/downloader_test.go | 2 +- eth/downloader/whitelist/service.go | 6 ++--- eth/downloader/whitelist/service_test.go | 32 ++++++++++++++++++++++++ eth/handler_eth_test.go | 22 ---------------- 5 files changed, 50 insertions(+), 40 deletions(-) create mode 100644 eth/downloader/whitelist/service_test.go diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index ae00350464..209d039f90 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -218,19 +218,19 @@ func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain Bl lightchain = chain } dl := &Downloader{ - stateDB: stateDb, - mux: mux, - checkpoint: checkpoint, - queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), - peers: newPeerSet(), - blockchain: chain, - lightchain: lightchain, - dropPeer: dropPeer, - headerProcCh: make(chan *headerTask, 1), - quitCh: make(chan struct{}), - SnapSyncer: snap.NewSyncer(stateDb), - stateSyncStart: make(chan *stateSync), - ChainValidator: whitelistService, + stateDB: stateDb, + mux: mux, + checkpoint: checkpoint, + queue: newQueue(blockCacheMaxItems, blockCacheInitialItems), + peers: newPeerSet(), + blockchain: chain, + lightchain: lightchain, + dropPeer: dropPeer, + headerProcCh: make(chan *headerTask, 1), + quitCh: make(chan struct{}), + SnapSyncer: snap.NewSyncer(stateDb), + stateSyncStart: make(chan *stateSync), + ChainValidator: whitelistService, } dl.skeleton = newSkeleton(stateDb, dl.peers, dropPeer, newBeaconBackfiller(dl, success)) @@ -792,7 +792,7 @@ func (d *Downloader) getFetchHeadersByNumber(p *peerConnection) func(number uint // the head links match), we do a binary search to find the common ancestor. func (d *Downloader) findAncestor(p *peerConnection, remoteHeader *types.Header) (uint64, error) { // Check the validity of chain to be downloaded - // TODO: we can use a mock and + // TODO: we can use a mock and if _, err := d.IsValidChain(remoteHeader, d.getFetchHeadersByNumber(p)); errors.Is(err, whitelist.ErrCheckpointMismatch) { return 0, err } diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index e2a3dca6be..fa6059b781 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -78,7 +78,7 @@ func newTester() *downloadTester { } // TODO: here we can inject a mock - tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil, whitelist.NewService()) + tester.downloader = New(0, db, new(event.TypeMux), tester.chain, nil, tester.dropPeer, nil, whitelist.NewService(10)) return tester } diff --git a/eth/downloader/whitelist/service.go b/eth/downloader/whitelist/service.go index 63851f3058..d79284bfad 100644 --- a/eth/downloader/whitelist/service.go +++ b/eth/downloader/whitelist/service.go @@ -15,17 +15,17 @@ var ( // Checkpoint whitelist type Service struct { - m sync.RWMutex + m sync.RWMutex checkpointWhitelist map[uint64]common.Hash // Checkpoint whitelist, populated by reaching out to heimdall checkpointOrder []uint64 // Checkpoint order, populated by reaching out to heimdall - maxCapacity uint + maxCapacity uint } func NewService(maxCapacity uint) *Service { return &Service{ checkpointWhitelist: make(map[uint64]common.Hash), checkpointOrder: []uint64{}, - maxCapacity: maxCapacity, + maxCapacity: maxCapacity, } } diff --git a/eth/downloader/whitelist/service_test.go b/eth/downloader/whitelist/service_test.go new file mode 100644 index 0000000000..dbd3f2f92e --- /dev/null +++ b/eth/downloader/whitelist/service_test.go @@ -0,0 +1,32 @@ +package whitelist + +import ( + "testing" + + "github.com/ethereum/go-ethereum/common" + "gotest.tools/assert" +) + +// NewMockService creates a new mock whitelist service +func NewMockService(maxCapacity uint) *Service { + return &Service{ + checkpointWhitelist: make(map[uint64]common.Hash), + checkpointOrder: []uint64{}, + maxCapacity: maxCapacity, + } +} + +// TestWhitelistCheckpoint checks the checkpoint whitelist map queue mechanism +func TestWhitelistCheckpoint(t *testing.T) { + t.Parallel() + + s := NewMockService(10) + for i := 0; i < 10; i++ { + s.EnqueueCheckpointWhitelist(uint64(i), common.Hash{}) + } + assert.Equal(t, len(s.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") + + s.EnqueueCheckpointWhitelist(11, common.Hash{}) + s.DequeueCheckpointWhitelist() + assert.Equal(t, len(s.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") +} diff --git a/eth/handler_eth_test.go b/eth/handler_eth_test.go index ec1329b059..7d5027ae77 100644 --- a/eth/handler_eth_test.go +++ b/eth/handler_eth_test.go @@ -39,7 +39,6 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" - "gotest.tools/assert" ) // testEthHandler is a mock event handler to listen for inbound network requests @@ -747,24 +746,3 @@ func testBroadcastMalformedBlock(t *testing.T, protocol uint) { } } } - -// TestWhitelistCheckpoint checks the checkpoint whitelist map queue mechanism -func TestWhitelistCheckpoint(t *testing.T) { - t.Parallel() - - testHandler := newTestHandler() - defer testHandler.close() - - ethHandler := (*ethHandler)(testHandler.handler) - for i := 0; i < 10; i++ { - ethHandler.downloader.EnqueueCheckpointWhitelist(uint64(i), common.Hash{}) - } - - assert.Equal(t, len(ethHandler.downloader.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") - - ethHandler.downloader.EnqueueCheckpointWhitelist(11, common.Hash{}) - ethHandler.downloader.DequeueCheckpointWhitelist() - - assert.Equal(t, len(ethHandler.downloader.GetCheckpointWhitelist()), 10, "expected 10 items in whitelist") - -}