batch headers by 100s
This commit is contained in:
@@ -75,6 +75,15 @@ func (chain *MockBlockChain) GetHeaderByNumber(blockNumber int64) (core.Header,
|
||||
return core.Header{BlockNumber: blockNumber}, nil
|
||||
}
|
||||
|
||||
func (chain *MockBlockChain) GetHeaderByNumbers(blockNumbers []int64) ([]core.Header, error) {
|
||||
var headers []core.Header
|
||||
for _, blockNumber := range blockNumbers {
|
||||
var header = core.Header{BlockNumber: int64(blockNumber)}
|
||||
headers = append(headers, header)
|
||||
}
|
||||
return headers, nil
|
||||
}
|
||||
|
||||
func (chain *MockBlockChain) GetLogs(contract core.Contract, startingBlockNumber, endingBlockNumber *big.Int) ([]core.Log, error) {
|
||||
return []core.Log{}, nil
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/ethereum/go-ethereum"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/rpc"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
@@ -24,12 +25,16 @@ type MockEthClient struct {
|
||||
headerByNumberPassedContext context.Context
|
||||
headerByNumberPassedNumber *big.Int
|
||||
headerByNumberReturnHeader *types.Header
|
||||
headerByNumbersReturnHeader []*types.Header
|
||||
headerByNumbersPassedNumber []*big.Int
|
||||
filterLogsErr error
|
||||
filterLogsPassedContext context.Context
|
||||
filterLogsPassedQuery ethereum.FilterQuery
|
||||
filterLogsReturnLogs []types.Log
|
||||
transactionReceipts map[string]*types.Receipt
|
||||
err error
|
||||
passedBatch []rpc.BatchElem
|
||||
passedMethod string
|
||||
transactionSenderErr error
|
||||
transactionReceiptErr error
|
||||
}
|
||||
@@ -55,6 +60,8 @@ func NewMockEthClient() *MockEthClient {
|
||||
filterLogsReturnLogs: nil,
|
||||
transactionReceipts: make(map[string]*types.Receipt),
|
||||
err: nil,
|
||||
passedBatch: nil,
|
||||
passedMethod: "123",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,6 +89,10 @@ func (client *MockEthClient) SetHeaderByNumberReturnHeader(header *types.Header)
|
||||
client.headerByNumberReturnHeader = header
|
||||
}
|
||||
|
||||
func (client *MockEthClient) SetHeaderByNumbersReturnHeader(headers []*types.Header) {
|
||||
client.headerByNumbersReturnHeader = headers
|
||||
}
|
||||
|
||||
func (client *MockEthClient) SetFilterLogsErr(err error) {
|
||||
client.filterLogsErr = err
|
||||
}
|
||||
@@ -111,6 +122,13 @@ func (client *MockEthClient) CallContract(ctx context.Context, msg ethereum.Call
|
||||
return client.callContractReturnBytes, client.callContractErr
|
||||
}
|
||||
|
||||
func (client *MockEthClient) BatchCall(batch []rpc.BatchElem) error {
|
||||
client.passedBatch = batch
|
||||
client.passedMethod = batch[0].Method
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (client *MockEthClient) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) {
|
||||
client.blockByNumberPassedContext = ctx
|
||||
client.blockByNumberPassedNumber = number
|
||||
@@ -123,6 +141,11 @@ func (client *MockEthClient) HeaderByNumber(ctx context.Context, number *big.Int
|
||||
return client.headerByNumberReturnHeader, client.headerByNumberErr
|
||||
}
|
||||
|
||||
func (client *MockEthClient) HeaderByNumbers(numbers []*big.Int) ([]*types.Header, error) {
|
||||
client.headerByNumbersPassedNumber = numbers
|
||||
return client.headerByNumbersReturnHeader, client.headerByNumberErr
|
||||
}
|
||||
|
||||
func (client *MockEthClient) FilterLogs(ctx context.Context, q ethereum.FilterQuery) ([]types.Log, error) {
|
||||
client.filterLogsPassedContext = ctx
|
||||
client.filterLogsPassedQuery = q
|
||||
@@ -156,7 +179,15 @@ func (client *MockEthClient) AssertHeaderByNumberCalledWith(ctx context.Context,
|
||||
Expect(client.headerByNumberPassedNumber).To(Equal(number))
|
||||
}
|
||||
|
||||
func (client *MockEthClient) AssertHeaderByNumbersCalledWith(number []*big.Int) {
|
||||
Expect(client.headerByNumbersPassedNumber).To(Equal(number))
|
||||
}
|
||||
|
||||
func (client *MockEthClient) AssertFilterLogsCalledWith(ctx context.Context, q ethereum.FilterQuery) {
|
||||
Expect(client.filterLogsPassedContext).To(Equal(ctx))
|
||||
Expect(client.filterLogsPassedQuery).To(Equal(q))
|
||||
}
|
||||
|
||||
func (client *MockEthClient) AssertBatchCalledWith(method string) {
|
||||
Expect(client.passedMethod).To(Equal(method))
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package fakes
|
||||
|
||||
import (
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
|
||||
"github.com/vulcanize/vulcanizedb/pkg/core"
|
||||
)
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"github.com/ethereum/go-ethereum/p2p"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
"github.com/ethereum/go-ethereum/rpc"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/core"
|
||||
)
|
||||
|
||||
@@ -18,7 +19,11 @@ type MockRpcClient struct {
|
||||
passedContext context.Context
|
||||
passedMethod string
|
||||
passedResult interface{}
|
||||
passedBatch []rpc.BatchElem
|
||||
lengthOfBatch int
|
||||
returnPOAHeader core.POAHeader
|
||||
returnPOAHeaders []core.POAHeader
|
||||
returnPOWHeaders []*types.Header
|
||||
supportedModules map[string]string
|
||||
}
|
||||
|
||||
@@ -30,6 +35,27 @@ func (client *MockRpcClient) SetIpcPath(ipcPath string) {
|
||||
client.ipcPath = ipcPath
|
||||
}
|
||||
|
||||
func (client *MockRpcClient) BatchCall(batch []rpc.BatchElem) error {
|
||||
client.passedBatch = batch
|
||||
client.passedMethod = batch[0].Method
|
||||
client.lengthOfBatch = len(batch)
|
||||
|
||||
for _, batchElem := range batch {
|
||||
client.passedContext = context.Background()
|
||||
client.passedResult = &batchElem.Result
|
||||
client.passedMethod = batchElem.Method
|
||||
if p, ok := batchElem.Result.(*types.Header); ok {
|
||||
*p = types.Header{Number: big.NewInt(100)}
|
||||
}
|
||||
if p, ok := batchElem.Result.(*core.POAHeader); ok {
|
||||
|
||||
*p = client.returnPOAHeader
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (client *MockRpcClient) CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error {
|
||||
client.passedContext = ctx
|
||||
client.passedResult = result
|
||||
@@ -42,14 +68,16 @@ func (client *MockRpcClient) CallContext(ctx context.Context, result interface{}
|
||||
}
|
||||
case "eth_getBlockByNumber":
|
||||
if p, ok := result.(*types.Header); ok {
|
||||
*p = types.Header{Number: big.NewInt(123)}
|
||||
*p = types.Header{Number: big.NewInt(100)}
|
||||
}
|
||||
if p, ok := result.(*core.POAHeader); ok {
|
||||
|
||||
*p = client.returnPOAHeader
|
||||
}
|
||||
if client.callContextErr != nil {
|
||||
return client.callContextErr
|
||||
}
|
||||
|
||||
case "parity_versionInfo":
|
||||
if p, ok := result.(*core.ParityNodeInfo); ok {
|
||||
*p = core.ParityNodeInfo{
|
||||
@@ -94,8 +122,24 @@ func (client *MockRpcClient) SetReturnPOAHeader(header core.POAHeader) {
|
||||
client.returnPOAHeader = header
|
||||
}
|
||||
|
||||
func (client *MockRpcClient) SetReturnPOWHeaders(headers []*types.Header) {
|
||||
client.returnPOWHeaders = headers
|
||||
}
|
||||
|
||||
func (client *MockRpcClient) SetReturnPOAHeaders(headers []core.POAHeader) {
|
||||
client.returnPOAHeaders = headers
|
||||
}
|
||||
|
||||
func (client *MockRpcClient) AssertCallContextCalledWith(ctx context.Context, result interface{}, method string) {
|
||||
Expect(client.passedContext).To(Equal(ctx))
|
||||
Expect(client.passedResult).To(BeAssignableToTypeOf(result))
|
||||
Expect(client.passedMethod).To(Equal(method))
|
||||
}
|
||||
|
||||
func (client *MockRpcClient) AssertBatchCalledWith(method string, lengthOfBatch int) {
|
||||
Expect(client.lengthOfBatch).To(Equal(lengthOfBatch))
|
||||
for _, batch := range client.passedBatch {
|
||||
Expect(batch.Method).To(Equal(method))
|
||||
}
|
||||
Expect(client.passedMethod).To(Equal(method))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user