This repository has been archived by the owner on Apr 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
sdk_test.go
56 lines (49 loc) · 1.52 KB
/
sdk_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package ankrscan
import (
"context"
"encoding/hex"
"fmt"
"github.com/Ankr-network/ankrscan-proto-contract/go/proto"
"github.com/stretchr/testify/require"
"log"
"testing"
)
func TestConsumer(t *testing.T) {
sdk, err := NewGrpcSdk("localhost:6565")
require.NoError(t, err)
blockProcessor := &TestBlockProcessor{miners: make(map[string]int)}
progressReporter := &TestProgressReporter{}
consumer := sdk.NewConsumer(&ConsumerConfig{ConsumerId: "filtering-consumer-0", BlockchainId: "BSC", BatchSize: 50, StartBlock: 100, BlockProcessor: blockProcessor, ProgressReporter: progressReporter})
ctx := context.Background()
for {
err := consumer.Process(ctx)
require.NoError(t, err)
}
}
func TestLatest(t *testing.T) {
sdk, err := NewSdk("http://localhost:8080")
require.NoError(t, err)
header, err := sdk.LatestBlockHeader(context.Background(), "BSC")
require.NoError(t, err)
log.Println(header.BlockHashAsHash().String())
}
type TestBlockProcessor struct {
miners map[string]int
}
func (s *TestBlockProcessor) Process(blocks []*proto.Block, isReorg bool) error {
for _, block := range blocks {
value := 1
if isReorg {
value = -1
}
s.miners[hex.EncodeToString(block.Header.GetEthBlock().Miner)] += value
}
log.Println("miners", s.miners)
return nil
}
type TestProgressReporter struct {
}
func (s *TestProgressReporter) Report(blocks []*proto.Block, isReorg bool, timings *Timings, lag uint64, latest *proto.BlockHeader) error {
log.Println(fmt.Sprintf(DefaultReport(blocks, isReorg, timings, lag, latest)))
return nil
}