Workaround for random-ass port allocation failures

This commit is contained in:
Jordan Dominion
2023-12-25 08:49:38 -05:00
parent 256732618c
commit eea3ec71d4
2 changed files with 48 additions and 14 deletions
@@ -159,10 +159,27 @@ namespace Tgstation.Server.Tests.Live.Instance
Origin = new Uri(Origin),
}, cancellationToken).AsTask();
var dmUpdateRequest = instanceClient.DreamMaker.Update(new DreamMakerRequest
async Task UpdateDMSettings()
{
ApiValidationPort = dmPort,
}, cancellationToken);
for (var i = 0; i < 5; ++i)
try
{
await instanceClient.DreamMaker.Update(new DreamMakerRequest
{
ApiValidationPort = dmPort,
}, cancellationToken);
}
catch (ConflictException ex) when (ex.ErrorCode == ErrorCode.PortNotAvailable)
{
if (i == 4)
throw;
// I have no idea why this happens sometimes
await Task.Delay(TimeSpan.FromSeconds(3), cancellationToken);
}
}
var dmUpdateRequest = UpdateDMSettings();
// need at least one chat bot to satisfy DMAPI test,
// use discord as it allows multi-botting on on token unlike IRC
@@ -230,7 +247,7 @@ namespace Tgstation.Server.Tests.Live.Instance
await Task.WhenAll(
jrt.WaitForJob(installJob2.InstallJob, EngineTest.EngineInstallationTimeout(compatVersion) + 30, false, null, cancellationToken),
jrt.WaitForJob(cloneRequest.Result.ActiveJob, 60, false, null, cancellationToken),
dmUpdateRequest.AsTask(),
dmUpdateRequest,
cloneRequest);
if (compatVersion.Engine.Value == EngineType.OpenDream)
@@ -129,17 +129,34 @@ namespace Tgstation.Server.Tests.Live.Instance
}
}
async Task UpdateDDSettings()
{
for (var i = 0; i < 5; ++i)
try
{
// Increase startup timeout, disable heartbeats, enable map threads because we've tested without for years
await instanceClient.DreamDaemon.Update(new DreamDaemonRequest
{
StartupTimeout = 60,
HealthCheckSeconds = 0,
Port = ddPort,
MapThreads = 2,
LogOutput = false,
AdditionalParameters = BaseAdditionalParameters
}, cancellationToken);
}
catch (ConflictException ex) when (ex.ErrorCode == ErrorCode.PortNotAvailable)
{
if (i == 4)
throw;
// I have no idea why this happens sometimes
await Task.Delay(TimeSpan.FromSeconds(3), cancellationToken);
}
}
await Task.WhenAll(
// Increase startup timeout, disable heartbeats, enable map threads because we've tested without for years
instanceClient.DreamDaemon.Update(new DreamDaemonRequest
{
StartupTimeout = 60,
HealthCheckSeconds = 0,
Port = ddPort,
MapThreads = 2,
LogOutput = false,
AdditionalParameters = BaseAdditionalParameters
}, cancellationToken).AsTask(),
UpdateDDSettings(),
CheckByondVersions(),
ApiAssert.ThrowsException<ApiConflictException, DreamDaemonResponse>(() => instanceClient.DreamDaemon.Update(new DreamDaemonRequest
{