diff --git a/tests/Tgstation.Server.Tests/Live/DummyChatProvider.cs b/tests/Tgstation.Server.Tests/Live/DummyChatProvider.cs index 2edb4686ed..14cc51dd4d 100644 --- a/tests/Tgstation.Server.Tests/Live/DummyChatProvider.cs +++ b/tests/Tgstation.Server.Tests/Live/DummyChatProvider.cs @@ -44,6 +44,8 @@ namespace Tgstation.Server.Tests.Live ulong channelIdAllocator; + public static Task MessageGuard = Task.CompletedTask; + static IAsyncDelayer CreateMockDelayer() { // at time of writing, this is used exclusively for the reconnection interval which works in minutes @@ -219,6 +221,8 @@ namespace Tgstation.Server.Tests.Live var delay = random.Next(0, 10000); await Task.Delay(delay, cancellationToken); + await MessageGuard; + // %5 chance to disconnect randomly if (enableRandomDisconnections != 0 && random.Next(0, 100) > 95) connected = false; diff --git a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs index 7924638e4f..c2fa31ba31 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs @@ -165,9 +165,21 @@ namespace Tgstation.Server.Tests.Live.Instance await RunLongRunningTestThenUpdateWithNewDme(cancellationToken); await RunLongRunningTestThenUpdateWithByondVersionSwitch(cancellationToken); + // no chatty bullshit while we test health checks + var tcs = new TaskCompletionSource(); + var oldTask = Interlocked.Exchange(ref DummyChatProvider.MessageGuard, tcs.Task); + await RunHealthCheckTest(true, cancellationToken); await RunHealthCheckTest(false, cancellationToken); + async void Cleanup() + { + await oldTask; + tcs.SetResult(); + } + + Cleanup(); + await InteropTestsForLongRunningDme(cancellationToken); await instanceClient.DreamDaemon.Update(new DreamDaemonRequest