Add REST API stubs for beacon chain, node and slasher clients (#12094)

* WIP

* WIP

* Remove duplicate mock

* WIP

* Revert "WIP"

This reverts commit a8010057fe.

* Fix build break

* Remove unused variable

* Fix build break

* Rename validator_mock to validatormock

* Fix failing test

---------

Co-authored-by: james-prysm <90280386+james-prysm@users.noreply.github.com>
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
This commit is contained in:
Patrice Vignola
2023-03-20 09:32:32 -07:00
committed by GitHub
parent 6480d5a0fd
commit 7c49277e83
45 changed files with 1549 additions and 132 deletions

View File

@@ -56,8 +56,8 @@ go_test(
"//io/file:go_default_library", "//io/file:go_default_library",
"//proto/prysm/v1alpha1:go_default_library", "//proto/prysm/v1alpha1:go_default_library",
"//testing/assert:go_default_library", "//testing/assert:go_default_library",
"//testing/mock:go_default_library",
"//testing/require:go_default_library", "//testing/require:go_default_library",
"//testing/validator-mock:go_default_library",
"//time:go_default_library", "//time:go_default_library",
"//validator/accounts:go_default_library", "//validator/accounts:go_default_library",
"//validator/accounts/iface:go_default_library", "//validator/accounts/iface:go_default_library",

View File

@@ -11,8 +11,8 @@ import (
"github.com/golang/mock/gomock" "github.com/golang/mock/gomock"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
mock2 "github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
"github.com/prysmaticlabs/prysm/v4/validator/accounts" "github.com/prysmaticlabs/prysm/v4/validator/accounts"
"github.com/prysmaticlabs/prysm/v4/validator/keymanager" "github.com/prysmaticlabs/prysm/v4/validator/keymanager"
"google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/timestamppb"
@@ -21,8 +21,8 @@ import (
func TestExitAccountsCli_OK(t *testing.T) { func TestExitAccountsCli_OK(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
mockValidatorClient := mock2.NewMockValidatorClient(ctrl) mockValidatorClient := validatormock.NewMockValidatorClient(ctrl)
mockNodeClient := mock2.NewMockNodeClient(ctrl) mockNodeClient := validatormock.NewMockNodeClient(ctrl)
mockValidatorClient.EXPECT(). mockValidatorClient.EXPECT().
ValidatorIndex(gomock.Any(), gomock.Any()). ValidatorIndex(gomock.Any(), gomock.Any()).
@@ -113,8 +113,8 @@ func TestExitAccountsCli_OK(t *testing.T) {
func TestExitAccountsCli_OK_AllPublicKeys(t *testing.T) { func TestExitAccountsCli_OK_AllPublicKeys(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
mockValidatorClient := mock2.NewMockValidatorClient(ctrl) mockValidatorClient := validatormock.NewMockValidatorClient(ctrl)
mockNodeClient := mock2.NewMockNodeClient(ctrl) mockNodeClient := validatormock.NewMockNodeClient(ctrl)
mockValidatorClient.EXPECT(). mockValidatorClient.EXPECT().
ValidatorIndex(gomock.Any(), gomock.Any()). ValidatorIndex(gomock.Any(), gomock.Any()).
@@ -220,8 +220,8 @@ func TestExitAccountsCli_OK_AllPublicKeys(t *testing.T) {
func TestExitAccountsCli_OK_ForceExit(t *testing.T) { func TestExitAccountsCli_OK_ForceExit(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
mockValidatorClient := mock2.NewMockValidatorClient(ctrl) mockValidatorClient := validatormock.NewMockValidatorClient(ctrl)
mockNodeClient := mock2.NewMockNodeClient(ctrl) mockNodeClient := validatormock.NewMockNodeClient(ctrl)
mockValidatorClient.EXPECT(). mockValidatorClient.EXPECT().
ValidatorIndex(gomock.Any(), gomock.Any()). ValidatorIndex(gomock.Any(), gomock.Any()).

View File

@@ -4,6 +4,7 @@
# Use a space to separate mock destination from its interfaces. # Use a space to separate mock destination from its interfaces.
mock_path="testing/mock" mock_path="testing/mock"
iface_mock_path="testing/validator-mock"
# github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1 # github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1
# ------------------------------------------------------ # ------------------------------------------------------
@@ -55,14 +56,17 @@ done
# github.com/prysmaticlabs/prysm/v4/validator/client/iface # github.com/prysmaticlabs/prysm/v4/validator/client/iface
# -------------------------------------------------------- # --------------------------------------------------------
iface_mocks=( iface_mocks=(
"$mock_path/validator_client_mock.go ValidatorClient" "$iface_mock_path/beacon_chain_client_mock.go BeaconChainClient"
"$iface_mock_path/node_client_mock.go NodeClient"
"$iface_mock_path/slasher_client_mock.go SlasherClient"
"$iface_mock_path/validator_client_mock.go ValidatorClient"
) )
for ((i = 0; i < ${#iface_mocks[@]}; i++)); do for ((i = 0; i < ${#iface_mocks[@]}; i++)); do
file=${iface_mocks[i]% *}; file=${iface_mocks[i]% *};
interfaces=${iface_mocks[i]#* }; interfaces=${iface_mocks[i]#* };
echo "generating $file for interfaces: $interfaces"; echo "generating $file for interfaces: $interfaces";
GO11MODULE=on mockgen -package=mock -destination="$file" github.com/prysmaticlabs/prysm/v4/validator/client/iface "$interfaces" GO11MODULE=on mockgen -package=validator_mock -destination="$file" github.com/prysmaticlabs/prysm/v4/validator/client/iface "$interfaces"
done done
goimports -w "$mock_path/." goimports -w "$mock_path/."

View File

@@ -15,12 +15,10 @@ go_library(
"keymanager_mock.go", "keymanager_mock.go",
"node_service_mock.go", "node_service_mock.go",
"slasher_client_mock.go", "slasher_client_mock.go",
"validator_client_mock.go",
], ],
importpath = "github.com/prysmaticlabs/prysm/v4/testing/mock", importpath = "github.com/prysmaticlabs/prysm/v4/testing/mock",
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
deps = [ deps = [
"//consensus-types/primitives:go_default_library",
"//proto/eth/service:go_default_library", "//proto/eth/service:go_default_library",
"//proto/eth/v1:go_default_library", "//proto/eth/v1:go_default_library",
"//proto/prysm/v1alpha1:go_default_library", "//proto/prysm/v1alpha1:go_default_library",

View File

@@ -0,0 +1,21 @@
load("@prysm//tools/go:def.bzl", "go_library")
package(default_testonly = True)
go_library(
name = "go_default_library",
srcs = [
"beacon_chain_client_mock.go",
"node_client_mock.go",
"slasher_client_mock.go",
"validator_client_mock.go",
],
importpath = "github.com/prysmaticlabs/prysm/v4/testing/validator-mock",
visibility = ["//visibility:public"],
deps = [
"//consensus-types/primitives:go_default_library",
"//proto/prysm/v1alpha1:go_default_library",
"@com_github_golang_mock//gomock:go_default_library",
"@org_golang_google_protobuf//types/known/emptypb:go_default_library",
],
)

View File

@@ -0,0 +1,382 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/prysmaticlabs/prysm/v4/validator/client/iface (interfaces: BeaconChainClient)
// Package validator_mock is a generated GoMock package.
package validator_mock
import (
context "context"
reflect "reflect"
gomock "github.com/golang/mock/gomock"
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
emptypb "google.golang.org/protobuf/types/known/emptypb"
)
// MockBeaconChainClient is a mock of BeaconChainClient interface.
type MockBeaconChainClient struct {
ctrl *gomock.Controller
recorder *MockBeaconChainClientMockRecorder
}
// MockBeaconChainClientMockRecorder is the mock recorder for MockBeaconChainClient.
type MockBeaconChainClientMockRecorder struct {
mock *MockBeaconChainClient
}
// NewMockBeaconChainClient creates a new mock instance.
func NewMockBeaconChainClient(ctrl *gomock.Controller) *MockBeaconChainClient {
mock := &MockBeaconChainClient{ctrl: ctrl}
mock.recorder = &MockBeaconChainClientMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockBeaconChainClient) EXPECT() *MockBeaconChainClientMockRecorder {
return m.recorder
}
// AttestationPool mocks base method.
func (m *MockBeaconChainClient) AttestationPool(arg0 context.Context, arg1 *eth.AttestationPoolRequest) (*eth.AttestationPoolResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AttestationPool", arg0, arg1)
ret0, _ := ret[0].(*eth.AttestationPoolResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// AttestationPool indicates an expected call of AttestationPool.
func (mr *MockBeaconChainClientMockRecorder) AttestationPool(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AttestationPool", reflect.TypeOf((*MockBeaconChainClient)(nil).AttestationPool), arg0, arg1)
}
// GetBeaconConfig mocks base method.
func (m *MockBeaconChainClient) GetBeaconConfig(arg0 context.Context, arg1 *emptypb.Empty) (*eth.BeaconConfig, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetBeaconConfig", arg0, arg1)
ret0, _ := ret[0].(*eth.BeaconConfig)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetBeaconConfig indicates an expected call of GetBeaconConfig.
func (mr *MockBeaconChainClientMockRecorder) GetBeaconConfig(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBeaconConfig", reflect.TypeOf((*MockBeaconChainClient)(nil).GetBeaconConfig), arg0, arg1)
}
// GetChainHead mocks base method.
func (m *MockBeaconChainClient) GetChainHead(arg0 context.Context, arg1 *emptypb.Empty) (*eth.ChainHead, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetChainHead", arg0, arg1)
ret0, _ := ret[0].(*eth.ChainHead)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetChainHead indicates an expected call of GetChainHead.
func (mr *MockBeaconChainClientMockRecorder) GetChainHead(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChainHead", reflect.TypeOf((*MockBeaconChainClient)(nil).GetChainHead), arg0, arg1)
}
// GetIndividualVotes mocks base method.
func (m *MockBeaconChainClient) GetIndividualVotes(arg0 context.Context, arg1 *eth.IndividualVotesRequest) (*eth.IndividualVotesRespond, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetIndividualVotes", arg0, arg1)
ret0, _ := ret[0].(*eth.IndividualVotesRespond)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetIndividualVotes indicates an expected call of GetIndividualVotes.
func (mr *MockBeaconChainClientMockRecorder) GetIndividualVotes(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIndividualVotes", reflect.TypeOf((*MockBeaconChainClient)(nil).GetIndividualVotes), arg0, arg1)
}
// GetValidator mocks base method.
func (m *MockBeaconChainClient) GetValidator(arg0 context.Context, arg1 *eth.GetValidatorRequest) (*eth.Validator, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetValidator", arg0, arg1)
ret0, _ := ret[0].(*eth.Validator)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetValidator indicates an expected call of GetValidator.
func (mr *MockBeaconChainClientMockRecorder) GetValidator(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetValidator", reflect.TypeOf((*MockBeaconChainClient)(nil).GetValidator), arg0, arg1)
}
// GetValidatorActiveSetChanges mocks base method.
func (m *MockBeaconChainClient) GetValidatorActiveSetChanges(arg0 context.Context, arg1 *eth.GetValidatorActiveSetChangesRequest) (*eth.ActiveSetChanges, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetValidatorActiveSetChanges", arg0, arg1)
ret0, _ := ret[0].(*eth.ActiveSetChanges)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetValidatorActiveSetChanges indicates an expected call of GetValidatorActiveSetChanges.
func (mr *MockBeaconChainClientMockRecorder) GetValidatorActiveSetChanges(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetValidatorActiveSetChanges", reflect.TypeOf((*MockBeaconChainClient)(nil).GetValidatorActiveSetChanges), arg0, arg1)
}
// GetValidatorParticipation mocks base method.
func (m *MockBeaconChainClient) GetValidatorParticipation(arg0 context.Context, arg1 *eth.GetValidatorParticipationRequest) (*eth.ValidatorParticipationResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetValidatorParticipation", arg0, arg1)
ret0, _ := ret[0].(*eth.ValidatorParticipationResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetValidatorParticipation indicates an expected call of GetValidatorParticipation.
func (mr *MockBeaconChainClientMockRecorder) GetValidatorParticipation(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetValidatorParticipation", reflect.TypeOf((*MockBeaconChainClient)(nil).GetValidatorParticipation), arg0, arg1)
}
// GetValidatorPerformance mocks base method.
func (m *MockBeaconChainClient) GetValidatorPerformance(arg0 context.Context, arg1 *eth.ValidatorPerformanceRequest) (*eth.ValidatorPerformanceResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetValidatorPerformance", arg0, arg1)
ret0, _ := ret[0].(*eth.ValidatorPerformanceResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetValidatorPerformance indicates an expected call of GetValidatorPerformance.
func (mr *MockBeaconChainClientMockRecorder) GetValidatorPerformance(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetValidatorPerformance", reflect.TypeOf((*MockBeaconChainClient)(nil).GetValidatorPerformance), arg0, arg1)
}
// GetValidatorQueue mocks base method.
func (m *MockBeaconChainClient) GetValidatorQueue(arg0 context.Context, arg1 *emptypb.Empty) (*eth.ValidatorQueue, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetValidatorQueue", arg0, arg1)
ret0, _ := ret[0].(*eth.ValidatorQueue)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetValidatorQueue indicates an expected call of GetValidatorQueue.
func (mr *MockBeaconChainClientMockRecorder) GetValidatorQueue(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetValidatorQueue", reflect.TypeOf((*MockBeaconChainClient)(nil).GetValidatorQueue), arg0, arg1)
}
// ListAttestations mocks base method.
func (m *MockBeaconChainClient) ListAttestations(arg0 context.Context, arg1 *eth.ListAttestationsRequest) (*eth.ListAttestationsResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListAttestations", arg0, arg1)
ret0, _ := ret[0].(*eth.ListAttestationsResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListAttestations indicates an expected call of ListAttestations.
func (mr *MockBeaconChainClientMockRecorder) ListAttestations(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAttestations", reflect.TypeOf((*MockBeaconChainClient)(nil).ListAttestations), arg0, arg1)
}
// ListBeaconBlocks mocks base method.
func (m *MockBeaconChainClient) ListBeaconBlocks(arg0 context.Context, arg1 *eth.ListBlocksRequest) (*eth.ListBeaconBlocksResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListBeaconBlocks", arg0, arg1)
ret0, _ := ret[0].(*eth.ListBeaconBlocksResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListBeaconBlocks indicates an expected call of ListBeaconBlocks.
func (mr *MockBeaconChainClientMockRecorder) ListBeaconBlocks(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBeaconBlocks", reflect.TypeOf((*MockBeaconChainClient)(nil).ListBeaconBlocks), arg0, arg1)
}
// ListBeaconCommittees mocks base method.
func (m *MockBeaconChainClient) ListBeaconCommittees(arg0 context.Context, arg1 *eth.ListCommitteesRequest) (*eth.BeaconCommittees, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListBeaconCommittees", arg0, arg1)
ret0, _ := ret[0].(*eth.BeaconCommittees)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListBeaconCommittees indicates an expected call of ListBeaconCommittees.
func (mr *MockBeaconChainClientMockRecorder) ListBeaconCommittees(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBeaconCommittees", reflect.TypeOf((*MockBeaconChainClient)(nil).ListBeaconCommittees), arg0, arg1)
}
// ListIndexedAttestations mocks base method.
func (m *MockBeaconChainClient) ListIndexedAttestations(arg0 context.Context, arg1 *eth.ListIndexedAttestationsRequest) (*eth.ListIndexedAttestationsResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListIndexedAttestations", arg0, arg1)
ret0, _ := ret[0].(*eth.ListIndexedAttestationsResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListIndexedAttestations indicates an expected call of ListIndexedAttestations.
func (mr *MockBeaconChainClientMockRecorder) ListIndexedAttestations(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListIndexedAttestations", reflect.TypeOf((*MockBeaconChainClient)(nil).ListIndexedAttestations), arg0, arg1)
}
// ListValidatorAssignments mocks base method.
func (m *MockBeaconChainClient) ListValidatorAssignments(arg0 context.Context, arg1 *eth.ListValidatorAssignmentsRequest) (*eth.ValidatorAssignments, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListValidatorAssignments", arg0, arg1)
ret0, _ := ret[0].(*eth.ValidatorAssignments)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListValidatorAssignments indicates an expected call of ListValidatorAssignments.
func (mr *MockBeaconChainClientMockRecorder) ListValidatorAssignments(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListValidatorAssignments", reflect.TypeOf((*MockBeaconChainClient)(nil).ListValidatorAssignments), arg0, arg1)
}
// ListValidatorBalances mocks base method.
func (m *MockBeaconChainClient) ListValidatorBalances(arg0 context.Context, arg1 *eth.ListValidatorBalancesRequest) (*eth.ValidatorBalances, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListValidatorBalances", arg0, arg1)
ret0, _ := ret[0].(*eth.ValidatorBalances)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListValidatorBalances indicates an expected call of ListValidatorBalances.
func (mr *MockBeaconChainClientMockRecorder) ListValidatorBalances(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListValidatorBalances", reflect.TypeOf((*MockBeaconChainClient)(nil).ListValidatorBalances), arg0, arg1)
}
// ListValidators mocks base method.
func (m *MockBeaconChainClient) ListValidators(arg0 context.Context, arg1 *eth.ListValidatorsRequest) (*eth.Validators, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListValidators", arg0, arg1)
ret0, _ := ret[0].(*eth.Validators)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListValidators indicates an expected call of ListValidators.
func (mr *MockBeaconChainClientMockRecorder) ListValidators(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListValidators", reflect.TypeOf((*MockBeaconChainClient)(nil).ListValidators), arg0, arg1)
}
// StreamAttestations mocks base method.
func (m *MockBeaconChainClient) StreamAttestations(arg0 context.Context, arg1 *emptypb.Empty) (eth.BeaconChain_StreamAttestationsClient, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "StreamAttestations", arg0, arg1)
ret0, _ := ret[0].(eth.BeaconChain_StreamAttestationsClient)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// StreamAttestations indicates an expected call of StreamAttestations.
func (mr *MockBeaconChainClientMockRecorder) StreamAttestations(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamAttestations", reflect.TypeOf((*MockBeaconChainClient)(nil).StreamAttestations), arg0, arg1)
}
// StreamBlocks mocks base method.
func (m *MockBeaconChainClient) StreamBlocks(arg0 context.Context, arg1 *eth.StreamBlocksRequest) (eth.BeaconChain_StreamBlocksClient, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "StreamBlocks", arg0, arg1)
ret0, _ := ret[0].(eth.BeaconChain_StreamBlocksClient)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// StreamBlocks indicates an expected call of StreamBlocks.
func (mr *MockBeaconChainClientMockRecorder) StreamBlocks(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamBlocks", reflect.TypeOf((*MockBeaconChainClient)(nil).StreamBlocks), arg0, arg1)
}
// StreamChainHead mocks base method.
func (m *MockBeaconChainClient) StreamChainHead(arg0 context.Context, arg1 *emptypb.Empty) (eth.BeaconChain_StreamChainHeadClient, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "StreamChainHead", arg0, arg1)
ret0, _ := ret[0].(eth.BeaconChain_StreamChainHeadClient)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// StreamChainHead indicates an expected call of StreamChainHead.
func (mr *MockBeaconChainClientMockRecorder) StreamChainHead(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamChainHead", reflect.TypeOf((*MockBeaconChainClient)(nil).StreamChainHead), arg0, arg1)
}
// StreamIndexedAttestations mocks base method.
func (m *MockBeaconChainClient) StreamIndexedAttestations(arg0 context.Context, arg1 *emptypb.Empty) (eth.BeaconChain_StreamIndexedAttestationsClient, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "StreamIndexedAttestations", arg0, arg1)
ret0, _ := ret[0].(eth.BeaconChain_StreamIndexedAttestationsClient)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// StreamIndexedAttestations indicates an expected call of StreamIndexedAttestations.
func (mr *MockBeaconChainClientMockRecorder) StreamIndexedAttestations(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamIndexedAttestations", reflect.TypeOf((*MockBeaconChainClient)(nil).StreamIndexedAttestations), arg0, arg1)
}
// StreamValidatorsInfo mocks base method.
func (m *MockBeaconChainClient) StreamValidatorsInfo(arg0 context.Context) (eth.BeaconChain_StreamValidatorsInfoClient, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "StreamValidatorsInfo", arg0)
ret0, _ := ret[0].(eth.BeaconChain_StreamValidatorsInfoClient)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// StreamValidatorsInfo indicates an expected call of StreamValidatorsInfo.
func (mr *MockBeaconChainClientMockRecorder) StreamValidatorsInfo(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamValidatorsInfo", reflect.TypeOf((*MockBeaconChainClient)(nil).StreamValidatorsInfo), arg0)
}
// SubmitAttesterSlashing mocks base method.
func (m *MockBeaconChainClient) SubmitAttesterSlashing(arg0 context.Context, arg1 *eth.AttesterSlashing) (*eth.SubmitSlashingResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SubmitAttesterSlashing", arg0, arg1)
ret0, _ := ret[0].(*eth.SubmitSlashingResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// SubmitAttesterSlashing indicates an expected call of SubmitAttesterSlashing.
func (mr *MockBeaconChainClientMockRecorder) SubmitAttesterSlashing(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubmitAttesterSlashing", reflect.TypeOf((*MockBeaconChainClient)(nil).SubmitAttesterSlashing), arg0, arg1)
}
// SubmitProposerSlashing mocks base method.
func (m *MockBeaconChainClient) SubmitProposerSlashing(arg0 context.Context, arg1 *eth.ProposerSlashing) (*eth.SubmitSlashingResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "SubmitProposerSlashing", arg0, arg1)
ret0, _ := ret[0].(*eth.SubmitSlashingResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// SubmitProposerSlashing indicates an expected call of SubmitProposerSlashing.
func (mr *MockBeaconChainClientMockRecorder) SubmitProposerSlashing(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubmitProposerSlashing", reflect.TypeOf((*MockBeaconChainClient)(nil).SubmitProposerSlashing), arg0, arg1)
}

157
testing/validator-mock/node_client_mock.go generated Normal file
View File

@@ -0,0 +1,157 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/prysmaticlabs/prysm/v4/validator/client/iface (interfaces: NodeClient)
// Package validator_mock is a generated GoMock package.
package validator_mock
import (
context "context"
reflect "reflect"
gomock "github.com/golang/mock/gomock"
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
emptypb "google.golang.org/protobuf/types/known/emptypb"
)
// MockNodeClient is a mock of NodeClient interface.
type MockNodeClient struct {
ctrl *gomock.Controller
recorder *MockNodeClientMockRecorder
}
// MockNodeClientMockRecorder is the mock recorder for MockNodeClient.
type MockNodeClientMockRecorder struct {
mock *MockNodeClient
}
// NewMockNodeClient creates a new mock instance.
func NewMockNodeClient(ctrl *gomock.Controller) *MockNodeClient {
mock := &MockNodeClient{ctrl: ctrl}
mock.recorder = &MockNodeClientMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockNodeClient) EXPECT() *MockNodeClientMockRecorder {
return m.recorder
}
// GetETH1ConnectionStatus mocks base method.
func (m *MockNodeClient) GetETH1ConnectionStatus(arg0 context.Context, arg1 *emptypb.Empty) (*eth.ETH1ConnectionStatus, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetETH1ConnectionStatus", arg0, arg1)
ret0, _ := ret[0].(*eth.ETH1ConnectionStatus)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetETH1ConnectionStatus indicates an expected call of GetETH1ConnectionStatus.
func (mr *MockNodeClientMockRecorder) GetETH1ConnectionStatus(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetETH1ConnectionStatus", reflect.TypeOf((*MockNodeClient)(nil).GetETH1ConnectionStatus), arg0, arg1)
}
// GetGenesis mocks base method.
func (m *MockNodeClient) GetGenesis(arg0 context.Context, arg1 *emptypb.Empty) (*eth.Genesis, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetGenesis", arg0, arg1)
ret0, _ := ret[0].(*eth.Genesis)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetGenesis indicates an expected call of GetGenesis.
func (mr *MockNodeClientMockRecorder) GetGenesis(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGenesis", reflect.TypeOf((*MockNodeClient)(nil).GetGenesis), arg0, arg1)
}
// GetHost mocks base method.
func (m *MockNodeClient) GetHost(arg0 context.Context, arg1 *emptypb.Empty) (*eth.HostData, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetHost", arg0, arg1)
ret0, _ := ret[0].(*eth.HostData)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetHost indicates an expected call of GetHost.
func (mr *MockNodeClientMockRecorder) GetHost(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetHost", reflect.TypeOf((*MockNodeClient)(nil).GetHost), arg0, arg1)
}
// GetPeer mocks base method.
func (m *MockNodeClient) GetPeer(arg0 context.Context, arg1 *eth.PeerRequest) (*eth.Peer, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetPeer", arg0, arg1)
ret0, _ := ret[0].(*eth.Peer)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetPeer indicates an expected call of GetPeer.
func (mr *MockNodeClientMockRecorder) GetPeer(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPeer", reflect.TypeOf((*MockNodeClient)(nil).GetPeer), arg0, arg1)
}
// GetSyncStatus mocks base method.
func (m *MockNodeClient) GetSyncStatus(arg0 context.Context, arg1 *emptypb.Empty) (*eth.SyncStatus, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetSyncStatus", arg0, arg1)
ret0, _ := ret[0].(*eth.SyncStatus)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetSyncStatus indicates an expected call of GetSyncStatus.
func (mr *MockNodeClientMockRecorder) GetSyncStatus(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSyncStatus", reflect.TypeOf((*MockNodeClient)(nil).GetSyncStatus), arg0, arg1)
}
// GetVersion mocks base method.
func (m *MockNodeClient) GetVersion(arg0 context.Context, arg1 *emptypb.Empty) (*eth.Version, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetVersion", arg0, arg1)
ret0, _ := ret[0].(*eth.Version)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetVersion indicates an expected call of GetVersion.
func (mr *MockNodeClientMockRecorder) GetVersion(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVersion", reflect.TypeOf((*MockNodeClient)(nil).GetVersion), arg0, arg1)
}
// ListImplementedServices mocks base method.
func (m *MockNodeClient) ListImplementedServices(arg0 context.Context, arg1 *emptypb.Empty) (*eth.ImplementedServices, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListImplementedServices", arg0, arg1)
ret0, _ := ret[0].(*eth.ImplementedServices)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListImplementedServices indicates an expected call of ListImplementedServices.
func (mr *MockNodeClientMockRecorder) ListImplementedServices(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListImplementedServices", reflect.TypeOf((*MockNodeClient)(nil).ListImplementedServices), arg0, arg1)
}
// ListPeers mocks base method.
func (m *MockNodeClient) ListPeers(arg0 context.Context, arg1 *emptypb.Empty) (*eth.Peers, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListPeers", arg0, arg1)
ret0, _ := ret[0].(*eth.Peers)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListPeers indicates an expected call of ListPeers.
func (mr *MockNodeClientMockRecorder) ListPeers(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPeers", reflect.TypeOf((*MockNodeClient)(nil).ListPeers), arg0, arg1)
}

View File

@@ -0,0 +1,81 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/prysmaticlabs/prysm/v4/validator/client/iface (interfaces: SlasherClient)
// Package validator_mock is a generated GoMock package.
package validator_mock
import (
context "context"
reflect "reflect"
gomock "github.com/golang/mock/gomock"
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
)
// MockSlasherClient is a mock of SlasherClient interface.
type MockSlasherClient struct {
ctrl *gomock.Controller
recorder *MockSlasherClientMockRecorder
}
// MockSlasherClientMockRecorder is the mock recorder for MockSlasherClient.
type MockSlasherClientMockRecorder struct {
mock *MockSlasherClient
}
// NewMockSlasherClient creates a new mock instance.
func NewMockSlasherClient(ctrl *gomock.Controller) *MockSlasherClient {
mock := &MockSlasherClient{ctrl: ctrl}
mock.recorder = &MockSlasherClientMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockSlasherClient) EXPECT() *MockSlasherClientMockRecorder {
return m.recorder
}
// HighestAttestations mocks base method.
func (m *MockSlasherClient) HighestAttestations(arg0 context.Context, arg1 *eth.HighestAttestationRequest) (*eth.HighestAttestationResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "HighestAttestations", arg0, arg1)
ret0, _ := ret[0].(*eth.HighestAttestationResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// HighestAttestations indicates an expected call of HighestAttestations.
func (mr *MockSlasherClientMockRecorder) HighestAttestations(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HighestAttestations", reflect.TypeOf((*MockSlasherClient)(nil).HighestAttestations), arg0, arg1)
}
// IsSlashableAttestation mocks base method.
func (m *MockSlasherClient) IsSlashableAttestation(arg0 context.Context, arg1 *eth.IndexedAttestation) (*eth.AttesterSlashingResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "IsSlashableAttestation", arg0, arg1)
ret0, _ := ret[0].(*eth.AttesterSlashingResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// IsSlashableAttestation indicates an expected call of IsSlashableAttestation.
func (mr *MockSlasherClientMockRecorder) IsSlashableAttestation(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSlashableAttestation", reflect.TypeOf((*MockSlasherClient)(nil).IsSlashableAttestation), arg0, arg1)
}
// IsSlashableBlock mocks base method.
func (m *MockSlasherClient) IsSlashableBlock(arg0 context.Context, arg1 *eth.SignedBeaconBlockHeader) (*eth.ProposerSlashingResponse, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "IsSlashableBlock", arg0, arg1)
ret0, _ := ret[0].(*eth.ProposerSlashingResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// IsSlashableBlock indicates an expected call of IsSlashableBlock.
func (mr *MockSlasherClientMockRecorder) IsSlashableBlock(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSlashableBlock", reflect.TypeOf((*MockSlasherClient)(nil).IsSlashableBlock), arg0, arg1)
}

View File

@@ -1,8 +1,8 @@
// Code generated by MockGen. DO NOT EDIT. // Code generated by MockGen. DO NOT EDIT.
// Source: github.com/prysmaticlabs/prysm/v4/validator/client/iface (interfaces: ValidatorClient) // Source: github.com/prysmaticlabs/prysm/v4/validator/client/iface (interfaces: ValidatorClient)
// Package mock is a generated GoMock package. // Package validator_mock is a generated GoMock package.
package mock package validator_mock
import ( import (
context "context" context "context"
@@ -262,21 +262,6 @@ func (mr *MockValidatorClientMockRecorder) StreamBlocksAltair(arg0, arg1 interfa
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamBlocksAltair", reflect.TypeOf((*MockValidatorClient)(nil).StreamBlocksAltair), arg0, arg1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamBlocksAltair", reflect.TypeOf((*MockValidatorClient)(nil).StreamBlocksAltair), arg0, arg1)
} }
// StreamDuties mocks base method.
func (m *MockValidatorClient) StreamDuties(arg0 context.Context, arg1 *eth.DutiesRequest) (eth.BeaconNodeValidator_StreamDutiesClient, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "StreamDuties", arg0, arg1)
ret0, _ := ret[0].(eth.BeaconNodeValidator_StreamDutiesClient)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// StreamDuties indicates an expected call of StreamDuties.
func (mr *MockValidatorClientMockRecorder) StreamDuties(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StreamDuties", reflect.TypeOf((*MockValidatorClient)(nil).StreamDuties), arg0, arg1)
}
// SubmitAggregateSelectionProof mocks base method. // SubmitAggregateSelectionProof mocks base method.
func (m *MockValidatorClient) SubmitAggregateSelectionProof(arg0 context.Context, arg1 *eth.AggregateSelectionRequest) (*eth.AggregateSelectionResponse, error) { func (m *MockValidatorClient) SubmitAggregateSelectionProof(arg0 context.Context, arg1 *eth.AggregateSelectionRequest) (*eth.AggregateSelectionResponse, error) {
m.ctrl.T.Helper() m.ctrl.T.Helper()

View File

@@ -41,6 +41,7 @@ go_library(
"//validator/accounts/wallet:go_default_library", "//validator/accounts/wallet:go_default_library",
"//validator/client:go_default_library", "//validator/client:go_default_library",
"//validator/client/iface:go_default_library", "//validator/client/iface:go_default_library",
"//validator/client/node-client-factory:go_default_library",
"//validator/client/validator-client-factory:go_default_library", "//validator/client/validator-client-factory:go_default_library",
"//validator/helpers:go_default_library", "//validator/helpers:go_default_library",
"//validator/keymanager:go_default_library", "//validator/keymanager:go_default_library",
@@ -80,8 +81,8 @@ go_test(
"//proto/eth/service:go_default_library", "//proto/eth/service:go_default_library",
"//proto/prysm/v1alpha1:go_default_library", "//proto/prysm/v1alpha1:go_default_library",
"//testing/assert:go_default_library", "//testing/assert:go_default_library",
"//testing/mock:go_default_library",
"//testing/require:go_default_library", "//testing/require:go_default_library",
"//testing/validator-mock:go_default_library",
"//validator/accounts/iface:go_default_library", "//validator/accounts/iface:go_default_library",
"//validator/keymanager:go_default_library", "//validator/keymanager:go_default_library",
"//validator/keymanager/derived:go_default_library", "//validator/keymanager/derived:go_default_library",

View File

@@ -12,7 +12,6 @@ import (
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams" fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
"github.com/prysmaticlabs/prysm/v4/config/params" "github.com/prysmaticlabs/prysm/v4/config/params"
"github.com/prysmaticlabs/prysm/v4/encoding/bytesutil" "github.com/prysmaticlabs/prysm/v4/encoding/bytesutil"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/client" "github.com/prysmaticlabs/prysm/v4/validator/client"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface" "github.com/prysmaticlabs/prysm/v4/validator/client/iface"
"github.com/prysmaticlabs/prysm/v4/validator/keymanager" "github.com/prysmaticlabs/prysm/v4/validator/keymanager"
@@ -22,7 +21,7 @@ import (
// PerformExitCfg for account voluntary exits. // PerformExitCfg for account voluntary exits.
type PerformExitCfg struct { type PerformExitCfg struct {
ValidatorClient iface.ValidatorClient ValidatorClient iface.ValidatorClient
NodeClient ethpb.NodeClient NodeClient iface.NodeClient
Keymanager keymanager.IKeymanager Keymanager keymanager.IKeymanager
RawPubKeys [][]byte RawPubKeys [][]byte
FormattedPubKeys []string FormattedPubKeys []string

View File

@@ -19,8 +19,8 @@ import (
"github.com/prysmaticlabs/prysm/v4/crypto/bls" "github.com/prysmaticlabs/prysm/v4/crypto/bls"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
"github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
"github.com/prysmaticlabs/prysm/v4/validator/keymanager" "github.com/prysmaticlabs/prysm/v4/validator/keymanager"
"github.com/prysmaticlabs/prysm/v4/validator/keymanager/derived" "github.com/prysmaticlabs/prysm/v4/validator/keymanager/derived"
"github.com/prysmaticlabs/prysm/v4/validator/keymanager/local" "github.com/prysmaticlabs/prysm/v4/validator/keymanager/local"
@@ -287,7 +287,7 @@ func TestListAccounts_LocalKeymanager(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
m := mock.NewMockValidatorClient(ctrl) m := validatormock.NewMockValidatorClient(ctrl)
var pks [][]byte var pks [][]byte
for i := range pubKeys { for i := range pubKeys {
pks = append(pks, pubKeys[i][:]) pks = append(pks, pubKeys[i][:])

View File

@@ -7,9 +7,9 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
grpcutil "github.com/prysmaticlabs/prysm/v4/api/grpc" grpcutil "github.com/prysmaticlabs/prysm/v4/api/grpc"
"github.com/prysmaticlabs/prysm/v4/crypto/bls" "github.com/prysmaticlabs/prysm/v4/crypto/bls"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/accounts/wallet" "github.com/prysmaticlabs/prysm/v4/validator/accounts/wallet"
iface "github.com/prysmaticlabs/prysm/v4/validator/client/iface" iface "github.com/prysmaticlabs/prysm/v4/validator/client/iface"
nodeClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/node-client-factory"
validatorClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/validator-client-factory" validatorClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/validator-client-factory"
validatorHelpers "github.com/prysmaticlabs/prysm/v4/validator/helpers" validatorHelpers "github.com/prysmaticlabs/prysm/v4/validator/helpers"
"github.com/prysmaticlabs/prysm/v4/validator/keymanager" "github.com/prysmaticlabs/prysm/v4/validator/keymanager"
@@ -65,7 +65,7 @@ type AccountsCLIManager struct {
beaconApiTimeout time.Duration beaconApiTimeout time.Duration
} }
func (acm *AccountsCLIManager) prepareBeaconClients(ctx context.Context) (*iface.ValidatorClient, *ethpb.NodeClient, error) { func (acm *AccountsCLIManager) prepareBeaconClients(ctx context.Context) (*iface.ValidatorClient, *iface.NodeClient, error) {
if acm.dialOpts == nil { if acm.dialOpts == nil {
return nil, nil, errors.New("failed to construct dial options for beacon clients") return nil, nil, errors.New("failed to construct dial options for beacon clients")
} }
@@ -83,6 +83,6 @@ func (acm *AccountsCLIManager) prepareBeaconClients(ctx context.Context) (*iface
) )
validatorClient := validatorClientFactory.NewValidatorClient(conn) validatorClient := validatorClientFactory.NewValidatorClient(conn)
nodeClient := ethpb.NewNodeClient(grpcConn) nodeClient := nodeClientFactory.NewNodeClient(conn)
return &validatorClient, &nodeClient, nil return &validatorClient, &nodeClient, nil
} }

View File

@@ -54,7 +54,10 @@ go_library(
"//time/slots:go_default_library", "//time/slots:go_default_library",
"//validator/accounts/iface:go_default_library", "//validator/accounts/iface:go_default_library",
"//validator/accounts/wallet:go_default_library", "//validator/accounts/wallet:go_default_library",
"//validator/client/beacon-chain-client-factory:go_default_library",
"//validator/client/iface:go_default_library", "//validator/client/iface:go_default_library",
"//validator/client/node-client-factory:go_default_library",
"//validator/client/slasher-client-factory:go_default_library",
"//validator/client/validator-client-factory:go_default_library", "//validator/client/validator-client-factory:go_default_library",
"//validator/db:go_default_library", "//validator/db:go_default_library",
"//validator/db/kv:go_default_library", "//validator/db/kv:go_default_library",
@@ -137,6 +140,7 @@ go_test(
"//testing/mock:go_default_library", "//testing/mock:go_default_library",
"//testing/require:go_default_library", "//testing/require:go_default_library",
"//testing/util:go_default_library", "//testing/util:go_default_library",
"//testing/validator-mock:go_default_library",
"//time:go_default_library", "//time:go_default_library",
"//time/slots:go_default_library", "//time/slots:go_default_library",
"//validator/accounts/testing:go_default_library", "//validator/accounts/testing:go_default_library",

View File

@@ -5,7 +5,10 @@ go_library(
srcs = [ srcs = [
"activation.go", "activation.go",
"attestation_data.go", "attestation_data.go",
"beacon_api_beacon_chain_client.go",
"beacon_api_helpers.go", "beacon_api_helpers.go",
"beacon_api_node_client.go",
"beacon_api_slasher_client.go",
"beacon_api_validator_client.go", "beacon_api_validator_client.go",
"beacon_block_converter.go", "beacon_block_converter.go",
"beacon_block_json_helpers.go", "beacon_block_json_helpers.go",

View File

@@ -0,0 +1,240 @@
package beacon_api
import (
"context"
"net/http"
"time"
"github.com/golang/protobuf/ptypes/empty"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
)
type beaconApiBeaconChainClient struct {
fallbackClient iface.BeaconChainClient
jsonRestHandler jsonRestHandler
}
func (c beaconApiBeaconChainClient) ListAttestations(ctx context.Context, in *ethpb.ListAttestationsRequest) (*ethpb.ListAttestationsResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListAttestations(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.ListAttestations is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) ListIndexedAttestations(ctx context.Context, in *ethpb.ListIndexedAttestationsRequest) (*ethpb.ListIndexedAttestationsResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListIndexedAttestations(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.ListIndexedAttestations is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
// Deprecated: Do not use.
func (c beaconApiBeaconChainClient) StreamAttestations(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamAttestationsClient, error) {
if c.fallbackClient != nil {
return c.fallbackClient.StreamAttestations(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.StreamAttestations is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
// Deprecated: Do not use.
func (c beaconApiBeaconChainClient) StreamIndexedAttestations(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamIndexedAttestationsClient, error) {
if c.fallbackClient != nil {
return c.fallbackClient.StreamIndexedAttestations(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.StreamIndexedAttestations is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) AttestationPool(ctx context.Context, in *ethpb.AttestationPoolRequest) (*ethpb.AttestationPoolResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.AttestationPool(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.AttestationPool is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) ListBeaconBlocks(ctx context.Context, in *ethpb.ListBlocksRequest) (*ethpb.ListBeaconBlocksResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListBeaconBlocks(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.ListBeaconBlocks is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
// Deprecated: Do not use.
func (c beaconApiBeaconChainClient) StreamBlocks(ctx context.Context, in *ethpb.StreamBlocksRequest) (ethpb.BeaconChain_StreamBlocksClient, error) {
if c.fallbackClient != nil {
return c.fallbackClient.StreamBlocks(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.StreamBlocks is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
// Deprecated: Do not use.
func (c beaconApiBeaconChainClient) StreamChainHead(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamChainHeadClient, error) {
if c.fallbackClient != nil {
return c.fallbackClient.StreamChainHead(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.StreamChainHead is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetChainHead(ctx context.Context, in *empty.Empty) (*ethpb.ChainHead, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetChainHead(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetChainHead is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) ListBeaconCommittees(ctx context.Context, in *ethpb.ListCommitteesRequest) (*ethpb.BeaconCommittees, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListBeaconCommittees(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.ListBeaconCommittees is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) ListValidatorBalances(ctx context.Context, in *ethpb.ListValidatorBalancesRequest) (*ethpb.ValidatorBalances, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListValidatorBalances(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.ListValidatorBalances is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) ListValidators(ctx context.Context, in *ethpb.ListValidatorsRequest) (*ethpb.Validators, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListValidators(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.ListValidators is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetValidator(ctx context.Context, in *ethpb.GetValidatorRequest) (*ethpb.Validator, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetValidator(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetValidator is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetValidatorActiveSetChanges(ctx context.Context, in *ethpb.GetValidatorActiveSetChangesRequest) (*ethpb.ActiveSetChanges, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetValidatorActiveSetChanges(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetValidatorActiveSetChanges is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetValidatorQueue(ctx context.Context, in *empty.Empty) (*ethpb.ValidatorQueue, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetValidatorQueue(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetValidatorQueue is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetValidatorPerformance(ctx context.Context, in *ethpb.ValidatorPerformanceRequest) (*ethpb.ValidatorPerformanceResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetValidatorPerformance(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetValidatorPerformance is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) ListValidatorAssignments(ctx context.Context, in *ethpb.ListValidatorAssignmentsRequest) (*ethpb.ValidatorAssignments, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListValidatorAssignments(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.ListValidatorAssignments is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetValidatorParticipation(ctx context.Context, in *ethpb.GetValidatorParticipationRequest) (*ethpb.ValidatorParticipationResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetValidatorParticipation(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetValidatorParticipation is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetBeaconConfig(ctx context.Context, in *empty.Empty) (*ethpb.BeaconConfig, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetBeaconConfig(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetBeaconConfig is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
// Deprecated: Do not use.
func (c beaconApiBeaconChainClient) StreamValidatorsInfo(ctx context.Context) (ethpb.BeaconChain_StreamValidatorsInfoClient, error) {
if c.fallbackClient != nil {
return c.fallbackClient.StreamValidatorsInfo(ctx)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.StreamValidatorsInfo is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) SubmitAttesterSlashing(ctx context.Context, in *ethpb.AttesterSlashing) (*ethpb.SubmitSlashingResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.SubmitAttesterSlashing(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.SubmitAttesterSlashing is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) SubmitProposerSlashing(ctx context.Context, in *ethpb.ProposerSlashing) (*ethpb.SubmitSlashingResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.SubmitProposerSlashing(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.SubmitProposerSlashing is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func (c beaconApiBeaconChainClient) GetIndividualVotes(ctx context.Context, in *ethpb.IndividualVotesRequest) (*ethpb.IndividualVotesRespond, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetIndividualVotes(ctx, in)
}
// TODO: Implement me
panic("beaconApiBeaconChainClient.GetIndividualVotes is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiBeaconChainClientWithFallback.")
}
func NewBeaconApiBeaconChainClientWithFallback(host string, timeout time.Duration, fallbackClient iface.BeaconChainClient) iface.BeaconChainClient {
jsonRestHandler := beaconApiJsonRestHandler{
httpClient: http.Client{Timeout: timeout},
host: host,
}
return &beaconApiBeaconChainClient{
jsonRestHandler: jsonRestHandler,
fallbackClient: fallbackClient,
}
}

View File

@@ -0,0 +1,100 @@
package beacon_api
import (
"context"
"net/http"
"time"
"github.com/golang/protobuf/ptypes/empty"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
)
type beaconApiNodeClient struct {
fallbackClient iface.NodeClient
jsonRestHandler jsonRestHandler
}
func (c *beaconApiNodeClient) GetSyncStatus(ctx context.Context, in *empty.Empty) (*ethpb.SyncStatus, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetSyncStatus(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.GetSyncStatus is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func (c *beaconApiNodeClient) GetGenesis(ctx context.Context, in *empty.Empty) (*ethpb.Genesis, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetGenesis(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.GetGenesis is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func (c *beaconApiNodeClient) GetVersion(ctx context.Context, in *empty.Empty) (*ethpb.Version, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetVersion(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.GetVersion is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func (c *beaconApiNodeClient) ListImplementedServices(ctx context.Context, in *empty.Empty) (*ethpb.ImplementedServices, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListImplementedServices(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.ListImplementedServices is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func (c *beaconApiNodeClient) GetHost(ctx context.Context, in *empty.Empty) (*ethpb.HostData, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetHost(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.GetHost is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func (c *beaconApiNodeClient) GetPeer(ctx context.Context, in *ethpb.PeerRequest) (*ethpb.Peer, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetPeer(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.GetPeer is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func (c *beaconApiNodeClient) ListPeers(ctx context.Context, in *empty.Empty) (*ethpb.Peers, error) {
if c.fallbackClient != nil {
return c.fallbackClient.ListPeers(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.ListPeers is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func (c *beaconApiNodeClient) GetETH1ConnectionStatus(ctx context.Context, in *empty.Empty) (*ethpb.ETH1ConnectionStatus, error) {
if c.fallbackClient != nil {
return c.fallbackClient.GetETH1ConnectionStatus(ctx, in)
}
// TODO: Implement me
panic("beaconApiNodeClient.GetETH1ConnectionStatus is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiNodeClientWithFallback.")
}
func NewNodeClientWithFallback(host string, timeout time.Duration, fallbackClient iface.NodeClient) iface.NodeClient {
jsonRestHandler := beaconApiJsonRestHandler{
httpClient: http.Client{Timeout: timeout},
host: host,
}
return &beaconApiNodeClient{
jsonRestHandler: jsonRestHandler,
fallbackClient: fallbackClient,
}
}

View File

@@ -0,0 +1,55 @@
package beacon_api
import (
"context"
"net/http"
"time"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
)
type beaconApiSlasherClient struct {
fallbackClient iface.SlasherClient
jsonRestHandler jsonRestHandler
}
func (c beaconApiSlasherClient) IsSlashableAttestation(ctx context.Context, in *ethpb.IndexedAttestation) (*ethpb.AttesterSlashingResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.IsSlashableAttestation(ctx, in)
}
// TODO: Implement me
panic("beaconApiSlasherClient.IsSlashableAttestation is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiSlasherClientWithFallback.")
}
func (c beaconApiSlasherClient) IsSlashableBlock(ctx context.Context, in *ethpb.SignedBeaconBlockHeader) (*ethpb.ProposerSlashingResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.IsSlashableBlock(ctx, in)
}
// TODO: Implement me
panic("beaconApiSlasherClient.IsSlashableBlock is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiSlasherClientWithFallback.")
}
// Deprecated: Do not use.
func (c beaconApiSlasherClient) HighestAttestations(ctx context.Context, in *ethpb.HighestAttestationRequest) (*ethpb.HighestAttestationResponse, error) {
if c.fallbackClient != nil {
return c.fallbackClient.HighestAttestations(ctx, in)
}
// TODO: Implement me
panic("beaconApiSlasherClient.HighestAttestations is not implemented. To use a fallback client, pass a fallback client as the last argument of NewBeaconApiSlasherClientWithFallback.")
}
func NewSlasherClientWithFallback(host string, timeout time.Duration, fallbackClient iface.SlasherClient) iface.SlasherClient {
jsonRestHandler := beaconApiJsonRestHandler{
httpClient: http.Client{Timeout: timeout},
host: host,
}
return &beaconApiSlasherClient{
jsonRestHandler: jsonRestHandler,
fallbackClient: fallbackClient,
}
}

View File

@@ -0,0 +1,15 @@
load("@prysm//tools/go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = ["beacon_chain_client_factory.go"],
importpath = "github.com/prysmaticlabs/prysm/v4/validator/client/beacon-chain-client-factory",
visibility = ["//visibility:public"],
deps = [
"//config/features:go_default_library",
"//validator/client/beacon-api:go_default_library",
"//validator/client/grpc-api:go_default_library",
"//validator/client/iface:go_default_library",
"//validator/helpers:go_default_library",
],
)

View File

@@ -0,0 +1,20 @@
package validator_client_factory
import (
"github.com/prysmaticlabs/prysm/v4/config/features"
beaconApi "github.com/prysmaticlabs/prysm/v4/validator/client/beacon-api"
grpcApi "github.com/prysmaticlabs/prysm/v4/validator/client/grpc-api"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
validatorHelpers "github.com/prysmaticlabs/prysm/v4/validator/helpers"
)
func NewBeaconChainClient(validatorConn validatorHelpers.NodeConnection) iface.BeaconChainClient {
grpcClient := grpcApi.NewGrpcBeaconChainClient(validatorConn.GetGrpcClientConn())
featureFlags := features.Get()
if featureFlags.EnableBeaconRESTApi {
return beaconApi.NewBeaconApiBeaconChainClientWithFallback(validatorConn.GetBeaconApiUrl(), validatorConn.GetBeaconApiTimeout(), grpcClient)
} else {
return grpcClient
}
}

View File

@@ -2,7 +2,12 @@ load("@prysm//tools/go:def.bzl", "go_library", "go_test")
go_library( go_library(
name = "go_default_library", name = "go_default_library",
srcs = ["grpc_validator_client.go"], srcs = [
"grpc_beacon_chain_client.go",
"grpc_node_client.go",
"grpc_slasher_client.go",
"grpc_validator_client.go",
],
importpath = "github.com/prysmaticlabs/prysm/v4/validator/client/grpc-api", importpath = "github.com/prysmaticlabs/prysm/v4/validator/client/grpc-api",
visibility = ["//validator:__subpackages__"], visibility = ["//validator:__subpackages__"],
deps = [ deps = [

View File

@@ -0,0 +1,115 @@
package grpc_api
import (
"context"
"github.com/golang/protobuf/ptypes/empty"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
"google.golang.org/grpc"
)
type grpcBeaconChainClient struct {
beaconChainClient ethpb.BeaconChainClient
}
func (c *grpcBeaconChainClient) ListAttestations(ctx context.Context, in *ethpb.ListAttestationsRequest) (*ethpb.ListAttestationsResponse, error) {
return c.beaconChainClient.ListAttestations(ctx, in)
}
func (c *grpcBeaconChainClient) ListIndexedAttestations(ctx context.Context, in *ethpb.ListIndexedAttestationsRequest) (*ethpb.ListIndexedAttestationsResponse, error) {
return c.beaconChainClient.ListIndexedAttestations(ctx, in)
}
// Deprecated: Do not use.
func (c *grpcBeaconChainClient) StreamAttestations(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamAttestationsClient, error) {
return c.beaconChainClient.StreamAttestations(ctx, in)
}
// Deprecated: Do not use.
func (c *grpcBeaconChainClient) StreamIndexedAttestations(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamIndexedAttestationsClient, error) {
return c.beaconChainClient.StreamIndexedAttestations(ctx, in)
}
func (c *grpcBeaconChainClient) AttestationPool(ctx context.Context, in *ethpb.AttestationPoolRequest) (*ethpb.AttestationPoolResponse, error) {
return c.beaconChainClient.AttestationPool(ctx, in)
}
func (c *grpcBeaconChainClient) ListBeaconBlocks(ctx context.Context, in *ethpb.ListBlocksRequest) (*ethpb.ListBeaconBlocksResponse, error) {
return c.beaconChainClient.ListBeaconBlocks(ctx, in)
}
// Deprecated: Do not use.
func (c *grpcBeaconChainClient) StreamBlocks(ctx context.Context, in *ethpb.StreamBlocksRequest) (ethpb.BeaconChain_StreamBlocksClient, error) {
return c.beaconChainClient.StreamBlocks(ctx, in)
}
// Deprecated: Do not use.
func (c *grpcBeaconChainClient) StreamChainHead(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamChainHeadClient, error) {
return c.beaconChainClient.StreamChainHead(ctx, in)
}
func (c *grpcBeaconChainClient) GetChainHead(ctx context.Context, in *empty.Empty) (*ethpb.ChainHead, error) {
return c.beaconChainClient.GetChainHead(ctx, in)
}
func (c *grpcBeaconChainClient) ListBeaconCommittees(ctx context.Context, in *ethpb.ListCommitteesRequest) (*ethpb.BeaconCommittees, error) {
return c.beaconChainClient.ListBeaconCommittees(ctx, in)
}
func (c *grpcBeaconChainClient) ListValidatorBalances(ctx context.Context, in *ethpb.ListValidatorBalancesRequest) (*ethpb.ValidatorBalances, error) {
return c.beaconChainClient.ListValidatorBalances(ctx, in)
}
func (c *grpcBeaconChainClient) ListValidators(ctx context.Context, in *ethpb.ListValidatorsRequest) (*ethpb.Validators, error) {
return c.beaconChainClient.ListValidators(ctx, in)
}
func (c *grpcBeaconChainClient) GetValidator(ctx context.Context, in *ethpb.GetValidatorRequest) (*ethpb.Validator, error) {
return c.beaconChainClient.GetValidator(ctx, in)
}
func (c *grpcBeaconChainClient) GetValidatorActiveSetChanges(ctx context.Context, in *ethpb.GetValidatorActiveSetChangesRequest) (*ethpb.ActiveSetChanges, error) {
return c.beaconChainClient.GetValidatorActiveSetChanges(ctx, in)
}
func (c *grpcBeaconChainClient) GetValidatorQueue(ctx context.Context, in *empty.Empty) (*ethpb.ValidatorQueue, error) {
return c.beaconChainClient.GetValidatorQueue(ctx, in)
}
func (c *grpcBeaconChainClient) GetValidatorPerformance(ctx context.Context, in *ethpb.ValidatorPerformanceRequest) (*ethpb.ValidatorPerformanceResponse, error) {
return c.beaconChainClient.GetValidatorPerformance(ctx, in)
}
func (c *grpcBeaconChainClient) ListValidatorAssignments(ctx context.Context, in *ethpb.ListValidatorAssignmentsRequest) (*ethpb.ValidatorAssignments, error) {
return c.beaconChainClient.ListValidatorAssignments(ctx, in)
}
func (c *grpcBeaconChainClient) GetValidatorParticipation(ctx context.Context, in *ethpb.GetValidatorParticipationRequest) (*ethpb.ValidatorParticipationResponse, error) {
return c.beaconChainClient.GetValidatorParticipation(ctx, in)
}
func (c *grpcBeaconChainClient) GetBeaconConfig(ctx context.Context, in *empty.Empty) (*ethpb.BeaconConfig, error) {
return c.beaconChainClient.GetBeaconConfig(ctx, in)
}
// Deprecated: Do not use.
func (c *grpcBeaconChainClient) StreamValidatorsInfo(ctx context.Context) (ethpb.BeaconChain_StreamValidatorsInfoClient, error) {
return c.beaconChainClient.StreamValidatorsInfo(ctx)
}
func (c *grpcBeaconChainClient) SubmitAttesterSlashing(ctx context.Context, in *ethpb.AttesterSlashing) (*ethpb.SubmitSlashingResponse, error) {
return c.beaconChainClient.SubmitAttesterSlashing(ctx, in)
}
func (c *grpcBeaconChainClient) SubmitProposerSlashing(ctx context.Context, in *ethpb.ProposerSlashing) (*ethpb.SubmitSlashingResponse, error) {
return c.beaconChainClient.SubmitProposerSlashing(ctx, in)
}
func (c *grpcBeaconChainClient) GetIndividualVotes(ctx context.Context, in *ethpb.IndividualVotesRequest) (*ethpb.IndividualVotesRespond, error) {
return c.beaconChainClient.GetIndividualVotes(ctx, in)
}
func NewGrpcBeaconChainClient(cc grpc.ClientConnInterface) iface.BeaconChainClient {
return &grpcBeaconChainClient{ethpb.NewBeaconChainClient(cc)}
}

View File

@@ -0,0 +1,50 @@
package grpc_api
import (
"context"
"github.com/golang/protobuf/ptypes/empty"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
"google.golang.org/grpc"
)
type grpcNodeClient struct {
nodeClient ethpb.NodeClient
}
func (c *grpcNodeClient) GetSyncStatus(ctx context.Context, in *empty.Empty) (*ethpb.SyncStatus, error) {
return c.nodeClient.GetSyncStatus(ctx, in)
}
func (c *grpcNodeClient) GetGenesis(ctx context.Context, in *empty.Empty) (*ethpb.Genesis, error) {
return c.nodeClient.GetGenesis(ctx, in)
}
func (c *grpcNodeClient) GetVersion(ctx context.Context, in *empty.Empty) (*ethpb.Version, error) {
return c.nodeClient.GetVersion(ctx, in)
}
func (c *grpcNodeClient) ListImplementedServices(ctx context.Context, in *empty.Empty) (*ethpb.ImplementedServices, error) {
return c.nodeClient.ListImplementedServices(ctx, in)
}
func (c *grpcNodeClient) GetHost(ctx context.Context, in *empty.Empty) (*ethpb.HostData, error) {
return c.nodeClient.GetHost(ctx, in)
}
func (c *grpcNodeClient) GetPeer(ctx context.Context, in *ethpb.PeerRequest) (*ethpb.Peer, error) {
return c.nodeClient.GetPeer(ctx, in)
}
func (c *grpcNodeClient) ListPeers(ctx context.Context, in *empty.Empty) (*ethpb.Peers, error) {
return c.nodeClient.ListPeers(ctx, in)
}
func (c *grpcNodeClient) GetETH1ConnectionStatus(ctx context.Context, in *empty.Empty) (*ethpb.ETH1ConnectionStatus, error) {
return c.nodeClient.GetETH1ConnectionStatus(ctx, in)
}
func NewNodeClient(cc grpc.ClientConnInterface) iface.NodeClient {
return &grpcNodeClient{ethpb.NewNodeClient(cc)}
}

View File

@@ -0,0 +1,29 @@
package grpc_api
import (
"context"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
"google.golang.org/grpc"
)
type grpcSlasherClient struct {
slasherClient ethpb.SlasherClient
}
func (c *grpcSlasherClient) IsSlashableAttestation(ctx context.Context, in *ethpb.IndexedAttestation) (*ethpb.AttesterSlashingResponse, error) {
return c.slasherClient.IsSlashableAttestation(ctx, in)
}
func (c *grpcSlasherClient) IsSlashableBlock(ctx context.Context, in *ethpb.SignedBeaconBlockHeader) (*ethpb.ProposerSlashingResponse, error) {
return c.slasherClient.IsSlashableBlock(ctx, in)
}
func (c *grpcSlasherClient) HighestAttestations(ctx context.Context, in *ethpb.HighestAttestationRequest) (*ethpb.HighestAttestationResponse, error) {
return c.slasherClient.HighestAttestations(ctx, in)
}
func NewSlasherClient(cc grpc.ClientConnInterface) iface.SlasherClient {
return &grpcSlasherClient{ethpb.NewSlasherClient(cc)}
}

View File

@@ -3,6 +3,9 @@ load("@prysm//tools/go:def.bzl", "go_library")
go_library( go_library(
name = "go_default_library", name = "go_default_library",
srcs = [ srcs = [
"beacon_chain_client.go",
"node_client.go",
"slasher_client.go",
"validator.go", "validator.go",
"validator_client.go", "validator_client.go",
], ],

View File

@@ -0,0 +1,39 @@
package iface
import (
"context"
"github.com/golang/protobuf/ptypes/empty"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
)
type BeaconChainClient interface {
ListAttestations(ctx context.Context, in *ethpb.ListAttestationsRequest) (*ethpb.ListAttestationsResponse, error)
ListIndexedAttestations(ctx context.Context, in *ethpb.ListIndexedAttestationsRequest) (*ethpb.ListIndexedAttestationsResponse, error)
// Deprecated: Do not use.
StreamAttestations(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamAttestationsClient, error)
// Deprecated: Do not use.
StreamIndexedAttestations(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamIndexedAttestationsClient, error)
AttestationPool(ctx context.Context, in *ethpb.AttestationPoolRequest) (*ethpb.AttestationPoolResponse, error)
ListBeaconBlocks(ctx context.Context, in *ethpb.ListBlocksRequest) (*ethpb.ListBeaconBlocksResponse, error)
// Deprecated: Do not use.
StreamBlocks(ctx context.Context, in *ethpb.StreamBlocksRequest) (ethpb.BeaconChain_StreamBlocksClient, error)
// Deprecated: Do not use.
StreamChainHead(ctx context.Context, in *empty.Empty) (ethpb.BeaconChain_StreamChainHeadClient, error)
GetChainHead(ctx context.Context, in *empty.Empty) (*ethpb.ChainHead, error)
ListBeaconCommittees(ctx context.Context, in *ethpb.ListCommitteesRequest) (*ethpb.BeaconCommittees, error)
ListValidatorBalances(ctx context.Context, in *ethpb.ListValidatorBalancesRequest) (*ethpb.ValidatorBalances, error)
ListValidators(ctx context.Context, in *ethpb.ListValidatorsRequest) (*ethpb.Validators, error)
GetValidator(ctx context.Context, in *ethpb.GetValidatorRequest) (*ethpb.Validator, error)
GetValidatorActiveSetChanges(ctx context.Context, in *ethpb.GetValidatorActiveSetChangesRequest) (*ethpb.ActiveSetChanges, error)
GetValidatorQueue(ctx context.Context, in *empty.Empty) (*ethpb.ValidatorQueue, error)
GetValidatorPerformance(ctx context.Context, in *ethpb.ValidatorPerformanceRequest) (*ethpb.ValidatorPerformanceResponse, error)
ListValidatorAssignments(ctx context.Context, in *ethpb.ListValidatorAssignmentsRequest) (*ethpb.ValidatorAssignments, error)
GetValidatorParticipation(ctx context.Context, in *ethpb.GetValidatorParticipationRequest) (*ethpb.ValidatorParticipationResponse, error)
GetBeaconConfig(ctx context.Context, in *empty.Empty) (*ethpb.BeaconConfig, error)
// Deprecated: Do not use.
StreamValidatorsInfo(ctx context.Context) (ethpb.BeaconChain_StreamValidatorsInfoClient, error)
SubmitAttesterSlashing(ctx context.Context, in *ethpb.AttesterSlashing) (*ethpb.SubmitSlashingResponse, error)
SubmitProposerSlashing(ctx context.Context, in *ethpb.ProposerSlashing) (*ethpb.SubmitSlashingResponse, error)
GetIndividualVotes(ctx context.Context, in *ethpb.IndividualVotesRequest) (*ethpb.IndividualVotesRespond, error)
}

View File

@@ -0,0 +1,19 @@
package iface
import (
"context"
"github.com/golang/protobuf/ptypes/empty"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
)
type NodeClient interface {
GetSyncStatus(ctx context.Context, in *empty.Empty) (*ethpb.SyncStatus, error)
GetGenesis(ctx context.Context, in *empty.Empty) (*ethpb.Genesis, error)
GetVersion(ctx context.Context, in *empty.Empty) (*ethpb.Version, error)
ListImplementedServices(ctx context.Context, in *empty.Empty) (*ethpb.ImplementedServices, error)
GetHost(ctx context.Context, in *empty.Empty) (*ethpb.HostData, error)
GetPeer(ctx context.Context, in *ethpb.PeerRequest) (*ethpb.Peer, error)
ListPeers(ctx context.Context, in *empty.Empty) (*ethpb.Peers, error)
GetETH1ConnectionStatus(ctx context.Context, in *empty.Empty) (*ethpb.ETH1ConnectionStatus, error)
}

View File

@@ -0,0 +1,13 @@
package iface
import (
"context"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
)
type SlasherClient interface {
IsSlashableAttestation(ctx context.Context, in *ethpb.IndexedAttestation) (*ethpb.AttesterSlashingResponse, error)
IsSlashableBlock(ctx context.Context, in *ethpb.SignedBeaconBlockHeader) (*ethpb.ProposerSlashingResponse, error)
HighestAttestations(ctx context.Context, in *ethpb.HighestAttestationRequest) (*ethpb.HighestAttestationResponse, error)
}

View File

@@ -10,8 +10,8 @@ import (
"github.com/prysmaticlabs/prysm/v4/crypto/bls" "github.com/prysmaticlabs/prysm/v4/crypto/bls"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
"github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
"github.com/prysmaticlabs/prysm/v4/validator/client/testutil" "github.com/prysmaticlabs/prysm/v4/validator/client/testutil"
logTest "github.com/sirupsen/logrus/hooks/test" logTest "github.com/sirupsen/logrus/hooks/test"
) )
@@ -36,8 +36,8 @@ func TestValidator_HandleKeyReload(t *testing.T) {
inactivePubKey: inactivePrivKey, inactivePubKey: inactivePrivKey,
}, },
} }
client := mock.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
v := validator{ v := validator{
validatorClient: client, validatorClient: client,
keyManager: km, keyManager: km,
@@ -75,8 +75,8 @@ func TestValidator_HandleKeyReload(t *testing.T) {
inactivePubKey: inactivePrivKey, inactivePubKey: inactivePrivKey,
}, },
} }
client := mock.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
v := validator{ v := validator{
validatorClient: client, validatorClient: client,
keyManager: km, keyManager: km,
@@ -111,7 +111,7 @@ func TestValidator_HandleKeyReload(t *testing.T) {
inactivePubKey: inactivePrivKey, inactivePubKey: inactivePrivKey,
}, },
} }
client := mock.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{ v := validator{
validatorClient: client, validatorClient: client,
keyManager: km, keyManager: km,

View File

@@ -0,0 +1,15 @@
load("@prysm//tools/go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = ["node_client_factory.go"],
importpath = "github.com/prysmaticlabs/prysm/v4/validator/client/node-client-factory",
visibility = ["//visibility:public"],
deps = [
"//config/features:go_default_library",
"//validator/client/beacon-api:go_default_library",
"//validator/client/grpc-api:go_default_library",
"//validator/client/iface:go_default_library",
"//validator/helpers:go_default_library",
],
)

View File

@@ -0,0 +1,20 @@
package validator_client_factory
import (
"github.com/prysmaticlabs/prysm/v4/config/features"
beaconApi "github.com/prysmaticlabs/prysm/v4/validator/client/beacon-api"
grpcApi "github.com/prysmaticlabs/prysm/v4/validator/client/grpc-api"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
validatorHelpers "github.com/prysmaticlabs/prysm/v4/validator/helpers"
)
func NewNodeClient(validatorConn validatorHelpers.NodeConnection) iface.NodeClient {
grpcClient := grpcApi.NewNodeClient(validatorConn.GetGrpcClientConn())
featureFlags := features.Get()
if featureFlags.EnableBeaconRESTApi {
return beaconApi.NewNodeClientWithFallback(validatorConn.GetBeaconApiUrl(), validatorConn.GetBeaconApiTimeout(), grpcClient)
} else {
return grpcClient
}
}

View File

@@ -198,7 +198,7 @@ func (v *validator) ProposeBlock(ctx context.Context, slot primitives.Slot, pubK
func ProposeExit( func ProposeExit(
ctx context.Context, ctx context.Context,
validatorClient iface.ValidatorClient, validatorClient iface.ValidatorClient,
nodeClient ethpb.NodeClient, nodeClient iface.NodeClient,
signer iface.SigningFunc, signer iface.SigningFunc,
pubKey []byte, pubKey []byte,
) error { ) error {

View File

@@ -22,9 +22,9 @@ import (
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client" validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
"github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
"github.com/prysmaticlabs/prysm/v4/testing/util" "github.com/prysmaticlabs/prysm/v4/testing/util"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
testing2 "github.com/prysmaticlabs/prysm/v4/validator/db/testing" testing2 "github.com/prysmaticlabs/prysm/v4/validator/db/testing"
"github.com/prysmaticlabs/prysm/v4/validator/graffiti" "github.com/prysmaticlabs/prysm/v4/validator/graffiti"
logTest "github.com/sirupsen/logrus/hooks/test" logTest "github.com/sirupsen/logrus/hooks/test"
@@ -32,9 +32,9 @@ import (
) )
type mocks struct { type mocks struct {
validatorClient *mock.MockValidatorClient validatorClient *validatormock.MockValidatorClient
nodeClient *mock.MockNodeClient nodeClient *validatormock.MockNodeClient
slasherClient *mock.MockSlasherClient slasherClient *validatormock.MockSlasherClient
signfunc func(context.Context, *validatorpb.SignRequest) (bls.Signature, error) signfunc func(context.Context, *validatorpb.SignRequest) (bls.Signature, error)
} }
@@ -71,9 +71,9 @@ func setupWithKey(t *testing.T, validatorKey bls.SecretKey) (*validator, *mocks,
valDB := testing2.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{pubKey}) valDB := testing2.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{pubKey})
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
m := &mocks{ m := &mocks{
validatorClient: mock.NewMockValidatorClient(ctrl), validatorClient: validatormock.NewMockValidatorClient(ctrl),
nodeClient: mock.NewMockNodeClient(ctrl), nodeClient: validatormock.NewMockNodeClient(ctrl),
slasherClient: mock.NewMockSlasherClient(ctrl), slasherClient: validatormock.NewMockSlasherClient(ctrl),
signfunc: func(ctx context.Context, req *validatorpb.SignRequest) (bls.Signature, error) { signfunc: func(ctx context.Context, req *validatorpb.SignRequest) (bls.Signature, error) {
return mockSignature{}, nil return mockSignature{}, nil
}, },
@@ -935,7 +935,7 @@ func TestSignBellatrixBlock(t *testing.T) {
func TestGetGraffiti_Ok(t *testing.T) { func TestGetGraffiti_Ok(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
m := &mocks{ m := &mocks{
validatorClient: mock.NewMockValidatorClient(ctrl), validatorClient: validatormock.NewMockValidatorClient(ctrl),
} }
pubKey := [fieldparams.BLSPubkeyLength]byte{'a'} pubKey := [fieldparams.BLSPubkeyLength]byte{'a'}
tests := []struct { tests := []struct {
@@ -1018,7 +1018,7 @@ func TestGetGraffitiOrdered_Ok(t *testing.T) {
valDB := testing2.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{pubKey}) valDB := testing2.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{pubKey})
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
m := &mocks{ m := &mocks{
validatorClient: mock.NewMockValidatorClient(ctrl), validatorClient: validatormock.NewMockValidatorClient(ctrl),
} }
m.validatorClient.EXPECT(). m.validatorClient.EXPECT().
ValidatorIndex(gomock.Any(), &ethpb.ValidatorIndexRequest{PublicKey: pubKey[:]}). ValidatorIndex(gomock.Any(), &ethpb.ValidatorIndexRequest{PublicKey: pubKey[:]}).

View File

@@ -21,7 +21,10 @@ import (
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives" "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/validator/accounts/wallet" "github.com/prysmaticlabs/prysm/v4/validator/accounts/wallet"
beaconChainClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/beacon-chain-client-factory"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface" "github.com/prysmaticlabs/prysm/v4/validator/client/iface"
nodeClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/node-client-factory"
slasherClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/slasher-client-factory"
validatorClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/validator-client-factory" validatorClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/validator-client-factory"
"github.com/prysmaticlabs/prysm/v4/validator/db" "github.com/prysmaticlabs/prysm/v4/validator/db"
"github.com/prysmaticlabs/prysm/v4/validator/graffiti" "github.com/prysmaticlabs/prysm/v4/validator/graffiti"
@@ -188,9 +191,9 @@ func (v *ValidatorService) Start() {
valStruct := &validator{ valStruct := &validator{
db: v.db, db: v.db,
validatorClient: validatorClientFactory.NewValidatorClient(v.conn), validatorClient: validatorClientFactory.NewValidatorClient(v.conn),
beaconClient: ethpb.NewBeaconChainClient(v.conn.GetGrpcClientConn()), beaconClient: beaconChainClientFactory.NewBeaconChainClient(v.conn),
slashingProtectionClient: ethpb.NewSlasherClient(v.conn.GetGrpcClientConn()), slashingProtectionClient: slasherClientFactory.NewSlasherClient(v.conn),
node: ethpb.NewNodeClient(v.conn.GetGrpcClientConn()), node: nodeClientFactory.NewNodeClient(v.conn),
graffiti: v.graffiti, graffiti: v.graffiti,
logValidatorBalances: v.logValidatorBalances, logValidatorBalances: v.logValidatorBalances,
emitAccountMetrics: v.emitAccountMetrics, emitAccountMetrics: v.emitAccountMetrics,

View File

@@ -0,0 +1,15 @@
load("@prysm//tools/go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = ["slasher_client_factory.go"],
importpath = "github.com/prysmaticlabs/prysm/v4/validator/client/slasher-client-factory",
visibility = ["//visibility:public"],
deps = [
"//config/features:go_default_library",
"//validator/client/beacon-api:go_default_library",
"//validator/client/grpc-api:go_default_library",
"//validator/client/iface:go_default_library",
"//validator/helpers:go_default_library",
],
)

View File

@@ -0,0 +1,20 @@
package validator_client_factory
import (
"github.com/prysmaticlabs/prysm/v4/config/features"
beaconApi "github.com/prysmaticlabs/prysm/v4/validator/client/beacon-api"
grpcApi "github.com/prysmaticlabs/prysm/v4/validator/client/grpc-api"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
validatorHelpers "github.com/prysmaticlabs/prysm/v4/validator/helpers"
)
func NewSlasherClient(validatorConn validatorHelpers.NodeConnection) iface.SlasherClient {
grpcClient := grpcApi.NewSlasherClient(validatorConn.GetGrpcClientConn())
featureFlags := features.Get()
if featureFlags.EnableBeaconRESTApi {
return beaconApi.NewSlasherClientWithFallback(validatorConn.GetBeaconApiUrl(), validatorConn.GetBeaconApiTimeout(), grpcClient)
} else {
return grpcClient
}
}

View File

@@ -90,10 +90,10 @@ type validator struct {
interopKeysConfig *local.InteropKeymanagerConfig interopKeysConfig *local.InteropKeymanagerConfig
wallet *wallet.Wallet wallet *wallet.Wallet
graffitiStruct *graffiti.Graffiti graffitiStruct *graffiti.Graffiti
node ethpb.NodeClient node iface.NodeClient
slashingProtectionClient ethpb.SlasherClient slashingProtectionClient iface.SlasherClient
db vdb.Database db vdb.Database
beaconClient ethpb.BeaconChainClient beaconClient iface.BeaconChainClient
keyManager keymanager.IKeymanager keyManager keymanager.IKeymanager
ticker slots.Ticker ticker slots.Ticker
validatorClient iface.ValidatorClient validatorClient iface.ValidatorClient

View File

@@ -31,6 +31,7 @@ import (
mock2 "github.com/prysmaticlabs/prysm/v4/testing/mock" mock2 "github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
"github.com/prysmaticlabs/prysm/v4/testing/util" "github.com/prysmaticlabs/prysm/v4/testing/util"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
"github.com/prysmaticlabs/prysm/v4/validator/accounts/wallet" "github.com/prysmaticlabs/prysm/v4/validator/accounts/wallet"
"github.com/prysmaticlabs/prysm/v4/validator/client/iface" "github.com/prysmaticlabs/prysm/v4/validator/client/iface"
dbTest "github.com/prysmaticlabs/prysm/v4/validator/db/testing" dbTest "github.com/prysmaticlabs/prysm/v4/validator/db/testing"
@@ -141,7 +142,7 @@ func generateMockStatusResponse(pubkeys [][]byte) *ethpb.ValidatorActivationResp
func TestWaitForChainStart_SetsGenesisInfo(t *testing.T) { func TestWaitForChainStart_SetsGenesisInfo(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
db := dbTest.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{}) db := dbTest.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{})
v := validator{ v := validator{
@@ -187,7 +188,7 @@ func TestWaitForChainStart_SetsGenesisInfo(t *testing.T) {
func TestWaitForChainStart_SetsGenesisInfo_IncorrectSecondTry(t *testing.T) { func TestWaitForChainStart_SetsGenesisInfo_IncorrectSecondTry(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
db := dbTest.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{}) db := dbTest.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{})
v := validator{ v := validator{
@@ -230,7 +231,7 @@ func TestWaitForChainStart_SetsGenesisInfo_IncorrectSecondTry(t *testing.T) {
func TestWaitForChainStart_ContextCanceled(t *testing.T) { func TestWaitForChainStart_ContextCanceled(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{ v := validator{
//keyManager: testKeyManager, //keyManager: testKeyManager,
@@ -254,7 +255,7 @@ func TestWaitForChainStart_ContextCanceled(t *testing.T) {
func TestWaitForChainStart_ReceiveErrorFromStream(t *testing.T) { func TestWaitForChainStart_ReceiveErrorFromStream(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{ v := validator{
validatorClient: client, validatorClient: client,
@@ -271,7 +272,7 @@ func TestWaitForChainStart_ReceiveErrorFromStream(t *testing.T) {
func TestCanonicalHeadSlot_FailedRPC(t *testing.T) { func TestCanonicalHeadSlot_FailedRPC(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockBeaconChainClient(ctrl) client := validatormock.NewMockBeaconChainClient(ctrl)
v := validator{ v := validator{
beaconClient: client, beaconClient: client,
genesisTime: 1, genesisTime: 1,
@@ -287,7 +288,7 @@ func TestCanonicalHeadSlot_FailedRPC(t *testing.T) {
func TestCanonicalHeadSlot_OK(t *testing.T) { func TestCanonicalHeadSlot_OK(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockBeaconChainClient(ctrl) client := validatormock.NewMockBeaconChainClient(ctrl)
v := validator{ v := validator{
beaconClient: client, beaconClient: client,
} }
@@ -305,8 +306,8 @@ func TestWaitMultipleActivation_LogsActivationEpochOK(t *testing.T) {
hook := logTest.NewGlobal() hook := logTest.NewGlobal()
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock2.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock2.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -343,8 +344,8 @@ func TestWaitMultipleActivation_LogsActivationEpochOK(t *testing.T) {
func TestWaitActivation_NotAllValidatorsActivatedOK(t *testing.T) { func TestWaitActivation_NotAllValidatorsActivatedOK(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock2.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock2.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -381,7 +382,7 @@ func TestWaitActivation_NotAllValidatorsActivatedOK(t *testing.T) {
func TestWaitSync_ContextCanceled(t *testing.T) { func TestWaitSync_ContextCanceled(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
n := mock2.NewMockNodeClient(ctrl) n := validatormock.NewMockNodeClient(ctrl)
v := validator{ v := validator{
node: n, node: n,
@@ -401,7 +402,7 @@ func TestWaitSync_ContextCanceled(t *testing.T) {
func TestWaitSync_NotSyncing(t *testing.T) { func TestWaitSync_NotSyncing(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
n := mock2.NewMockNodeClient(ctrl) n := validatormock.NewMockNodeClient(ctrl)
v := validator{ v := validator{
node: n, node: n,
@@ -418,7 +419,7 @@ func TestWaitSync_NotSyncing(t *testing.T) {
func TestWaitSync_Syncing(t *testing.T) { func TestWaitSync_Syncing(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
n := mock2.NewMockNodeClient(ctrl) n := validatormock.NewMockNodeClient(ctrl)
v := validator{ v := validator{
node: n, node: n,
@@ -440,7 +441,7 @@ func TestWaitSync_Syncing(t *testing.T) {
func TestUpdateDuties_DoesNothingWhenNotEpochStart_AlreadyExistingAssignments(t *testing.T) { func TestUpdateDuties_DoesNothingWhenNotEpochStart_AlreadyExistingAssignments(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
slot := primitives.Slot(1) slot := primitives.Slot(1)
v := validator{ v := validator{
@@ -466,7 +467,7 @@ func TestUpdateDuties_DoesNothingWhenNotEpochStart_AlreadyExistingAssignments(t
func TestUpdateDuties_ReturnsError(t *testing.T) { func TestUpdateDuties_ReturnsError(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
@@ -503,7 +504,7 @@ func TestUpdateDuties_ReturnsError(t *testing.T) {
func TestUpdateDuties_OK(t *testing.T) { func TestUpdateDuties_OK(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
slot := params.BeaconConfig().SlotsPerEpoch slot := params.BeaconConfig().SlotsPerEpoch
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
@@ -562,7 +563,7 @@ func TestUpdateDuties_OK_FilterBlacklistedPublicKeys(t *testing.T) {
hook := logTest.NewGlobal() hook := logTest.NewGlobal()
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
slot := params.BeaconConfig().SlotsPerEpoch slot := params.BeaconConfig().SlotsPerEpoch
numValidators := 10 numValidators := 10
@@ -817,7 +818,7 @@ func TestCheckAndLogValidatorStatus_OK(t *testing.T) {
hook := logTest.NewGlobal() hook := logTest.NewGlobal()
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{ v := validator{
validatorClient: client, validatorClient: client,
duties: &ethpb.DutiesResponse{ duties: &ethpb.DutiesResponse{
@@ -841,7 +842,7 @@ func TestCheckAndLogValidatorStatus_OK(t *testing.T) {
func TestAllValidatorsAreExited_AllExited(t *testing.T) { func TestAllValidatorsAreExited_AllExited(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
statuses := []*ethpb.ValidatorStatusResponse{ statuses := []*ethpb.ValidatorStatusResponse{
{Status: ethpb.ValidatorStatus_EXITED}, {Status: ethpb.ValidatorStatus_EXITED},
@@ -862,7 +863,7 @@ func TestAllValidatorsAreExited_AllExited(t *testing.T) {
func TestAllValidatorsAreExited_NotAllExited(t *testing.T) { func TestAllValidatorsAreExited_NotAllExited(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
statuses := []*ethpb.ValidatorStatusResponse{ statuses := []*ethpb.ValidatorStatusResponse{
{Status: ethpb.ValidatorStatus_ACTIVE}, {Status: ethpb.ValidatorStatus_ACTIVE},
@@ -883,7 +884,7 @@ func TestAllValidatorsAreExited_NotAllExited(t *testing.T) {
func TestAllValidatorsAreExited_PartialResult(t *testing.T) { func TestAllValidatorsAreExited_PartialResult(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
statuses := []*ethpb.ValidatorStatusResponse{ statuses := []*ethpb.ValidatorStatusResponse{
{Status: ethpb.ValidatorStatus_EXITED}, {Status: ethpb.ValidatorStatus_EXITED},
@@ -903,7 +904,7 @@ func TestAllValidatorsAreExited_PartialResult(t *testing.T) {
func TestAllValidatorsAreExited_NoKeys(t *testing.T) { func TestAllValidatorsAreExited_NoKeys(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{keyManager: genMockKeymanager(0), validatorClient: client} v := validator{keyManager: genMockKeymanager(0), validatorClient: client}
exited, err := v.AllValidatorsAreExited(context.Background()) exited, err := v.AllValidatorsAreExited(context.Background())
require.NoError(t, err) require.NoError(t, err)
@@ -914,7 +915,7 @@ func TestAllValidatorsAreExited_NoKeys(t *testing.T) {
func TestAllValidatorsAreExited_CorrectRequest(t *testing.T) { func TestAllValidatorsAreExited_CorrectRequest(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
// Create two different public keys // Create two different public keys
pubKey0 := [fieldparams.BLSPubkeyLength]byte{1, 2, 3, 4} pubKey0 := [fieldparams.BLSPubkeyLength]byte{1, 2, 3, 4}
@@ -957,7 +958,7 @@ func TestAllValidatorsAreExited_CorrectRequest(t *testing.T) {
func TestService_ReceiveBlocks_NilBlock(t *testing.T) { func TestService_ReceiveBlocks_NilBlock(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
valClient := mock2.NewMockValidatorClient(ctrl) valClient := validatormock.NewMockValidatorClient(ctrl)
v := validator{ v := validator{
blockFeed: new(event.Feed), blockFeed: new(event.Feed),
validatorClient: valClient, validatorClient: valClient,
@@ -984,7 +985,7 @@ func TestService_ReceiveBlocks_NilBlock(t *testing.T) {
func TestService_ReceiveBlocks_SetHighest(t *testing.T) { func TestService_ReceiveBlocks_SetHighest(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{ v := validator{
validatorClient: client, validatorClient: client,
@@ -1045,7 +1046,7 @@ func TestValidator_CheckDoppelGanger(t *testing.T) {
{ {
name: "no doppelganger", name: "no doppelganger",
validatorSetter: func(t *testing.T) *validator { validatorSetter: func(t *testing.T) *validator {
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
km := genMockKeymanager(10) km := genMockKeymanager(10)
keys, err := km.FetchValidatingPublicKeys(context.Background()) keys, err := km.FetchValidatingPublicKeys(context.Background())
assert.NoError(t, err) assert.NoError(t, err)
@@ -1077,7 +1078,7 @@ func TestValidator_CheckDoppelGanger(t *testing.T) {
{ {
name: "multiple doppelganger exists", name: "multiple doppelganger exists",
validatorSetter: func(t *testing.T) *validator { validatorSetter: func(t *testing.T) *validator {
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
km := genMockKeymanager(10) km := genMockKeymanager(10)
keys, err := km.FetchValidatingPublicKeys(context.Background()) keys, err := km.FetchValidatingPublicKeys(context.Background())
assert.NoError(t, err) assert.NoError(t, err)
@@ -1111,7 +1112,7 @@ func TestValidator_CheckDoppelGanger(t *testing.T) {
{ {
name: "single doppelganger exists", name: "single doppelganger exists",
validatorSetter: func(t *testing.T) *validator { validatorSetter: func(t *testing.T) *validator {
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
km := genMockKeymanager(10) km := genMockKeymanager(10)
keys, err := km.FetchValidatingPublicKeys(context.Background()) keys, err := km.FetchValidatingPublicKeys(context.Background())
assert.NoError(t, err) assert.NoError(t, err)
@@ -1145,7 +1146,7 @@ func TestValidator_CheckDoppelGanger(t *testing.T) {
{ {
name: "multiple attestations saved", name: "multiple attestations saved",
validatorSetter: func(t *testing.T) *validator { validatorSetter: func(t *testing.T) *validator {
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
km := genMockKeymanager(10) km := genMockKeymanager(10)
keys, err := km.FetchValidatingPublicKeys(context.Background()) keys, err := km.FetchValidatingPublicKeys(context.Background())
assert.NoError(t, err) assert.NoError(t, err)
@@ -1184,7 +1185,7 @@ func TestValidator_CheckDoppelGanger(t *testing.T) {
{ {
name: "no history exists", name: "no history exists",
validatorSetter: func(t *testing.T) *validator { validatorSetter: func(t *testing.T) *validator {
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
// Use only 1 key for deterministic order. // Use only 1 key for deterministic order.
km := genMockKeymanager(1) km := genMockKeymanager(1)
keys, err := km.FetchValidatingPublicKeys(context.Background()) keys, err := km.FetchValidatingPublicKeys(context.Background())
@@ -1397,8 +1398,8 @@ func TestValidator_PushProposerSettings(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
ctx := context.Background() ctx := context.Background()
db := dbTest.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{}) db := dbTest.SetupDB(t, [][fieldparams.BLSPubkeyLength]byte{})
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
nodeClient := mock2.NewMockNodeClient(ctrl) nodeClient := validatormock.NewMockNodeClient(ctrl)
defaultFeeHex := "0x046Fb65722E7b2455043BFEBf6177F1D2e9738D9" defaultFeeHex := "0x046Fb65722E7b2455043BFEBf6177F1D2e9738D9"
byteValueAddress, err := hexutil.Decode("0x046Fb65722E7b2455043BFEBf6177F1D2e9738D9") byteValueAddress, err := hexutil.Decode("0x046Fb65722E7b2455043BFEBf6177F1D2e9738D9")
require.NoError(t, err) require.NoError(t, err)
@@ -1981,7 +1982,7 @@ func TestValidator_buildPrepProposerReqs_InvalidValidatorIndex(t *testing.T) {
defer ctrl.Finish() defer ctrl.Finish()
ctx := context.Background() ctx := context.Background()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{validatorClient: client} v := validator{validatorClient: client}
pubkeys := [][fieldparams.BLSPubkeyLength]byte{{}} pubkeys := [][fieldparams.BLSPubkeyLength]byte{{}}
@@ -2035,7 +2036,7 @@ func TestValidator_buildPrepProposerReqs_WithoutDefaultConfig(t *testing.T) {
defer ctrl.Finish() defer ctrl.Finish()
ctx := context.Background() ctx := context.Background()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
client.EXPECT().ValidatorIndex( client.EXPECT().ValidatorIndex(
ctx, ctx,
@@ -2122,7 +2123,7 @@ func TestValidator_buildPrepProposerReqs_WithDefaultConfig(t *testing.T) {
defer ctrl.Finish() defer ctrl.Finish()
ctx := context.Background() ctx := context.Background()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
client.EXPECT().ValidatorIndex( client.EXPECT().ValidatorIndex(
ctx, ctx,
@@ -2214,7 +2215,7 @@ func TestValidator_buildSignedRegReqs_DefaultConfigDisabled(t *testing.T) {
defer ctrl.Finish() defer ctrl.Finish()
ctx := context.Background() ctx := context.Background()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
signature := blsmock.NewMockSignature(ctrl) signature := blsmock.NewMockSignature(ctrl)
signature.EXPECT().Marshal().Return([]byte{}) signature.EXPECT().Marshal().Return([]byte{})
@@ -2297,7 +2298,7 @@ func TestValidator_buildSignedRegReqs_DefaultConfigEnabled(t *testing.T) {
defer ctrl.Finish() defer ctrl.Finish()
ctx := context.Background() ctx := context.Background()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
signature := blsmock.NewMockSignature(ctrl) signature := blsmock.NewMockSignature(ctrl)
signature.EXPECT().Marshal().Return([]byte{}).Times(2) signature.EXPECT().Marshal().Return([]byte{}).Times(2)
@@ -2376,7 +2377,7 @@ func TestValidator_buildSignedRegReqs_SignerOnError(t *testing.T) {
defer ctrl.Finish() defer ctrl.Finish()
ctx := context.Background() ctx := context.Background()
client := mock2.NewMockValidatorClient(ctrl) client := validatormock.NewMockValidatorClient(ctrl)
v := validator{ v := validator{
signedValidatorRegistrations: map[[48]byte]*ethpb.SignedValidatorRegistrationV1{}, signedValidatorRegistrations: map[[48]byte]*ethpb.SignedValidatorRegistrationV1{},

View File

@@ -14,6 +14,7 @@ import (
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
"github.com/prysmaticlabs/prysm/v4/testing/mock" "github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
walletMock "github.com/prysmaticlabs/prysm/v4/validator/accounts/testing" walletMock "github.com/prysmaticlabs/prysm/v4/validator/accounts/testing"
"github.com/prysmaticlabs/prysm/v4/validator/keymanager/derived" "github.com/prysmaticlabs/prysm/v4/validator/keymanager/derived"
constant "github.com/prysmaticlabs/prysm/v4/validator/testing" constant "github.com/prysmaticlabs/prysm/v4/validator/testing"
@@ -25,8 +26,8 @@ import (
func TestWaitActivation_ContextCanceled(t *testing.T) { func TestWaitActivation_ContextCanceled(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -61,8 +62,8 @@ func TestWaitActivation_ContextCanceled(t *testing.T) {
func TestWaitActivation_StreamSetupFails_AttemptsToReconnect(t *testing.T) { func TestWaitActivation_StreamSetupFails_AttemptsToReconnect(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -94,8 +95,8 @@ func TestWaitActivation_StreamSetupFails_AttemptsToReconnect(t *testing.T) {
func TestWaitForActivation_ReceiveErrorFromStream_AttemptsReconnection(t *testing.T) { func TestWaitForActivation_ReceiveErrorFromStream_AttemptsReconnection(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -132,8 +133,8 @@ func TestWaitActivation_LogsActivationEpochOK(t *testing.T) {
hook := logTest.NewGlobal() hook := logTest.NewGlobal()
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -170,8 +171,8 @@ func TestWaitActivation_LogsActivationEpochOK(t *testing.T) {
func TestWaitForActivation_Exiting(t *testing.T) { func TestWaitForActivation_Exiting(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -213,8 +214,8 @@ func TestWaitForActivation_RefetchKeys(t *testing.T) {
hook := logTest.NewGlobal() hook := logTest.NewGlobal()
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
privKey, err := bls.RandKey() privKey, err := bls.RandKey()
require.NoError(t, err) require.NoError(t, err)
var pubKey [fieldparams.BLSPubkeyLength]byte var pubKey [fieldparams.BLSPubkeyLength]byte
@@ -268,8 +269,8 @@ func TestWaitForActivation_AccountsChanged(t *testing.T) {
inactivePubKey: inactivePrivKey, inactivePubKey: inactivePrivKey,
}, },
} }
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
v := validator{ v := validator{
validatorClient: validatorClient, validatorClient: validatorClient,
keyManager: km, keyManager: km,
@@ -342,8 +343,8 @@ func TestWaitForActivation_AccountsChanged(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
err = km.RecoverAccountsFromMnemonic(ctx, constant.TestMnemonic, derived.DefaultMnemonicLanguage, "", 1) err = km.RecoverAccountsFromMnemonic(ctx, constant.TestMnemonic, derived.DefaultMnemonicLanguage, "", 1)
require.NoError(t, err) require.NoError(t, err)
validatorClient := mock.NewMockValidatorClient(ctrl) validatorClient := validatormock.NewMockValidatorClient(ctrl)
beaconClient := mock.NewMockBeaconChainClient(ctrl) beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
v := validator{ v := validator{
validatorClient: validatorClient, validatorClient: validatorClient,
keyManager: km, keyManager: km,

View File

@@ -43,7 +43,9 @@ go_library(
"//validator/accounts/petnames:go_default_library", "//validator/accounts/petnames:go_default_library",
"//validator/accounts/wallet:go_default_library", "//validator/accounts/wallet:go_default_library",
"//validator/client:go_default_library", "//validator/client:go_default_library",
"//validator/client/beacon-chain-client-factory:go_default_library",
"//validator/client/iface:go_default_library", "//validator/client/iface:go_default_library",
"//validator/client/node-client-factory:go_default_library",
"//validator/client/validator-client-factory:go_default_library", "//validator/client/validator-client-factory:go_default_library",
"//validator/db:go_default_library", "//validator/db:go_default_library",
"//validator/helpers:go_default_library", "//validator/helpers:go_default_library",
@@ -107,8 +109,8 @@ go_test(
"//proto/prysm/v1alpha1:go_default_library", "//proto/prysm/v1alpha1:go_default_library",
"//proto/prysm/v1alpha1/validator-client:go_default_library", "//proto/prysm/v1alpha1/validator-client:go_default_library",
"//testing/assert:go_default_library", "//testing/assert:go_default_library",
"//testing/mock:go_default_library",
"//testing/require:go_default_library", "//testing/require:go_default_library",
"//testing/validator-mock:go_default_library",
"//validator/accounts:go_default_library", "//validator/accounts:go_default_library",
"//validator/accounts/iface:go_default_library", "//validator/accounts/iface:go_default_library",
"//validator/accounts/testing:go_default_library", "//validator/accounts/testing:go_default_library",

View File

@@ -16,8 +16,8 @@ import (
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
pb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client" pb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
mock2 "github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
"github.com/prysmaticlabs/prysm/v4/validator/accounts" "github.com/prysmaticlabs/prysm/v4/validator/accounts"
"github.com/prysmaticlabs/prysm/v4/validator/accounts/iface" "github.com/prysmaticlabs/prysm/v4/validator/accounts/iface"
mock "github.com/prysmaticlabs/prysm/v4/validator/accounts/testing" mock "github.com/prysmaticlabs/prysm/v4/validator/accounts/testing"
@@ -187,8 +187,8 @@ func TestServer_VoluntaryExit(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
ctx := context.Background() ctx := context.Background()
mockValidatorClient := mock2.NewMockValidatorClient(ctrl) mockValidatorClient := validatormock.NewMockValidatorClient(ctrl)
mockNodeClient := mock2.NewMockNodeClient(ctrl) mockNodeClient := validatormock.NewMockNodeClient(ctrl)
mockValidatorClient.EXPECT(). mockValidatorClient.EXPECT().
ValidatorIndex(gomock.Any(), gomock.Any()). ValidatorIndex(gomock.Any(), gomock.Any()).

View File

@@ -14,6 +14,8 @@ import (
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client" validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
"github.com/prysmaticlabs/prysm/v4/validator/client" "github.com/prysmaticlabs/prysm/v4/validator/client"
beaconChainClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/beacon-chain-client-factory"
nodeClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/node-client-factory"
validatorClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/validator-client-factory" validatorClientFactory "github.com/prysmaticlabs/prysm/v4/validator/client/validator-client-factory"
validatorHelpers "github.com/prysmaticlabs/prysm/v4/validator/helpers" validatorHelpers "github.com/prysmaticlabs/prysm/v4/validator/helpers"
"google.golang.org/grpc" "google.golang.org/grpc"
@@ -47,8 +49,6 @@ func (s *Server) registerBeaconClient() error {
if s.clientWithCert != "" { if s.clientWithCert != "" {
log.Info("Established secure gRPC connection") log.Info("Established secure gRPC connection")
} }
s.beaconChainClient = ethpb.NewBeaconChainClient(grpcConn)
s.beaconNodeClient = ethpb.NewNodeClient(grpcConn)
s.beaconNodeHealthClient = ethpb.NewHealthClient(grpcConn) s.beaconNodeHealthClient = ethpb.NewHealthClient(grpcConn)
conn := validatorHelpers.NewNodeConnection( conn := validatorHelpers.NewNodeConnection(
@@ -57,6 +57,8 @@ func (s *Server) registerBeaconClient() error {
s.beaconApiTimeout, s.beaconApiTimeout,
) )
s.beaconChainClient = beaconChainClientFactory.NewBeaconChainClient(conn)
s.beaconNodeClient = nodeClientFactory.NewNodeClient(conn)
s.beaconNodeValidatorClient = validatorClientFactory.NewValidatorClient(conn) s.beaconNodeValidatorClient = validatorClientFactory.NewValidatorClient(conn)
return nil return nil
} }

View File

@@ -11,15 +11,15 @@ import (
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
pb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client" pb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
mock2 "github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
"google.golang.org/grpc/metadata" "google.golang.org/grpc/metadata"
"google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/timestamppb"
) )
func TestGetBeaconStatus_NotConnected(t *testing.T) { func TestGetBeaconStatus_NotConnected(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
nodeClient := mock2.NewMockNodeClient(ctrl) nodeClient := validatormock.NewMockNodeClient(ctrl)
nodeClient.EXPECT().GetSyncStatus( nodeClient.EXPECT().GetSyncStatus(
gomock.Any(), // ctx gomock.Any(), // ctx
gomock.Any(), gomock.Any(),
@@ -40,8 +40,8 @@ func TestGetBeaconStatus_NotConnected(t *testing.T) {
func TestGetBeaconStatus_OK(t *testing.T) { func TestGetBeaconStatus_OK(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
nodeClient := mock2.NewMockNodeClient(ctrl) nodeClient := validatormock.NewMockNodeClient(ctrl)
beaconChainClient := mock2.NewMockBeaconChainClient(ctrl) beaconChainClient := validatormock.NewMockBeaconChainClient(ctrl)
nodeClient.EXPECT().GetSyncStatus( nodeClient.EXPECT().GetSyncStatus(
gomock.Any(), // ctx gomock.Any(), // ctx
gomock.Any(), gomock.Any(),

View File

@@ -58,8 +58,8 @@ type Config struct {
type Server struct { type Server struct {
logsStreamer logs.Streamer logsStreamer logs.Streamer
streamLogsBufferSize int streamLogsBufferSize int
beaconChainClient ethpb.BeaconChainClient beaconChainClient iface.BeaconChainClient
beaconNodeClient ethpb.NodeClient beaconNodeClient iface.NodeClient
beaconNodeValidatorClient iface.ValidatorClient beaconNodeValidatorClient iface.ValidatorClient
beaconNodeHealthClient ethpb.HealthClient beaconNodeHealthClient ethpb.HealthClient
valDB db.Database valDB db.Database

View File

@@ -23,8 +23,8 @@ import (
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1" eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client" validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
"github.com/prysmaticlabs/prysm/v4/testing/assert" "github.com/prysmaticlabs/prysm/v4/testing/assert"
mock2 "github.com/prysmaticlabs/prysm/v4/testing/mock"
"github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/require"
validatormock "github.com/prysmaticlabs/prysm/v4/testing/validator-mock"
"github.com/prysmaticlabs/prysm/v4/validator/accounts" "github.com/prysmaticlabs/prysm/v4/validator/accounts"
"github.com/prysmaticlabs/prysm/v4/validator/accounts/iface" "github.com/prysmaticlabs/prysm/v4/validator/accounts/iface"
mock "github.com/prysmaticlabs/prysm/v4/validator/accounts/testing" mock "github.com/prysmaticlabs/prysm/v4/validator/accounts/testing"
@@ -758,7 +758,7 @@ func TestServer_ListFeeRecipientByPubkey(t *testing.T) {
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
mockValidatorClient := mock2.NewMockValidatorClient(ctrl) mockValidatorClient := validatormock.NewMockValidatorClient(ctrl)
m := &mock.MockValidator{} m := &mock.MockValidator{}
m.SetProposerSettings(tt.args) m.SetProposerSettings(tt.args)
@@ -791,7 +791,7 @@ func TestServer_ListFeeRecipientByPubKey_BeaconNodeError(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
mockValidatorClient := mock2.NewMockValidatorClient(ctrl) mockValidatorClient := validatormock.NewMockValidatorClient(ctrl)
mockValidatorClient.EXPECT().GetFeeRecipientByPubKey(gomock.Any(), gomock.Any()).Return(nil, errors.New("custom error")) mockValidatorClient.EXPECT().GetFeeRecipientByPubKey(gomock.Any(), gomock.Any()).Return(nil, errors.New("custom error"))
@@ -815,7 +815,7 @@ func TestServer_ListFeeRecipientByPubKey_NoFeeRecipientSet(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
mockValidatorClient := mock2.NewMockValidatorClient(ctrl) mockValidatorClient := validatormock.NewMockValidatorClient(ctrl)
mockValidatorClient.EXPECT().GetFeeRecipientByPubKey(gomock.Any(), gomock.Any()).Return(nil, nil) mockValidatorClient.EXPECT().GetFeeRecipientByPubKey(gomock.Any(), gomock.Any()).Return(nil, nil)
@@ -860,7 +860,7 @@ func TestServer_FeeRecipientByPubkey(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
beaconClient := mock2.NewMockValidatorClient(ctrl) beaconClient := validatormock.NewMockValidatorClient(ctrl)
ctx := grpc.NewContextWithServerTransportStream(context.Background(), &runtime.ServerTransportStream{}) ctx := grpc.NewContextWithServerTransportStream(context.Background(), &runtime.ServerTransportStream{})
byteval, err := hexutil.Decode("0xaf2e7ba294e03438ea819bd4033c6c1bf6b04320ee2075b77273c08d02f8a61bcc303c2c06bd3713cb442072ae591493") byteval, err := hexutil.Decode("0xaf2e7ba294e03438ea819bd4033c6c1bf6b04320ee2075b77273c08d02f8a61bcc303c2c06bd3713cb442072ae591493")
@@ -1208,7 +1208,7 @@ func TestServer_SetGasLimit(t *testing.T) {
ctrl := gomock.NewController(t) ctrl := gomock.NewController(t)
defer ctrl.Finish() defer ctrl.Finish()
beaconClient := mock2.NewMockValidatorClient(ctrl) beaconClient := validatormock.NewMockValidatorClient(ctrl)
ctx := grpc.NewContextWithServerTransportStream(context.Background(), &runtime.ServerTransportStream{}) ctx := grpc.NewContextWithServerTransportStream(context.Background(), &runtime.ServerTransportStream{})
pubkey1, err := hexutil.Decode("0xaf2e7ba294e03438ea819bd4033c6c1bf6b04320ee2075b77273c08d02f8a61bcc303c2c06bd3713cb442072ae591493") pubkey1, err := hexutil.Decode("0xaf2e7ba294e03438ea819bd4033c6c1bf6b04320ee2075b77273c08d02f8a61bcc303c2c06bd3713cb442072ae591493")