From b3b963d59a8adc8d58f96648eaf9a16c4a169a7b Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Tue, 5 Aug 2025 10:22:14 -0400 Subject: [PATCH] Fix TellWorldToReboot same session detection --- .../Live/Instance/WatchdogTest.cs | 16 ++++++---------- .../Live/TestLiveServer.cs | 1 - 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs index d36ae24273..6adbb119da 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs @@ -1536,8 +1536,8 @@ namespace Tgstation.Server.Tests.Live.Instance } public Task TellWorldToReboot(bool waitForOnlineIfRestoring, CancellationToken cancellationToken, [CallerLineNumber]int source = 0) - => TellWorldToReboot2(instanceClient, instanceManager, topicClient, FindTopicPort(), waitForOnlineIfRestoring || testVersion.Engine.Value == EngineType.OpenDream, watchdogRestartsProcess, cancellationToken, source); - public static async Task TellWorldToReboot2(IInstanceClient instanceClient, IInstanceManager instanceManager, ITopicClient topicClient, ushort topicPort, bool waitForOnlineIfRestoring, bool watchdogRestartsProcess, CancellationToken cancellationToken, [CallerLineNumber]int source = 0, [CallerFilePath]string path = null) + => TellWorldToReboot2(instanceClient, instanceManager, topicClient, FindTopicPort(), waitForOnlineIfRestoring || testVersion.Engine.Value == EngineType.OpenDream, cancellationToken, source); + public static async Task TellWorldToReboot2(IInstanceClient instanceClient, IInstanceManager instanceManager, ITopicClient topicClient, ushort topicPort, bool waitForOnlineIfRestoring, CancellationToken cancellationToken, [CallerLineNumber]int source = 0, [CallerFilePath]string path = null) { var daemonStatus = await instanceClient.DreamDaemon.Read(cancellationToken); Assert.IsNotNull(daemonStatus.StagedCompileJob); @@ -1553,20 +1553,16 @@ namespace Tgstation.Server.Tests.Live.Instance using var tempCts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); var tempToken = tempCts.Token; - bool DifferentSession() => initialSessionId != daemonStatus.SessionId || (initialIteration.HasValue && initialIteration != daemonStatus.WorldIteration); + bool SameSession() => initialSessionId == daemonStatus.SessionId && initialIteration == daemonStatus.WorldIteration; using (tempToken.Register(() => System.Console.WriteLine("TEST ERROR: Timeout in TellWorldToReboot!"))) { tempCts.CancelAfter(TimeSpan.FromMinutes(2)); do { - do - { - await Task.Delay(TimeSpan.FromSeconds(1), tempToken); - daemonStatus = await instanceClient.DreamDaemon.Read(tempToken); - } - while (initialSession.Id == daemonStatus.ActiveCompileJob.Id); + await Task.Delay(TimeSpan.FromSeconds(1), tempToken); + daemonStatus = await instanceClient.DreamDaemon.Read(tempToken); } - while (watchdogRestartsProcess && initialIteration.HasValue && DifferentSession()); + while (initialSession.Id == daemonStatus.ActiveCompileJob.Id || SameSession()); } if (waitForOnlineIfRestoring && daemonStatus.Status == WatchdogStatus.Restoring) diff --git a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs index a7806e04fb..e076b45d93 100644 --- a/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs +++ b/tests/Tgstation.Server.Tests/Live/TestLiveServer.cs @@ -1869,7 +1869,6 @@ namespace Tgstation.Server.Tests.Live WatchdogTest.StaticTopicClient, mainDDPort.Value, true, - server.UsingBasicWatchdog, cancellationToken); Assert.AreEqual(WatchdogStatus.Online, dd.Status.Value); // if this assert fails, you likely have to crack open the debugger and read test_fail_reason.txt manually