prevent data race within TestService_UserReplies

This commit is contained in:
Dmitry Verkhoturov
2021-09-04 15:22:02 -05:00
committed by Umputun
parent fa6c0e0d5e
commit 2443b9d0a2
+10 -4
View File
@@ -1057,13 +1057,19 @@ func TestService_UserReplies(t *testing.T) {
require.Equal(t, 3, len(cc), "3 replies to u1")
assert.Equal(t, "developer one u1", u)
// mutex to prevent multiple b.UserReplies calls resulting in data race
l := sync.Mutex{}
assert.Eventually(t, func() bool {
cc, u, err = b.UserReplies("radio-t", "u1", 10, time.Millisecond*199)
l.Lock()
defer l.Unlock()
cc, u, err = b.UserReplies("radio-t", "u1", 10, time.Millisecond*299)
require.NoError(t, err)
require.Equal(t, "developer one u1", u)
return len(cc) == 1
}, 300*time.Millisecond, 30*time.Millisecond, "1 reply to u1 in the last 200ms")
require.NoError(t, err)
require.Equal(t, "developer one u1", u)
}, 300*time.Millisecond, 30*time.Millisecond, "1 reply to u1 in the last 300ms")
l.Lock()
defer l.Unlock()
cc, u, err = b.UserReplies("radio-t", "u2", 10, time.Hour)
assert.NoError(t, err)
assert.Equal(t, 0, len(cc), "0 replies to u2")