diff --git a/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs index de12715043..d84ac0b6c4 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/InstanceTest.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; -using System.Reflection; using System.Threading; using System.Threading.Tasks; @@ -24,7 +22,6 @@ using Tgstation.Server.Host.Components.Events; using Tgstation.Server.Host.Components.Repository; using Tgstation.Server.Host.Configuration; using Tgstation.Server.Host.IO; -using Tgstation.Server.Host.Jobs; using Tgstation.Server.Host.System; using Tgstation.Server.Host.Utils; @@ -77,6 +74,7 @@ namespace Tgstation.Server.Tests.Live.Instance ddPort, usingBasicWatchdog); await wdt.Run(cancellationToken); + await wdt.ExpectGameDirectoryCount(2, cancellationToken); } public static async ValueTask DownloadEngineVersion( @@ -285,6 +283,10 @@ namespace Tgstation.Server.Tests.Live.Instance await using var wdt = new WatchdogTest(compatVersion, instanceClient, instanceManager, serverPort, highPrioDD, ddPort, usingBasicWatchdog); await wdt.Run(cancellationToken); + await instanceClient.DreamDaemon.Shutdown(cancellationToken); + + await wdt.ExpectGameDirectoryCount(1, cancellationToken); + await instanceManagerClient.Update(new InstanceUpdateRequest { Id = instanceClient.Metadata.Id, diff --git a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs index cf1dad38f3..9227e491ae 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs @@ -595,6 +595,8 @@ namespace Tgstation.Server.Tests.Live.Instance Assert.IsNull(daemonStatus.ActiveCompileJob.DMApiVersion); Assert.AreEqual(DreamDaemonSecurity.Ultrasafe, daemonStatus.ActiveCompileJob.MinimumSecurityLevel); + await ExpectGameDirectoryCount(1, cancellationToken); + var startJob = await StartDD(cancellationToken); await WaitForJob(startJob, 40, false, null, cancellationToken); @@ -618,11 +620,38 @@ namespace Tgstation.Server.Tests.Live.Instance Assert.AreEqual(initialCompileJob.Id, daemonStatus.ActiveCompileJob.Id); var newerCompileJob = daemonStatus.StagedCompileJob; + await ExpectGameDirectoryCount(2, cancellationToken); + Assert.IsNotNull(newerCompileJob); Assert.AreNotEqual(initialCompileJob.Id, newerCompileJob.Id); Assert.AreEqual(DreamDaemonSecurity.Trusted, newerCompileJob.MinimumSecurityLevel); Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.StagedCompileJob.DMApiVersion); await instanceClient.DreamDaemon.Shutdown(cancellationToken); + + await ExpectGameDirectoryCount(1, cancellationToken); + } + + public async ValueTask ExpectGameDirectoryCount(int expected, CancellationToken cancellationToken) + { + int CountNonLiveDirs() + { + var directories = Directory.GetDirectories(Path.Combine(instanceClient.Metadata.Path, "Game")); + return directories.Where(directory => Path.GetFileName(directory) != "Live").Count(); + } + + int nonLiveDirs = 0; + // cleanup task is async + for(var i = 0; i < 15; ++i) + { + nonLiveDirs = CountNonLiveDirs(); + if (expected == nonLiveDirs) + return; + + await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken); + } + + nonLiveDirs = CountNonLiveDirs(); + Assert.AreEqual(expected, nonLiveDirs); } async Task RunBasicTest(CancellationToken cancellationToken) @@ -643,6 +672,8 @@ namespace Tgstation.Server.Tests.Live.Instance Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.ActiveCompileJob.DMApiVersion); Assert.AreEqual(DreamDaemonSecurity.Trusted, daemonStatus.ActiveCompileJob.MinimumSecurityLevel); + await ExpectGameDirectoryCount(1, cancellationToken); + JobResponse startJob; if (new PlatformIdentifier().IsWindows) // Can't get address reuse to trigger on linux for some reason using (var blockSocket = new Socket( @@ -683,6 +714,7 @@ namespace Tgstation.Server.Tests.Live.Instance daemonStatus = await instanceClient.DreamDaemon.Read(cancellationToken); Assert.AreEqual(WatchdogStatus.Offline, daemonStatus.Status.Value); Assert.IsFalse(daemonStatus.SessionId.HasValue); + await ExpectGameDirectoryCount(1, cancellationToken); await CheckDMApiFail(daemonStatus.ActiveCompileJob, cancellationToken, false);