mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
integrate validator count endpoint in validator client (#12912)
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
This commit is contained in:
@@ -7,6 +7,9 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
validatorType "github.com/prysmaticlabs/prysm/v4/consensus-types/validator"
|
||||
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
|
||||
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/pkg/errors"
|
||||
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
||||
@@ -57,11 +60,13 @@ func TestWaitActivation_StreamSetupFails_AttemptsToReconnect(t *testing.T) {
|
||||
defer ctrl.Finish()
|
||||
validatorClient := validatormock.NewMockValidatorClient(ctrl)
|
||||
beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
|
||||
prysmBeaconClient := validatormock.NewMockPrysmBeaconChainClient(ctrl)
|
||||
kp := randKeypair(t)
|
||||
v := validator{
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
beaconClient: beaconClient,
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
beaconClient: beaconClient,
|
||||
prysmBeaconClient: prysmBeaconClient,
|
||||
}
|
||||
clientStream := mock.NewMockBeaconNodeValidator_WaitForActivationClient(ctrl)
|
||||
validatorClient.EXPECT().WaitForActivation(
|
||||
@@ -70,7 +75,11 @@ func TestWaitActivation_StreamSetupFails_AttemptsToReconnect(t *testing.T) {
|
||||
PublicKeys: [][]byte{kp.pub[:]},
|
||||
},
|
||||
).Return(clientStream, errors.New("failed stream")).Return(clientStream, nil)
|
||||
beaconClient.EXPECT().ListValidators(gomock.Any(), gomock.Any()).Return(ðpb.Validators{}, nil)
|
||||
prysmBeaconClient.EXPECT().GetValidatorCount(
|
||||
gomock.Any(),
|
||||
"head",
|
||||
[]validatorType.ValidatorStatus{validatorType.Active},
|
||||
).Return([]iface.ValidatorCount{}, nil)
|
||||
resp := generateMockStatusResponse([][]byte{kp.pub[:]})
|
||||
resp.Statuses[0].Status.Status = ethpb.ValidatorStatus_ACTIVE
|
||||
clientStream.EXPECT().Recv().Return(resp, nil)
|
||||
@@ -82,11 +91,13 @@ func TestWaitForActivation_ReceiveErrorFromStream_AttemptsReconnection(t *testin
|
||||
defer ctrl.Finish()
|
||||
validatorClient := validatormock.NewMockValidatorClient(ctrl)
|
||||
beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
|
||||
prysmBeaconClient := validatormock.NewMockPrysmBeaconChainClient(ctrl)
|
||||
kp := randKeypair(t)
|
||||
v := validator{
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
beaconClient: beaconClient,
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
beaconClient: beaconClient,
|
||||
prysmBeaconClient: prysmBeaconClient,
|
||||
}
|
||||
clientStream := mock.NewMockBeaconNodeValidator_WaitForActivationClient(ctrl)
|
||||
validatorClient.EXPECT().WaitForActivation(
|
||||
@@ -95,7 +106,11 @@ func TestWaitForActivation_ReceiveErrorFromStream_AttemptsReconnection(t *testin
|
||||
PublicKeys: [][]byte{kp.pub[:]},
|
||||
},
|
||||
).Return(clientStream, nil)
|
||||
beaconClient.EXPECT().ListValidators(gomock.Any(), gomock.Any()).Return(ðpb.Validators{}, nil)
|
||||
prysmBeaconClient.EXPECT().GetValidatorCount(
|
||||
gomock.Any(),
|
||||
"head",
|
||||
[]validatorType.ValidatorStatus{validatorType.Active},
|
||||
).Return([]iface.ValidatorCount{}, nil)
|
||||
// A stream fails the first time, but succeeds the second time.
|
||||
resp := generateMockStatusResponse([][]byte{kp.pub[:]})
|
||||
resp.Statuses[0].Status.Status = ethpb.ValidatorStatus_ACTIVE
|
||||
@@ -112,12 +127,14 @@ func TestWaitActivation_LogsActivationEpochOK(t *testing.T) {
|
||||
defer ctrl.Finish()
|
||||
validatorClient := validatormock.NewMockValidatorClient(ctrl)
|
||||
beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
|
||||
prysmBeaconClient := validatormock.NewMockPrysmBeaconChainClient(ctrl)
|
||||
kp := randKeypair(t)
|
||||
v := validator{
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
genesisTime: 1,
|
||||
beaconClient: beaconClient,
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
genesisTime: 1,
|
||||
beaconClient: beaconClient,
|
||||
prysmBeaconClient: prysmBeaconClient,
|
||||
}
|
||||
resp := generateMockStatusResponse([][]byte{kp.pub[:]})
|
||||
resp.Statuses[0].Status.Status = ethpb.ValidatorStatus_ACTIVE
|
||||
@@ -128,7 +145,11 @@ func TestWaitActivation_LogsActivationEpochOK(t *testing.T) {
|
||||
PublicKeys: [][]byte{kp.pub[:]},
|
||||
},
|
||||
).Return(clientStream, nil)
|
||||
beaconClient.EXPECT().ListValidators(gomock.Any(), gomock.Any()).Return(ðpb.Validators{}, nil)
|
||||
prysmBeaconClient.EXPECT().GetValidatorCount(
|
||||
gomock.Any(),
|
||||
"head",
|
||||
[]validatorType.ValidatorStatus{validatorType.Active},
|
||||
).Return([]iface.ValidatorCount{}, nil)
|
||||
clientStream.EXPECT().Recv().Return(
|
||||
resp,
|
||||
nil,
|
||||
@@ -142,11 +163,13 @@ func TestWaitForActivation_Exiting(t *testing.T) {
|
||||
defer ctrl.Finish()
|
||||
validatorClient := validatormock.NewMockValidatorClient(ctrl)
|
||||
beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
|
||||
prysmBeaconClient := validatormock.NewMockPrysmBeaconChainClient(ctrl)
|
||||
kp := randKeypair(t)
|
||||
v := validator{
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
beaconClient: beaconClient,
|
||||
validatorClient: validatorClient,
|
||||
keyManager: newMockKeymanager(t, kp),
|
||||
beaconClient: beaconClient,
|
||||
prysmBeaconClient: prysmBeaconClient,
|
||||
}
|
||||
resp := generateMockStatusResponse([][]byte{kp.pub[:]})
|
||||
resp.Statuses[0].Status.Status = ethpb.ValidatorStatus_EXITING
|
||||
@@ -157,7 +180,11 @@ func TestWaitForActivation_Exiting(t *testing.T) {
|
||||
PublicKeys: [][]byte{kp.pub[:]},
|
||||
},
|
||||
).Return(clientStream, nil)
|
||||
beaconClient.EXPECT().ListValidators(gomock.Any(), gomock.Any()).Return(ðpb.Validators{}, nil)
|
||||
prysmBeaconClient.EXPECT().GetValidatorCount(
|
||||
gomock.Any(),
|
||||
"head",
|
||||
[]validatorType.ValidatorStatus{validatorType.Active},
|
||||
).Return([]iface.ValidatorCount{}, nil)
|
||||
clientStream.EXPECT().Recv().Return(
|
||||
resp,
|
||||
nil,
|
||||
@@ -177,15 +204,17 @@ func TestWaitForActivation_RefetchKeys(t *testing.T) {
|
||||
defer ctrl.Finish()
|
||||
validatorClient := validatormock.NewMockValidatorClient(ctrl)
|
||||
beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
|
||||
prysmBeaconClient := validatormock.NewMockPrysmBeaconChainClient(ctrl)
|
||||
|
||||
kp := randKeypair(t)
|
||||
km := newMockKeymanager(t, kp)
|
||||
km.fetchNoKeys = true
|
||||
|
||||
v := validator{
|
||||
validatorClient: validatorClient,
|
||||
keyManager: km,
|
||||
beaconClient: beaconClient,
|
||||
validatorClient: validatorClient,
|
||||
keyManager: km,
|
||||
beaconClient: beaconClient,
|
||||
prysmBeaconClient: prysmBeaconClient,
|
||||
}
|
||||
resp := generateMockStatusResponse([][]byte{kp.pub[:]})
|
||||
resp.Statuses[0].Status.Status = ethpb.ValidatorStatus_ACTIVE
|
||||
@@ -196,7 +225,11 @@ func TestWaitForActivation_RefetchKeys(t *testing.T) {
|
||||
PublicKeys: [][]byte{kp.pub[:]},
|
||||
},
|
||||
).Return(clientStream, nil)
|
||||
beaconClient.EXPECT().ListValidators(gomock.Any(), gomock.Any()).Return(ðpb.Validators{}, nil)
|
||||
prysmBeaconClient.EXPECT().GetValidatorCount(
|
||||
gomock.Any(),
|
||||
"head",
|
||||
[]validatorType.ValidatorStatus{validatorType.Active},
|
||||
).Return([]iface.ValidatorCount{}, nil)
|
||||
clientStream.EXPECT().Recv().Return(
|
||||
resp,
|
||||
nil)
|
||||
@@ -217,10 +250,12 @@ func TestWaitForActivation_AccountsChanged(t *testing.T) {
|
||||
km := newMockKeymanager(t, inactive)
|
||||
validatorClient := validatormock.NewMockValidatorClient(ctrl)
|
||||
beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
|
||||
prysmBeaconClient := validatormock.NewMockPrysmBeaconChainClient(ctrl)
|
||||
v := validator{
|
||||
validatorClient: validatorClient,
|
||||
keyManager: km,
|
||||
beaconClient: beaconClient,
|
||||
validatorClient: validatorClient,
|
||||
keyManager: km,
|
||||
beaconClient: beaconClient,
|
||||
prysmBeaconClient: prysmBeaconClient,
|
||||
}
|
||||
inactiveResp := generateMockStatusResponse([][]byte{inactive.pub[:]})
|
||||
inactiveResp.Statuses[0].Status.Status = ethpb.ValidatorStatus_UNKNOWN_STATUS
|
||||
@@ -231,7 +266,11 @@ func TestWaitForActivation_AccountsChanged(t *testing.T) {
|
||||
PublicKeys: [][]byte{inactive.pub[:]},
|
||||
},
|
||||
).Return(inactiveClientStream, nil)
|
||||
beaconClient.EXPECT().ListValidators(gomock.Any(), gomock.Any()).Return(ðpb.Validators{}, nil).AnyTimes()
|
||||
prysmBeaconClient.EXPECT().GetValidatorCount(
|
||||
gomock.Any(),
|
||||
"head",
|
||||
[]validatorType.ValidatorStatus{validatorType.Active},
|
||||
).Return([]iface.ValidatorCount{}, nil).AnyTimes()
|
||||
inactiveClientStream.EXPECT().Recv().Return(
|
||||
inactiveResp,
|
||||
nil,
|
||||
@@ -297,11 +336,13 @@ func TestWaitForActivation_AccountsChanged(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
validatorClient := validatormock.NewMockValidatorClient(ctrl)
|
||||
beaconClient := validatormock.NewMockBeaconChainClient(ctrl)
|
||||
prysmBeaconClient := validatormock.NewMockPrysmBeaconChainClient(ctrl)
|
||||
v := validator{
|
||||
validatorClient: validatorClient,
|
||||
keyManager: km,
|
||||
genesisTime: 1,
|
||||
beaconClient: beaconClient,
|
||||
validatorClient: validatorClient,
|
||||
keyManager: km,
|
||||
genesisTime: 1,
|
||||
beaconClient: beaconClient,
|
||||
prysmBeaconClient: prysmBeaconClient,
|
||||
}
|
||||
|
||||
inactiveResp := generateMockStatusResponse([][]byte{inactivePubKey[:]})
|
||||
@@ -313,7 +354,11 @@ func TestWaitForActivation_AccountsChanged(t *testing.T) {
|
||||
PublicKeys: [][]byte{inactivePubKey[:]},
|
||||
},
|
||||
).Return(inactiveClientStream, nil)
|
||||
beaconClient.EXPECT().ListValidators(gomock.Any(), gomock.Any()).Return(ðpb.Validators{}, nil).AnyTimes()
|
||||
prysmBeaconClient.EXPECT().GetValidatorCount(
|
||||
gomock.Any(),
|
||||
"head",
|
||||
[]validatorType.ValidatorStatus{validatorType.Active},
|
||||
).Return([]iface.ValidatorCount{}, nil).AnyTimes()
|
||||
inactiveClientStream.EXPECT().Recv().Return(
|
||||
inactiveResp,
|
||||
nil,
|
||||
|
||||
Reference in New Issue
Block a user