diff --git a/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs b/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs index bbd6bb176c..ac4f519fa6 100644 --- a/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs +++ b/tests/Tgstation.Server.Tests/Live/LiveTestingServer.cs @@ -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) diff --git a/tests/Tgstation.Server.Tests/Live/RawRequestTests.cs b/tests/Tgstation.Server.Tests/Live/RawRequestTests.cs index f04ce92007..2e26ff9bc7 100644 --- a/tests/Tgstation.Server.Tests/Live/RawRequestTests.cs +++ b/tests/Tgstation.Server.Tests/Live/RawRequestTests.cs @@ -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)); } }