diff --git a/tests/Tgstation.Server.Tests/Live/HoldLastObserver.cs b/tests/Tgstation.Server.Tests/Live/HoldLastObserver.cs index e5ee2b32d8..267f9e9012 100644 --- a/tests/Tgstation.Server.Tests/Live/HoldLastObserver.cs +++ b/tests/Tgstation.Server.Tests/Live/HoldLastObserver.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; namespace Tgstation.Server.Tests.Live { @@ -10,9 +11,12 @@ namespace Tgstation.Server.Tests.Live public T LastValue { get; private set; } - public ulong ErrorCount { get; private set; } + public ulong ErrorCount => errorCount; - public ulong ResultCount { get; private set; } + public ulong ResultCount => resultCount; + + ulong errorCount; + ulong resultCount; public void OnCompleted() { @@ -21,13 +25,13 @@ namespace Tgstation.Server.Tests.Live public void OnError(Exception error) { - ++ErrorCount; + Interlocked.Increment(ref errorCount); LastError = error; } public void OnNext(T value) { - ++ResultCount; + Interlocked.Increment(ref resultCount); LastValue = value; } } diff --git a/tests/Tgstation.Server.Tests/Live/UsersTest.cs b/tests/Tgstation.Server.Tests/Live/UsersTest.cs index 537d645036..ec6220d8fa 100644 --- a/tests/Tgstation.Server.Tests/Live/UsersTest.cs +++ b/tests/Tgstation.Server.Tests/Live/UsersTest.cs @@ -53,8 +53,16 @@ namespace Tgstation.Server.Tests.Live var expected = new PlatformIdentifier().IsWindows ? 108U : 107U; // wait up to 10s + var lastSeen = observer.ResultCount; for (var i = 0; i < 10 && observer.ResultCount < expected; ++i) + { await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken); + if (observer.ResultCount > lastSeen) + { + lastSeen = observer.ResultCount; + i = -1; + } + } Assert.AreEqual(expected, observer.ResultCount); // sys user observer.LastValue.EnsureNoErrors();