- package factory
-
- import (
- "context"
- "fmt"
- "math/rand"
- "sort"
- "testing"
-
- "github.com/stretchr/testify/require"
- "github.com/tendermint/tendermint/types"
- )
-
- func RandValidator(ctx context.Context, randPower bool, minPower int64) (*types.Validator, types.PrivValidator, error) {
- privVal := types.NewMockPV()
- votePower := minPower
- if randPower {
- // nolint:gosec // G404: Use of weak random number generator
- votePower += int64(rand.Uint32())
- }
- pubKey, err := privVal.GetPubKey(ctx)
- if err != nil {
- return nil, nil, fmt.Errorf("could not retrieve public key: %w", err)
- }
-
- val := types.NewValidator(pubKey, votePower)
- return val, privVal, err
- }
-
- func RandValidatorSet(ctx context.Context, t *testing.T, numValidators int, votingPower int64) (*types.ValidatorSet, []types.PrivValidator) {
- var (
- valz = make([]*types.Validator, numValidators)
- privValidators = make([]types.PrivValidator, numValidators)
- )
- t.Helper()
-
- for i := 0; i < numValidators; i++ {
- val, privValidator, err := RandValidator(ctx, false, votingPower)
- require.NoError(t, err)
- valz[i] = val
- privValidators[i] = privValidator
- }
-
- sort.Sort(types.PrivValidatorsByAddress(privValidators))
-
- return types.NewValidatorSet(valz), privValidators
- }
|