From b21f3a880fa511c3a122f7a580d8ac2240cc17c2 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Tue, 24 Oct 2023 04:03:56 -0400 Subject: [PATCH 1/3] Use a higher priority thread here to ensure the dump test runs successfully --- .../Live/Instance/WatchdogTest.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs index 35bd51fd11..5d0cd5fa6f 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs @@ -394,13 +394,17 @@ namespace Tgstation.Server.Tests.Live.Instance KillDD(true); var jobTcs = new TaskCompletionSource(); var killTaskStarted = new TaskCompletionSource(); - var killTask = Task.Run(() => + var killThread = new Thread(() => { killTaskStarted.SetResult(); while (!jobTcs.Task.IsCompleted) KillDD(false); - }, cancellationToken); + }) + { + Priority = ThreadPriority.AboveNormal + }; + killThread.Start(); try { await killTaskStarted.Task; @@ -410,7 +414,7 @@ namespace Tgstation.Server.Tests.Live.Instance finally { jobTcs.SetResult(); - await killTask; + killThread.Join(); } // these can also happen From 13128abe73125ecf8501a368164a146e8e67a2d1 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Wed, 25 Oct 2023 02:54:50 -0400 Subject: [PATCH 2/3] Fix overeager required process killing --- tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs index 5d0cd5fa6f..eb9c77047b 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/WatchdogTest.cs @@ -1137,9 +1137,11 @@ namespace Tgstation.Server.Tests.Live.Instance Assert.AreEqual(ddPort, daemonStatus.CurrentPort); // Try killing the DD process to ensure it gets set to the restoring state + bool firstTime = true; do { - KillDD(true); + KillDD(firstTime); + firstTime = false; await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken); daemonStatus = await instanceClient.DreamDaemon.Read(cancellationToken); } From 14ed93c12a7894b36f90bbcf51c751033ee2761d Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Wed, 25 Oct 2023 03:33:27 -0400 Subject: [PATCH 3/3] Make every LongRunning DMAPI test compile generate a unique .rsc --- .../PreCompile-GenerateRandomResource.bat | 4 ++++ .../PreCompile-GenerateRandomResource.sh | 8 ++++++++ tests/DMAPI/LongRunning/Test.dm | 10 ++++++---- tests/DMAPI/LongRunning/resource.txt | 8 -------- .../Live/Instance/ConfigurationTest.cs | 14 ++++++++++++++ tgstation-server.sln | 3 ++- 6 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.bat create mode 100644 tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.sh delete mode 100644 tests/DMAPI/LongRunning/resource.txt diff --git a/tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.bat b/tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.bat new file mode 100644 index 0000000000..9dc4ff9975 --- /dev/null +++ b/tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.bat @@ -0,0 +1,4 @@ +cd /D "%~dp0" +cd %1 +cd tests\DMAPI\LongRunning +C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command "(New-Guid).Guid | Out-File resource.txt; Add-Content -Path resource.txt -Value 'aljsdhfjahsfkjnsalkjdfhskljdackmcnvxkljhvkjsdanv,jdshlkufhklasjeFDhfjkalhdkjlfhalksfdjh'" diff --git a/tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.sh b/tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.sh new file mode 100644 index 0000000000..a22163f76f --- /dev/null +++ b/tests/DMAPI/LongRunning/PreCompile-GenerateRandomResource.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +cd "$1/tests/DMAPI/LongRunning" + +tr -dc A-Za-z0-9 resource.txt +echo -e '\naljsdhfjahsfkjnsalkjdfhskljdackmcnvxkljhvkjsdanv,jdshlkufhklasjeFDhfjkalhdkjlfhalksfdjh\n' >> resource.txt diff --git a/tests/DMAPI/LongRunning/Test.dm b/tests/DMAPI/LongRunning/Test.dm index f605c5ad59..7c6ba1674d 100644 --- a/tests/DMAPI/LongRunning/Test.dm +++ b/tests/DMAPI/LongRunning/Test.dm @@ -22,11 +22,13 @@ if(!length(channels)) FailTest("Expected some chat channels!") - var/test_str = "aljsdhfjahsfkjnsalkjdfhskljdackmcnvxkljhvkjsdanv,jdshlkufhklasjeFDhfjkalhdkjlfhalksfdjh" - var/res_contents = file2text('resource.txt') // we need a .rsc to be generated + var/res = file('resource.txt') + if(!res) + FailTest("Failed to resource!") - if(!findtext(res_contents, test_str)) - FailTest("Failed to resource? Did not find magic: [res_contents]") + var/res_contents = file2text(res) // we need a .rsc to be generated + if(!res_contents) + FailTest("Failed to resource? No contents!") if(!fexists("[DME_NAME].rsc")) FailTest("Failed to create .rsc!") diff --git a/tests/DMAPI/LongRunning/resource.txt b/tests/DMAPI/LongRunning/resource.txt deleted file mode 100644 index 94b848fe2a..0000000000 --- a/tests/DMAPI/LongRunning/resource.txt +++ /dev/null @@ -1,8 +0,0 @@ - - if(!length(channels)) - FailTest("Expected some chat channels!") - - var/test_str = "aljsdhfjahsfkjnsalkjdfhskljdackmcnvxkljhvkjsdanv,jdshlkufhklasjeFDhfjkalhdkjlfhalksfdjh" - var/self_contents = file2text(file('Test.dm')) // we need a .rsc to be generated - - if(!(test_str in self_contents)) diff --git a/tests/Tgstation.Server.Tests/Live/Instance/ConfigurationTest.cs b/tests/Tgstation.Server.Tests/Live/Instance/ConfigurationTest.cs index 44c2f7246b..2c7295e224 100644 --- a/tests/Tgstation.Server.Tests/Live/Instance/ConfigurationTest.cs +++ b/tests/Tgstation.Server.Tests/Live/Instance/ConfigurationTest.cs @@ -12,6 +12,7 @@ using Tgstation.Server.Api.Models.Request; using Tgstation.Server.Client; using Tgstation.Server.Client.Components; using Tgstation.Server.Host.IO; +using Tgstation.Server.Host.System; namespace Tgstation.Server.Tests.Live.Instance { @@ -115,6 +116,19 @@ namespace Tgstation.Server.Tests.Live.Instance await using var memoryStream2 = new MemoryStream(Encoding.UTF8.GetBytes("bbb")); await configurationClient.Write(staticFile2, memoryStream2, cancellationToken); + + var shellScriptExtension = new PlatformIdentifier().IsWindows ? ".bat" : ".sh"; + var scriptName = $"PreCompile-GenerateRandomResource{shellScriptExtension}"; + var resourcingScript = new ConfigurationFileRequest + { + Path = $"/EventScripts/{scriptName}" + }; + + await using var readStream = ioManager.GetFileStream($"../../../../DMAPI/LongRunning/{scriptName}", false); + await configurationClient.Write( + resourcingScript, + readStream, + cancellationToken); } return Task.WhenAll( diff --git a/tgstation-server.sln b/tgstation-server.sln index c1cde46821..36d9027e9d 100644 --- a/tgstation-server.sln +++ b/tgstation-server.sln @@ -158,7 +158,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LongRunning", "LongRunning" tests\DMAPI\LongRunning\long_running_test.dme = tests\DMAPI\LongRunning\long_running_test.dme tests\DMAPI\LongRunning\long_running_test_copy.dme = tests\DMAPI\LongRunning\long_running_test_copy.dme tests\DMAPI\LongRunning\long_running_test_rooted.dme = tests\DMAPI\LongRunning\long_running_test_rooted.dme - tests\DMAPI\LongRunning\resource.txt = tests\DMAPI\LongRunning\resource.txt + tests\DMAPI\LongRunning\PreCompile-GenerateRandomResource.bat = tests\DMAPI\LongRunning\PreCompile-GenerateRandomResource.bat + tests\DMAPI\LongRunning\PreCompile-GenerateRandomResource.sh = tests\DMAPI\LongRunning\PreCompile-GenerateRandomResource.sh tests\DMAPI\LongRunning\Test.dm = tests\DMAPI\LongRunning\Test.dm EndProjectSection EndProject