Assert expected game directory counts after watchdog tests

This commit is contained in:
Jordan Dominion
2024-07-12 15:38:12 -04:00
parent caaded3d1b
commit bbbbe6caa6
2 changed files with 37 additions and 3 deletions
@@ -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<IEngineInstallationData> 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,
@@ -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);