mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-07-20 20:43:47 +01:00
Additional tests meant to catch a WindowsWatchdog issue but they don't yet
This commit is contained in:
@@ -40,7 +40,7 @@ namespace Tgstation.Server.Tests.Instance
|
||||
// Increase startup timeout, disable heartbeats
|
||||
var initialSettings = await instanceClient.DreamDaemon.Update(new DreamDaemonRequest
|
||||
{
|
||||
StartupTimeout = 60,
|
||||
StartupTimeout = 10,
|
||||
HeartbeatSeconds = 0,
|
||||
Port = IntegrationTest.DDPort
|
||||
}, cancellationToken);
|
||||
@@ -502,7 +502,7 @@ namespace Tgstation.Server.Tests.Instance
|
||||
return ddProc != null;
|
||||
}
|
||||
|
||||
async Task<DreamDaemonResponse> TellWorldToReboot(CancellationToken cancellationToken)
|
||||
public async Task<DreamDaemonResponse> TellWorldToReboot(CancellationToken cancellationToken)
|
||||
{
|
||||
var daemonStatus = await instanceClient.DreamDaemon.Read(cancellationToken);
|
||||
var initialCompileJob = daemonStatus.ActiveCompileJob;
|
||||
|
||||
@@ -26,6 +26,7 @@ using Tgstation.Server.Api.Models.Request;
|
||||
using Tgstation.Server.Api.Models.Response;
|
||||
using Tgstation.Server.Api.Rights;
|
||||
using Tgstation.Server.Client;
|
||||
using Tgstation.Server.Client.Components;
|
||||
using Tgstation.Server.Host.Components.Events;
|
||||
using Tgstation.Server.Host.Components.Repository;
|
||||
using Tgstation.Server.Host.Configuration;
|
||||
@@ -952,12 +953,8 @@ namespace Tgstation.Server.Tests
|
||||
|
||||
preStartupTime = DateTimeOffset.UtcNow;
|
||||
|
||||
// chat bot start, dd autostart, and entity delete tests
|
||||
serverTask = server.Run(cancellationToken);
|
||||
using (var adminClient = await CreateAdminClient(server.Url, cancellationToken))
|
||||
async Task WaitForInitialJobs(IInstanceClient instanceClient)
|
||||
{
|
||||
var instanceClient = adminClient.Instances.CreateClient(instance);
|
||||
|
||||
var jobs = await instanceClient.Jobs.ListActive(null, cancellationToken);
|
||||
if (!jobs.Any())
|
||||
{
|
||||
@@ -970,20 +967,71 @@ namespace Tgstation.Server.Tests
|
||||
jobs = getTasks
|
||||
.Select(x => x.Result)
|
||||
.Where(x => x.StartedAt.Value > preStartupTime)
|
||||
.ToList();
|
||||
.ToList();
|
||||
}
|
||||
|
||||
var jrt = new JobsRequiredTest(instanceClient.Jobs);
|
||||
foreach (var job in jobs)
|
||||
{
|
||||
Assert.IsTrue(job.StartedAt.Value >= preStartupTime);
|
||||
await jrt.WaitForJob(job, 140, job.Description.Contains("Reconnect chat bot") ? (bool?)null : (bool?)false, null, cancellationToken);
|
||||
await jrt.WaitForJob(job, 140, job.Description.Contains("Reconnect chat bot") ? null : false, null, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
// chat bot start, dd autostart, and reboot with different initial job test
|
||||
preStartupTime = DateTimeOffset.UtcNow;
|
||||
serverTask = server.Run(cancellationToken);
|
||||
long expectedCompileJobId;
|
||||
DreamDaemonResponse currentDD;
|
||||
using (var adminClient = await CreateAdminClient(server.Url, cancellationToken))
|
||||
{
|
||||
var instanceClient = adminClient.Instances.CreateClient(instance);
|
||||
await WaitForInitialJobs(instanceClient);
|
||||
|
||||
var dd = await instanceClient.DreamDaemon.Read(cancellationToken);
|
||||
|
||||
Assert.AreEqual(WatchdogStatus.Online, dd.Status.Value);
|
||||
|
||||
var compileJob = await instanceClient.DreamMaker.Compile(cancellationToken);
|
||||
var wdt = new WatchdogTest(instanceClient);
|
||||
await wdt.WaitForJob(compileJob, 30, false, null, cancellationToken);
|
||||
|
||||
currentDD = await instanceClient.DreamDaemon.Read(cancellationToken);
|
||||
Assert.AreEqual(currentDD.StagedCompileJob.Job.Id, compileJob.Id);
|
||||
|
||||
await wdt.TellWorldToReboot(cancellationToken);
|
||||
expectedCompileJobId = compileJob.Id.Value;
|
||||
|
||||
currentDD = await instanceClient.DreamDaemon.Read(cancellationToken);
|
||||
Assert.AreEqual(currentDD.ActiveCompileJob.Job.Id, expectedCompileJobId);
|
||||
expectedCompileJobId = currentDD.ActiveCompileJob.Id.Value;
|
||||
|
||||
compileJob = await instanceClient.DreamMaker.Compile(cancellationToken);
|
||||
await wdt.WaitForJob(compileJob, 30, false, null, cancellationToken);
|
||||
|
||||
currentDD = await instanceClient.DreamDaemon.Read(cancellationToken);
|
||||
Assert.AreEqual(currentDD.StagedCompileJob.Job.Id, compileJob.Id);
|
||||
|
||||
await adminClient.Administration.Restart(cancellationToken);
|
||||
}
|
||||
|
||||
await Task.WhenAny(serverTask, Task.Delay(TimeSpan.FromMinutes(1), cancellationToken));
|
||||
Assert.IsTrue(serverTask.IsCompleted);
|
||||
|
||||
// post/entity deletion tests
|
||||
serverTask = server.Run(cancellationToken);
|
||||
using (var adminClient = await CreateAdminClient(server.Url, cancellationToken))
|
||||
{
|
||||
var instanceClient = adminClient.Instances.CreateClient(instance);
|
||||
await WaitForInitialJobs(instanceClient);
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(5), cancellationToken);
|
||||
|
||||
var lastStaged = currentDD.StagedCompileJob;
|
||||
currentDD = await instanceClient.DreamDaemon.Read(cancellationToken);
|
||||
Assert.AreEqual(currentDD.ActiveCompileJob.Id, expectedCompileJobId);
|
||||
Assert.AreEqual(currentDD.StagedCompileJob?.Id, lastStaged.Id);
|
||||
|
||||
var repoTest = new RepositoryTest(instanceClient.Repository, instanceClient.Jobs).RunPostTest(cancellationToken);
|
||||
await new ChatTest(instanceClient.ChatBots, adminClient.Instances, instance).RunPostTest(cancellationToken);
|
||||
await repoTest;
|
||||
|
||||
@@ -126,6 +126,7 @@ namespace Tgstation.Server.Tests
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
return;
|
||||
for (int i = 0; i < 5; ++i)
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user