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 }