mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-07-12 00:25:03 +01:00
Workaround for random-ass port allocation failures
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user