Add integration tests for /health and /metrics

This commit is contained in:
Jordan Dominion
2025-02-16 20:45:29 -05:00
parent 8fab9985b2
commit 869092f6c1
2 changed files with 38 additions and 1 deletions
@@ -156,6 +156,7 @@ namespace Tgstation.Server.Tests.Live
$"Security:TokenExpiryMinutes=120", // timeouts are useless for us
$"General:OpenDreamSuppressInstallOutput={TestingUtils.RunningInGitHubActions}",
"Telemetry:DisableVersionReporting=true",
$"General:PrometheusPort={port}"
};
if (MultiServerClient.UseGraphQL)
@@ -455,6 +455,40 @@ namespace Tgstation.Server.Tests.Live
}
}
static async Task TestHealthChecks(IRestServerClient serverClient, CancellationToken cancellationToken)
{
var url = serverClient.Url;
// check that 400s are returned appropriately
using var httpClient = new HttpClient();
using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString() + "health"))
{
request.Headers.Accept.Clear();
request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
using var response = await httpClient.SendAsync(request, cancellationToken);
response.EnsureSuccessStatusCode();
var text = await response.Content.ReadAsStringAsync(cancellationToken);
Assert.AreEqual("Healthy", text.Trim());
}
}
static async Task TestPrometheusMetrics(IRestServerClient serverClient, CancellationToken cancellationToken)
{
var url = serverClient.Url;
// check that 400s are returned appropriately
using var httpClient = new HttpClient();
using (var request = new HttpRequestMessage(HttpMethod.Get, url.ToString() + "metrics"))
{
request.Headers.Accept.Clear();
request.Headers.UserAgent.Add(new ProductInfoHeaderValue("RootTest", "1.0.0"));
using var response = await httpClient.SendAsync(request, cancellationToken);
response.EnsureSuccessStatusCode();
var text = await response.Content.ReadAsStringAsync(cancellationToken);
Assert.IsTrue(text.Contains("tgs_jobs_running"));
}
}
static async Task TestGraphQLLogin(IRestServerClientFactory clientFactory, IRestServerClient restClient, CancellationToken cancellationToken)
{
if (!MultiServerClient.UseGraphQL)
@@ -483,6 +517,8 @@ namespace Tgstation.Server.Tests.Live
TestServerInformation(clientFactory, serverClient, cancellationToken),
TestInvalidTransfers(serverClient, cancellationToken),
RegressionTestForLeakedPasswordHashesBug(serverClient, cancellationToken),
TestSignalRUsage(clientFactory, serverClient, cancellationToken));
TestSignalRUsage(clientFactory, serverClient, cancellationToken),
TestHealthChecks(serverClient, cancellationToken),
TestPrometheusMetrics(serverClient, cancellationToken));
}
}