plugeth-statediff/test_helpers/mocks/backend.go
Roy Crihfield ebc2eb37e7 Initial plugin implementation
* refactor packages, flags, subscriptions
* DRY refactor builder tests
* use mockgen to generate mocks
* update README
* MODE=statediff no longer needed for unit tests
* simplify func names, clean up metrics
* move write params to service field
* sql indexer: confirm quit after ipld cache reset
  prevents negative waitgroup panic
* don't let TotalDifficulty become nil
* use forked plugeth, plugeth-utils for now
2023-07-14 12:56:36 +08:00

75 lines
2.7 KiB
Go

package mocks
import (
"testing"
"github.com/ethereum/go-ethereum"
"github.com/golang/mock/gomock"
plugeth "github.com/openrelayxyz/plugeth-utils/core"
)
type Backend struct {
*MockBackend
downloader Downloader
}
type Downloader struct {
ethereum.SyncProgress
}
var _ plugeth.Backend = &Backend{}
var _ plugeth.Downloader = &Downloader{}
func NewBackend(t *testing.T, progress ethereum.SyncProgress) *Backend {
ctl := gomock.NewController(t)
dler := Downloader{progress}
ret := &Backend{
MockBackend: NewMockBackend(ctl),
downloader: dler,
}
ret.EXPECT().Downloader().Return(&ret.downloader).AnyTimes()
return ret
}
func (b *Backend) SetCurrentBlock(block uint64) {
b.downloader.SyncProgress.CurrentBlock = block
}
func (d Downloader) Progress() plugeth.Progress {
return d
}
func (d Downloader) StartingBlock() uint64 { return d.SyncProgress.StartingBlock }
func (d Downloader) CurrentBlock() uint64 { return d.SyncProgress.CurrentBlock }
func (d Downloader) HighestBlock() uint64 { return d.SyncProgress.HighestBlock }
func (d Downloader) PulledStates() uint64 { return d.SyncProgress.PulledStates }
func (d Downloader) KnownStates() uint64 { return d.SyncProgress.KnownStates }
func (d Downloader) SyncedAccounts() uint64 { return d.SyncProgress.SyncedAccounts }
func (d Downloader) SyncedAccountBytes() uint64 { return d.SyncProgress.SyncedAccountBytes }
func (d Downloader) SyncedBytecodes() uint64 { return d.SyncProgress.SyncedBytecodes }
func (d Downloader) SyncedBytecodeBytes() uint64 { return d.SyncProgress.SyncedBytecodeBytes }
func (d Downloader) SyncedStorage() uint64 { return d.SyncProgress.SyncedStorage }
func (d Downloader) SyncedStorageBytes() uint64 { return d.SyncProgress.SyncedStorageBytes }
func (d Downloader) HealedTrienodes() uint64 { return d.SyncProgress.HealedTrienodes }
func (d Downloader) HealedTrienodeBytes() uint64 { return d.SyncProgress.HealedTrienodeBytes }
func (d Downloader) HealedBytecodes() uint64 { return d.SyncProgress.HealedBytecodes }
func (d Downloader) HealedBytecodeBytes() uint64 { return d.SyncProgress.HealedBytecodeBytes }
func (d Downloader) HealingTrienodes() uint64 { return d.SyncProgress.HealingTrienodes }
func (d Downloader) HealingBytecode() uint64 { return d.SyncProgress.HealingBytecode }
func TestBackend(t *testing.T) {
b := NewBackend(t, ethereum.SyncProgress{StartingBlock: 42})
block := b.Downloader().Progress().StartingBlock()
if 42 != block {
t.Fatalf("wrong StartingBlock; expected %d, got %d", 42, block)
}
b.SetCurrentBlock(420)
block = b.Downloader().Progress().CurrentBlock()
if 420 != block {
t.Fatalf("wrong CurrentBlock; expected %d, got %d", 420, block)
}
}