erigon-pulse/cmd/rpcdaemon/commands/eth_ming_test.go
ledgerwatch 8e3ac8a21c
Erigon2 upgrade 2 prototype (#4341)
* Erigon2 upgrade 2 prototype

* Latest erigon-lib

* Fixes

* Fix print

* Fix maxSpan

* Reduce maxSpan

* Remove duplicate joins

* TxNum

* Fix resuming

* first draft of history22

* Introduce historical reads

* Update to erigon-lib

* Update erigon-lib

* Update erigon-lib

* Fixes and tracing for checkChangeSets

* More trace

* Print account details

* fix getHeader

* Update to erigon-lib main

* Add tracer indices and event log indices

* Fix calltracer

* Fix calltracer

* Duplicate rpcdaemon into rpcdaemon22

* Fix tests

* Fix tests

* Fix tests

* Update to latest erigon-lib

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro.local>
2022-06-10 16:18:43 +01:00

65 lines
2.1 KiB
Go

package commands
import (
"math/big"
"testing"
"time"
"github.com/ledgerwatch/erigon-lib/gointerfaces/txpool"
"github.com/ledgerwatch/erigon-lib/kv/kvcache"
"github.com/ledgerwatch/erigon/cmd/rpcdaemon/rpcdaemontest"
"github.com/ledgerwatch/erigon/core/types"
"github.com/ledgerwatch/erigon/rlp"
"github.com/ledgerwatch/erigon/turbo/rpchelper"
"github.com/ledgerwatch/erigon/turbo/snapshotsync"
"github.com/ledgerwatch/erigon/turbo/stages"
"github.com/stretchr/testify/require"
)
func TestPendingBlock(t *testing.T) {
ctx, conn := rpcdaemontest.CreateTestGrpcConn(t, stages.Mock(t))
mining := txpool.NewMiningClient(conn)
ff := rpchelper.New(ctx, nil, nil, mining, func() {})
stateCache := kvcache.New(kvcache.DefaultCoherentConfig)
api := NewEthAPI(NewBaseApi(ff, stateCache, snapshotsync.NewBlockReader(), false), nil, nil, nil, mining, 5000000)
expect := uint64(12345)
b, err := rlp.EncodeToBytes(types.NewBlockWithHeader(&types.Header{Number: big.NewInt(int64(expect))}))
require.NoError(t, err)
ch := make(chan *types.Block, 1)
id := ff.SubscribePendingBlock(ch)
defer ff.UnsubscribePendingBlock(id)
ff.HandlePendingBlock(&txpool.OnPendingBlockReply{RplBlock: b})
block := api.pendingBlock()
require.Equal(t, block.NumberU64(), expect)
select {
case got := <-ch:
require.Equal(t, expect, got.NumberU64())
case <-time.After(100 * time.Millisecond):
t.Fatalf("timeout waiting for expected notification")
}
}
func TestPendingLogs(t *testing.T) {
ctx, conn := rpcdaemontest.CreateTestGrpcConn(t, stages.Mock(t))
mining := txpool.NewMiningClient(conn)
ff := rpchelper.New(ctx, nil, nil, mining, func() {})
expect := []byte{211}
ch := make(chan types.Logs, 1)
defer close(ch)
id := ff.SubscribePendingLogs(ch)
defer ff.UnsubscribePendingLogs(id)
b, err := rlp.EncodeToBytes([]*types.Log{{Data: expect}})
require.NoError(t, err)
ff.HandlePendingLogs(&txpool.OnPendingLogsReply{RplLogs: b})
select {
case logs := <-ch:
require.Equal(t, expect, logs[0].Data)
case <-time.After(100 * time.Millisecond):
t.Fatalf("timeout waiting for expected notification")
}
}