From 131b79bca55635b63ee0a8a31506f306d9bf1772 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 20 Aug 2020 14:45:53 -0400 Subject: [PATCH] Better fix for dump failure test --- .../Instance/WatchdogTest.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs index 5dafb4d567..e0aafb368e 100644 --- a/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs @@ -84,19 +84,27 @@ namespace Tgstation.Server.Tests.Instance File.Delete(dumpFiles.Single()); KillDD(true); - Task dumpTask = null; + TaskCompletionSource jobTcs = new TaskCompletionSource(); TaskCompletionSource killTaskStarted = new TaskCompletionSource(); var killTask = Task.Run(() => { killTaskStarted.SetResult(null); - while (dumpTask?.IsCompleted != true) + while (jobTcs.Task?.IsCompleted != true) KillDD(false); }); - await killTaskStarted.Task; - dumpTask = instanceClient.DreamDaemon.CreateDump(cancellationToken); - await killTask; - var job = await WaitForJob(await dumpTask, 20, true, null, cancellationToken); + Job job; + try + { + await killTaskStarted.Task; + var dumpTask = instanceClient.DreamDaemon.CreateDump(cancellationToken); + await killTask; + job = await WaitForJob(await dumpTask, 20, true, null, cancellationToken); + } + finally + { + jobTcs.SetResult(null); + } Assert.IsTrue(job.ErrorCode == ErrorCode.DreamDaemonOffline || job.ErrorCode == ErrorCode.GCoreFailure, $"{job.ErrorCode}: {job.ExceptionDetails}"); await Task.Delay(TimeSpan.FromSeconds(20), cancellationToken);