mirror of
https://github.com/ppy/osu.git
synced 2024-11-14 17:17:24 +08:00
Improve notification overlay test robustness
Stress testing one of the notification overlay tests by running it 10000 times on repeat has shown that it is susceptible to intermittent failures due to races between delays and asserts checking the number of currently progressing notifications and the actual progress update, which contains a random generation factor. Replace step sequences checking for notification completion by waiting and asserting with explicit until steps that don't terminate unless there are zero progressing notifications.
This commit is contained in:
parent
033bb15500
commit
fd8c5d7706
@ -67,9 +67,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
AddRepeatStep(@"add many simple", sendManyNotifications, 3);
|
AddRepeatStep(@"add many simple", sendManyNotifications, 3);
|
||||||
|
|
||||||
AddWaitStep("wait some", 5);
|
waitForCompletion();
|
||||||
|
|
||||||
checkProgressingCount(0);
|
|
||||||
|
|
||||||
AddStep(@"progress #3", sendUploadProgress);
|
AddStep(@"progress #3", sendUploadProgress);
|
||||||
|
|
||||||
@ -77,9 +75,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
checkDisplayedCount(33);
|
checkDisplayedCount(33);
|
||||||
|
|
||||||
AddWaitStep("wait some", 10);
|
waitForCompletion();
|
||||||
|
|
||||||
checkProgressingCount(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -109,9 +105,9 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
AddStep(@"background progress #1", sendBackgroundUploadProgress);
|
AddStep(@"background progress #1", sendBackgroundUploadProgress);
|
||||||
|
|
||||||
AddWaitStep("wait some", 5);
|
checkProgressingCount(1);
|
||||||
|
|
||||||
checkProgressingCount(0);
|
waitForCompletion();
|
||||||
|
|
||||||
checkDisplayedCount(2);
|
checkDisplayedCount(2);
|
||||||
|
|
||||||
@ -190,6 +186,8 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
private void checkProgressingCount(int expected) => AddAssert($"progressing count is {expected}", () => progressingNotifications.Count == expected);
|
private void checkProgressingCount(int expected) => AddAssert($"progressing count is {expected}", () => progressingNotifications.Count == expected);
|
||||||
|
|
||||||
|
private void waitForCompletion() => AddUntilStep("wait for notification progress completion", () => progressingNotifications.Count == 0);
|
||||||
|
|
||||||
private void sendBarrage()
|
private void sendBarrage()
|
||||||
{
|
{
|
||||||
switch (RNG.Next(0, 4))
|
switch (RNG.Next(0, 4))
|
||||||
|
Loading…
Reference in New Issue
Block a user