Skip to content

Commit

Permalink
x/gov/keeper: fix flaky TestPaginatedVotesQuery (#9223)
Browse files Browse the repository at this point in the history
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

(cherry picked from commit 6ad84c5)

# Conflicts:
#	x/gov/keeper/querier_test.go
  • Loading branch information
Cuong Manh Le authored and mergify-bot committed Apr 28, 2021
1 parent c6f53ef commit 3f70ac2
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions x/gov/keeper/querier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,14 +316,29 @@ 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,
<<<<<<< HEAD
Voter: addr.String(),
Option: types.OptionYes,
=======
Voter: genAddr(),
Options: types.NewNonSplitVoteOption(types.OptionYes),
>>>>>>> 6ad84c506... x/gov/keeper: fix flaky TestPaginatedVotesQuery (#9223)
}
votes[i] = vote
app.GovKeeper.SetVote(ctx, vote)
Expand Down

0 comments on commit 3f70ac2

Please sign in to comment.