test: deflake TestAddAndRemoveListenerConcurrency and TestSyncer_SyncAny (#5101)

Fixes #5094.
This commit is contained in:
Erik Grinaker
2020-07-08 15:33:50 +02:00
committed by GitHub
parent ab20f3520f
commit bf3c87c864
2 changed files with 7 additions and 4 deletions

View File

@@ -193,24 +193,25 @@ func TestAddAndRemoveListenerConcurrency(t *testing.T) {
// Must be executed concurrently to uncover the data race.
// 1. RemoveListener
go func() {
defer close(done1)
for i := 0; i < roundCount; i++ {
evsw.RemoveListener("listener")
}
close(done1)
}()
// 2. AddListenerForEvent
go func() {
defer close(done2)
for i := 0; i < roundCount; i++ {
index := i
err = evsw.AddListenerForEvent("listener", fmt.Sprintf("event%d", index),
// we explicitly ignore errors here, since the listener will sometimes be removed
// (that's what we're testing)
_ = evsw.AddListenerForEvent("listener", fmt.Sprintf("event%d", index),
func(data EventData) {
t.Errorf("should not run callback for %d.\n", index)
stopInputEvent = true
})
require.NoError(t, err)
}
close(done2)
}()
<-done1

View File

@@ -189,6 +189,8 @@ func TestSyncer_SyncAny(t *testing.T) {
newState, lastCommit, err := syncer.SyncAny(0)
require.NoError(t, err)
time.Sleep(50 * time.Millisecond) // wait for peers to receive requests
chunkRequestsMtx.Lock()
assert.Equal(t, map[uint32]int{0: 1, 1: 2, 2: 1}, chunkRequests)
chunkRequestsMtx.Unlock()