github.com/number571/tendermint@v0.34.11-gost/internal/test/factory/validator.go (about) 1 package factory 2 3 import ( 4 "context" 5 "fmt" 6 "math/rand" 7 "sort" 8 9 "github.com/number571/tendermint/types" 10 ) 11 12 func RandValidator(randPower bool, minPower int64) (*types.Validator, types.PrivValidator) { 13 privVal := types.NewMockPV() 14 votePower := minPower 15 if randPower { 16 // nolint:gosec // G404: Use of weak random number generator 17 votePower += int64(rand.Uint32()) 18 } 19 pubKey, err := privVal.GetPubKey(context.Background()) 20 if err != nil { 21 panic(fmt.Errorf("could not retrieve pubkey %w", err)) 22 } 23 val := types.NewValidator(pubKey, votePower) 24 return val, privVal 25 } 26 27 func RandValidatorSet(numValidators int, votingPower int64) (*types.ValidatorSet, []types.PrivValidator) { 28 var ( 29 valz = make([]*types.Validator, numValidators) 30 privValidators = make([]types.PrivValidator, numValidators) 31 ) 32 33 for i := 0; i < numValidators; i++ { 34 val, privValidator := RandValidator(false, votingPower) 35 valz[i] = val 36 privValidators[i] = privValidator 37 } 38 39 sort.Sort(types.PrivValidatorsByAddress(privValidators)) 40 41 return types.NewValidatorSet(valz), privValidators 42 }