x/gov/keeper: fix flaky TestPaginatedVotesQuery (#9223)
When testing with -race, sometimes the random source generate the same string for consecutive calls, causing duplicated voter address. So the number of votes in DB is not 20. To fix this, we ensure unique addresses are generated, by using a map for tracking which one was produced, and skip the duplicated address and generated new one. Testing with: go test -race -v -count=1000 -run=TestPaginatedVotesQuery now passes. Updates #9010
This commit is contained in:
parent
a2911d0dc6
commit
6ad84c5065
@ -316,13 +316,23 @@ func TestPaginatedVotesQuery(t *testing.T) {
|
||||
app.GovKeeper.SetProposal(ctx, proposal)
|
||||
|
||||
votes := make([]types.Vote, 20)
|
||||
rand := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
addr := make(sdk.AccAddress, 20)
|
||||
random := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
addrMap := make(map[string]struct{})
|
||||
genAddr := func() string {
|
||||
addr := make(sdk.AccAddress, 20)
|
||||
for {
|
||||
random.Read(addr)
|
||||
addrStr := addr.String()
|
||||
if _, ok := addrMap[addrStr]; !ok {
|
||||
addrMap[addrStr] = struct{}{}
|
||||
return addrStr
|
||||
}
|
||||
}
|
||||
}
|
||||
for i := range votes {
|
||||
rand.Read(addr)
|
||||
vote := types.Vote{
|
||||
ProposalId: proposal.ProposalId,
|
||||
Voter: addr.String(),
|
||||
Voter: genAddr(),
|
||||
Options: types.NewNonSplitVoteOption(types.OptionYes),
|
||||
}
|
||||
votes[i] = vote
|
||||
|
||||
Loading…
Reference in New Issue
Block a user