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  }