prysm-pulse/validator/client/fake_validator_test.go
shayzluf 0732012459 Validator-multiple key (#2069)
* first version - broken

* working proto changes

* resolve review remarks

* fix goimport issues

* fix service issues

* first logic version-broken

* first running version - no new tests

* fix validator client test

* add wait group to goroutines

* remove unused var in function call

* fix review remarks and tests

* merge master changes and fix conflicts

* gazzele fix

* fix prestonvanloon requested changes

* merge and some of terenc3t remarks addressed

* _,pk bug fix in log

* fix account file name suffix and filter not active validator out

* merge with master and fix missing parameters

* run over all public keys in hasvalidators

* add test for error when no all the validators has index in the db and hasvalidators is called

* fix runner tests fail due to timing issues

* goimports

* smaller sleep time in proposer tests

* fix UpdateAssignments loging

* fix goimports

* added && false commented TestUpdateAssignments_DoesNothingWhenNotEpochStartAndAlreadyExistingAssignments

* hasvalidators without missing publickeys list

* fix some of prestone review remarks

* fixes for prestone comments

* review changes applied

* expect context call in TestWaitForActivation_ValidatorOriginallyExists

* changed hasvalidators to return true if one validator exists

* fix init problem to getkeys

* hasvalidators requiers all validators to be in db

* validator attest assignments update

* fix ap var name

* Change name to hasallvalidators

* fix tests

* update script, fix any vs all validator calls

* fix wait for activation

* filter validator

* reuse the reply block

* fix imports

* Remove dup

* better lookup of active validators

* better filter active vlaidators, still need to fix committee assignment tests

* lint

* use activated keys

* fix for postchainstart

* fix logging

* move state transitions

* hasanyvalidator and hasallvalidators

* fix tests with updatechainhead missing

* add tests

* fix TestCommitteeAssignment_OK

* fix test

* fix validator tests

* fix TestCommitteeAssignment_multipleKeys_OK and TestWaitForActivation_ValidatorOriginallyExists

* fix goimports

* removed unused param from assignment

* change string(pk) to hex.EncodeString(pk) fix change requests

* add inactive validator status to assignments

* fix logging mess due to multi validator setup

* set no assignment to debug level

* log assignments every epoch

* logging fixes

* fixed runtime by using the right assignments

* correct activation request

* fix the validator panic

* correct assignment

* fix test fail and waitforactivation

* performance log issue fix

* fix goimports

* add log message with truncated pk for attest

* add truncated pk to attest and propose logs

* Add comment to script, change 9 to 8

* Update assignment log

* Add comment, report number of assignments

* Use WithError, add validator as field, merge block proposal log

* Update validator_propose.go

* fix

* use entry.String()

* fix fmt
2019-04-18 12:23:38 -05:00

92 lines
2.5 KiB
Go

package client
import (
"context"
"time"
pb "github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1"
"github.com/prysmaticlabs/prysm/shared/params"
)
var _ = Validator(&fakeValidator{})
type fakeValidator struct {
DoneCalled bool
WaitForActivationCalled bool
WaitForChainStartCalled bool
NextSlotRet <-chan uint64
NextSlotCalled bool
CanonicalHeadSlotCalled bool
UpdateAssignmentsCalled bool
UpdateAssignmentsArg1 uint64
UpdateAssignmentsRet error
RoleAtCalled bool
RoleAtArg1 uint64
RoleAtRet pb.ValidatorRole
AttestToBlockHeadCalled bool
AttestToBlockHeadArg1 uint64
ProposeBlockCalled bool
ProposeBlockArg1 uint64
LogValidatorGainsAndLossesCalled bool
SlotDeadlineCalled bool
PublicKey string
}
func (fv *fakeValidator) Done() {
fv.DoneCalled = true
}
func (fv *fakeValidator) WaitForChainStart(_ context.Context) error {
fv.WaitForChainStartCalled = true
return nil
}
func (fv *fakeValidator) WaitForActivation(_ context.Context) error {
fv.WaitForActivationCalled = true
return nil
}
func (fv *fakeValidator) CanonicalHeadSlot(_ context.Context) (uint64, error) {
fv.CanonicalHeadSlotCalled = true
return params.BeaconConfig().GenesisSlot, nil
}
func (fv *fakeValidator) SlotDeadline(_ uint64) time.Time {
fv.SlotDeadlineCalled = true
return time.Now()
}
func (fv *fakeValidator) NextSlot() <-chan uint64 {
fv.NextSlotCalled = true
return fv.NextSlotRet
}
func (fv *fakeValidator) UpdateAssignments(_ context.Context, slot uint64) error {
fv.UpdateAssignmentsCalled = true
fv.UpdateAssignmentsArg1 = slot
return fv.UpdateAssignmentsRet
}
func (fv *fakeValidator) LogValidatorGainsAndLosses(_ context.Context, slot uint64) error {
fv.LogValidatorGainsAndLossesCalled = true
return nil
}
func (fv *fakeValidator) RolesAt(slot uint64) map[string]pb.ValidatorRole {
fv.RoleAtCalled = true
fv.RoleAtArg1 = slot
vr := make(map[string]pb.ValidatorRole)
vr["a"] = fv.RoleAtRet
return vr
}
func (fv *fakeValidator) AttestToBlockHead(_ context.Context, slot uint64, idx string) {
fv.AttestToBlockHeadCalled = true
fv.AttestToBlockHeadArg1 = slot
}
func (fv *fakeValidator) ProposeBlock(_ context.Context, slot uint64, idx string) {
fv.ProposeBlockCalled = true
fv.ProposeBlockArg1 = slot
}