diff --git a/test/TesterInternal/OrleansRuntime/StuckGrainTests.cs b/test/TesterInternal/OrleansRuntime/StuckGrainTests.cs index b2115f50871..f46b863ee4e 100644 --- a/test/TesterInternal/OrleansRuntime/StuckGrainTests.cs +++ b/test/TesterInternal/OrleansRuntime/StuckGrainTests.cs @@ -1,5 +1,6 @@ using Orleans.Configuration; using Orleans.TestingHost; +using Orleans.TestingHost.Utils; using Orleans.Internal; using TestExtensions; using UnitTests.GrainInterfaces; @@ -84,8 +85,8 @@ public async Task StuckGrainTest_StuckDetectionAndForward() for (var i = 0; i < 3; i++) { - await Assert.ThrowsAsync( - () => stuckGrain.NonBlockingCall().WaitAsync(TimeSpan.FromMilliseconds(500))); + var call = stuckGrain.NonBlockingCall(); + await Task.WhenAny(call, Task.Delay(TimeSpan.FromMilliseconds(500))); } // Wait so the first task will reach with DefaultCollectionAge timeout @@ -95,7 +96,19 @@ await Assert.ThrowsAsync( await stuckGrain.NonBlockingCall(); // All 4 otherwise stuck calls should have been forwarded to a new activation - Assert.Equal(4, await stuckGrain.GetNonBlockingCallCounter()); + await TestingUtils.WaitUntilAsync( + async lastTry => + { + var count = await stuckGrain.GetNonBlockingCallCounter(); + if (lastTry) + { + Assert.Equal(4, count); + } + + return count == 4; + }, + TimeSpan.FromSeconds(10), + TimeSpan.FromMilliseconds(200)); } [Fact, TestCategory("Functional"), TestCategory("ActivationCollection")]