github.com/Finschia/finschia-sdk@v0.48.1/x/gov/simulation/params.go (about)

     1  package simulation
     2  
     3  // DONTCOVER
     4  
     5  import (
     6  	"encoding/json"
     7  	"fmt"
     8  	"math/rand"
     9  
    10  	sdk "github.com/Finschia/finschia-sdk/types"
    11  	simtypes "github.com/Finschia/finschia-sdk/types/simulation"
    12  	"github.com/Finschia/finschia-sdk/x/gov/types"
    13  	"github.com/Finschia/finschia-sdk/x/simulation"
    14  )
    15  
    16  const (
    17  	keyVotingParams  = "votingparams"
    18  	keyDepositParams = "depositparams"
    19  	keyTallyParams   = "tallyparams"
    20  	subkeyQuorum     = "quorum"
    21  	subkeyThreshold  = "threshold"
    22  	subkeyVeto       = "veto"
    23  )
    24  
    25  // ParamChanges defines the parameters that can be modified by param change proposals
    26  // on the simulation
    27  func ParamChanges(r *rand.Rand) []simtypes.ParamChange {
    28  	return []simtypes.ParamChange{
    29  		simulation.NewSimParamChange(types.ModuleName, keyVotingParams,
    30  			func(r *rand.Rand) string {
    31  				return fmt.Sprintf(`{"voting_period": "%d"}`, GenVotingParamsVotingPeriod(r))
    32  			},
    33  		),
    34  		simulation.NewSimParamChange(types.ModuleName, keyDepositParams,
    35  			func(r *rand.Rand) string {
    36  				return fmt.Sprintf(`{"max_deposit_period": "%d"}`, GenDepositParamsDepositPeriod(r))
    37  			},
    38  		),
    39  		simulation.NewSimParamChange(types.ModuleName, keyTallyParams,
    40  			func(r *rand.Rand) string {
    41  				changes := []struct {
    42  					key   string
    43  					value sdk.Dec
    44  				}{
    45  					{subkeyQuorum, GenTallyParamsQuorum(r)},
    46  					{subkeyThreshold, GenTallyParamsThreshold(r)},
    47  					{subkeyVeto, GenTallyParamsVeto(r)},
    48  				}
    49  
    50  				pc := make(map[string]string)
    51  				numChanges := simtypes.RandIntBetween(r, 1, len(changes))
    52  				for i := 0; i < numChanges; i++ {
    53  					c := changes[r.Intn(len(changes))]
    54  
    55  					_, ok := pc[c.key]
    56  					for ok {
    57  						c := changes[r.Intn(len(changes))]
    58  						_, ok = pc[c.key]
    59  					}
    60  
    61  					pc[c.key] = c.value.String()
    62  				}
    63  
    64  				bz, _ := json.Marshal(pc)
    65  				return string(bz)
    66  			},
    67  		),
    68  	}
    69  }