fix: unique constraint violation for group policy sim genesis (#15943)

This commit is contained in:
Gjermund Garaba 2023-04-26 10:08:59 +02:00 committed by GitHub
parent 97e4978f0f
commit e59c4a8577
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 5 deletions

View File

@ -325,6 +325,11 @@ func TestAppStateDeterminism(t *testing.T) {
numTimesToRunPerSeed := 3 // This used to be set to 5, but we've temporarily reduced it to 3 for the sake of faster CI.
appHashList := make([]json.RawMessage, numTimesToRunPerSeed)
// We will be overriding the random seed and just run a single simulation on the provided seed value
if config.Seed != simcli.DefaultSeedValue {
numSeeds = 1
}
appOptions := viper.New()
if FlagEnableStreamingValue {
m := make(map[string]interface{})
@ -342,7 +347,11 @@ func TestAppStateDeterminism(t *testing.T) {
}
for i := 0; i < numSeeds; i++ {
config.Seed = rand.Int63()
if config.Seed == simcli.DefaultSeedValue {
config.Seed = rand.Int63()
}
fmt.Println("config.Seed: ", config.Seed)
for j := 0; j < numTimesToRunPerSeed; j++ {
var logger log.Logger

View File

@ -66,21 +66,34 @@ func getGroupMembers(r *rand.Rand, accounts []simtypes.Account) []*group.GroupMe
}
func getGroupPolicies(r *rand.Rand, simState *module.SimulationState) []*group.GroupPolicyInfo {
groupPolicies := make([]*group.GroupPolicyInfo, 3)
var groupPolicies []*group.GroupPolicyInfo
usedAccs := make(map[string]bool)
for i := 0; i < 3; i++ {
acc, _ := simtypes.RandomAcc(r, simState.Accounts)
if usedAccs[acc.Address.String()] {
if len(usedAccs) != len(simState.Accounts) {
// Go again if the account is used and there are more to take from
i--
}
continue
}
usedAccs[acc.Address.String()] = true
any, err := codectypes.NewAnyWithValue(group.NewThresholdDecisionPolicy("10", time.Second, 0))
if err != nil {
panic(err)
}
groupPolicies[i] = &group.GroupPolicyInfo{
groupPolicies = append(groupPolicies, &group.GroupPolicyInfo{
GroupId: uint64(i + 1),
Admin: acc.Address.String(),
Address: acc.Address.String(),
Version: 1,
DecisionPolicy: any,
Metadata: simtypes.RandStringOfLength(r, 10),
}
})
}
return groupPolicies
}

View File

@ -6,6 +6,8 @@ import (
"github.com/cosmos/cosmos-sdk/types/simulation"
)
const DefaultSeedValue = 42
// List of available flags for the simulator
var (
FlagGenesisFileValue string
@ -39,7 +41,7 @@ func GetSimulatorFlags() {
flag.IntVar(&FlagExportParamsHeightValue, "ExportParamsHeight", 0, "height to which export the randomly generated params")
flag.StringVar(&FlagExportStatePathValue, "ExportStatePath", "", "custom file path to save the exported app state JSON")
flag.StringVar(&FlagExportStatsPathValue, "ExportStatsPath", "", "custom file path to save the exported simulation statistics JSON")
flag.Int64Var(&FlagSeedValue, "Seed", 42, "simulation random seed")
flag.Int64Var(&FlagSeedValue, "Seed", DefaultSeedValue, "simulation random seed")
flag.IntVar(&FlagInitialBlockHeightValue, "InitialBlockHeight", 1, "initial block to start the simulation")
flag.IntVar(&FlagNumBlocksValue, "NumBlocks", 500, "number of new blocks to simulate from the initial block height")
flag.IntVar(&FlagBlockSizeValue, "BlockSize", 200, "operations per block")