Skip to content

Commit 176ff82

Browse files
author
Larry Li
committed
update
1 parent e17c920 commit 176ff82

2 files changed

Lines changed: 28 additions & 10 deletions

File tree

multinode/rpc_client_base.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ var errInvalidHead = errors.New("invalid head")
1717
const (
1818
rpcCallNameLatestBlock = "latest_block"
1919
rpcCallNameLatestFinalizedBlock = "latest_finalized_block"
20-
rpcMetricsDefaultURL = ""
2120
rpcMetricsDefaultIsSendOnly = false
2221
)
2322

@@ -37,6 +36,7 @@ type RPCClientBase[HEAD Head] struct {
3736
cfg RPCClientBaseConfig
3837
log logger.Logger
3938
ctxTimeout time.Duration
39+
rpcURL string
4040
subsMu sync.RWMutex
4141
subs map[Subscription]struct{}
4242

@@ -64,12 +64,14 @@ func NewRPCClientBase[HEAD Head](
6464
cfg RPCClientBaseConfig, ctxTimeout time.Duration, log logger.Logger,
6565
latestBlock func(ctx context.Context) (HEAD, error),
6666
latestFinalizedBlock func(ctx context.Context) (HEAD, error),
67+
rpcURL string,
6768
rpcMetrics frameworkmetrics.RPCClientMetrics,
6869
) *RPCClientBase[HEAD] {
6970
base := &RPCClientBase[HEAD]{
7071
cfg: cfg,
7172
log: log,
7273
ctxTimeout: ctxTimeout,
74+
rpcURL: rpcURL,
7375
latestBlock: latestBlock,
7476
latestFinalizedBlock: latestFinalizedBlock,
7577
subs: make(map[Subscription]struct{}),
@@ -214,7 +216,7 @@ func (m *RPCClientBase[HEAD]) recordRPCRequest(ctx context.Context, callName str
214216
return
215217
}
216218

217-
m.rpcMetrics.RecordRequest(ctx, rpcMetricsDefaultURL, rpcMetricsDefaultIsSendOnly, callName, time.Since(startedAt), err)
219+
m.rpcMetrics.RecordRequest(ctx, m.rpcURL, rpcMetricsDefaultIsSendOnly, callName, time.Since(startedAt), err)
218220
}
219221

220222
func (m *RPCClientBase[HEAD]) OnNewHead(ctx context.Context, requestCh <-chan struct{}, head HEAD) {

multinode/rpc_client_base_test.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,17 @@ func newTestRPC(t *testing.T) *testRPC {
6868
}
6969

7070
rpc := &testRPC{}
71-
rpc.RPCClientBase = NewRPCClientBase[*testHead](cfg, requestTimeout, lggr, rpc.latestBlock, rpc.latestBlock, nil)
71+
rpc.RPCClientBase = NewRPCClientBase[*testHead](cfg, requestTimeout, lggr, rpc.latestBlock, rpc.latestBlock, "http://localhost:8545", nil)
7272
t.Cleanup(rpc.Close)
7373
return rpc
7474
}
7575

7676
type recordedRPCRequest struct {
77-
callName string
78-
latency time.Duration
79-
err error
77+
rpcURL string
78+
isSendOnly bool
79+
callName string
80+
latency time.Duration
81+
err error
8082
}
8183

8284
type spyRPCClientMetrics struct {
@@ -85,11 +87,13 @@ type spyRPCClientMetrics struct {
8587

8688
var _ frameworkmetrics.RPCClientMetrics = (*spyRPCClientMetrics)(nil)
8789

88-
func (s *spyRPCClientMetrics) RecordRequest(_ context.Context, _ string, _ bool, callName string, latency time.Duration, err error) {
90+
func (s *spyRPCClientMetrics) RecordRequest(_ context.Context, rpcURL string, isSendOnly bool, callName string, latency time.Duration, err error) {
8991
s.requests = append(s.requests, recordedRPCRequest{
90-
callName: callName,
91-
latency: latency,
92-
err: err,
92+
rpcURL: rpcURL,
93+
isSendOnly: isSendOnly,
94+
callName: callName,
95+
latency: latency,
96+
err: err,
9397
})
9498
}
9599

@@ -147,6 +151,7 @@ func TestRPCClientBase_RecordsRPCMetrics(t *testing.T) {
147151

148152
t.Run("records successful latest block requests", func(t *testing.T) {
149153
spy := &spyRPCClientMetrics{}
154+
const testURL = "http://rpc.example.com:8545"
150155
rpc := NewRPCClientBase[*testHead](
151156
cfg,
152157
requestTimeout,
@@ -157,20 +162,24 @@ func TestRPCClientBase_RecordsRPCMetrics(t *testing.T) {
157162
func(context.Context) (*testHead, error) {
158163
return &testHead{blockNumber: 8}, nil
159164
},
165+
testURL,
160166
spy,
161167
)
162168

163169
head, err := rpc.LatestBlock(t.Context())
164170
require.NoError(t, err)
165171
require.Equal(t, int64(7), head.BlockNumber())
166172
require.Len(t, spy.requests, 1)
173+
require.Equal(t, testURL, spy.requests[0].rpcURL)
174+
require.False(t, spy.requests[0].isSendOnly)
167175
require.Equal(t, rpcCallNameLatestBlock, spy.requests[0].callName)
168176
require.NoError(t, spy.requests[0].err)
169177
require.Positive(t, spy.requests[0].latency)
170178
})
171179

172180
t.Run("records failed finalized block requests", func(t *testing.T) {
173181
spy := &spyRPCClientMetrics{}
182+
const testURL = "http://rpc.example.com:8545"
174183
expectedErr := errors.New("boom")
175184
rpc := NewRPCClientBase[*testHead](
176185
cfg,
@@ -182,19 +191,23 @@ func TestRPCClientBase_RecordsRPCMetrics(t *testing.T) {
182191
func(context.Context) (*testHead, error) {
183192
return nil, expectedErr
184193
},
194+
testURL,
185195
spy,
186196
)
187197

188198
_, err := rpc.LatestFinalizedBlock(t.Context())
189199
require.ErrorIs(t, err, expectedErr)
190200
require.Len(t, spy.requests, 1)
201+
require.Equal(t, testURL, spy.requests[0].rpcURL)
202+
require.False(t, spy.requests[0].isSendOnly)
191203
require.Equal(t, rpcCallNameLatestFinalizedBlock, spy.requests[0].callName)
192204
require.ErrorIs(t, spy.requests[0].err, expectedErr)
193205
require.Positive(t, spy.requests[0].latency)
194206
})
195207

196208
t.Run("records invalid heads as failed requests", func(t *testing.T) {
197209
spy := &spyRPCClientMetrics{}
210+
const testURL = "http://rpc.example.com:8545"
198211
rpc := NewRPCClientBase[*testHead](
199212
cfg,
200213
requestTimeout,
@@ -205,12 +218,15 @@ func TestRPCClientBase_RecordsRPCMetrics(t *testing.T) {
205218
func(context.Context) (*testHead, error) {
206219
return &testHead{blockNumber: 8}, nil
207220
},
221+
testURL,
208222
spy,
209223
)
210224

211225
_, err := rpc.LatestBlock(t.Context())
212226
require.ErrorIs(t, err, errInvalidHead)
213227
require.Len(t, spy.requests, 1)
228+
require.Equal(t, testURL, spy.requests[0].rpcURL)
229+
require.False(t, spy.requests[0].isSendOnly)
214230
require.Equal(t, rpcCallNameLatestBlock, spy.requests[0].callName)
215231
require.ErrorIs(t, spy.requests[0].err, errInvalidHead)
216232
})

0 commit comments

Comments
 (0)