fix: address review feedback for health check endpoints
PR Checks / test-and-build (pull_request) Successful in 8m34s
PR Checks / test-and-build (pull_request) Successful in 8m34s
- Install wget in Web Dockerfile for compose healthcheck - Ensure HttpListener response is always closed in BotHealthCheckHostedService - Use ephemeral port in Bot health check test to avoid port conflicts - Rename NpgsqlHealthCheck test to reflect actual behavior Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using GmRelay.Bot.Infrastructure.Health;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
@@ -8,13 +9,15 @@ namespace GmRelay.Bot.Tests.Infrastructure.Health;
|
||||
public sealed class BotHealthCheckHostedServiceTests : IDisposable
|
||||
{
|
||||
private readonly BotHealthCheckHostedService _service;
|
||||
private readonly int _port;
|
||||
|
||||
public BotHealthCheckHostedServiceTests()
|
||||
{
|
||||
_port = GetAvailablePort();
|
||||
var config = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(new Dictionary<string, string?>
|
||||
{
|
||||
["HealthCheck:Prefix"] = "http://localhost:8081/"
|
||||
["HealthCheck:Prefix"] = $"http://localhost:{_port}/"
|
||||
})
|
||||
.Build();
|
||||
|
||||
@@ -35,8 +38,17 @@ public sealed class BotHealthCheckHostedServiceTests : IDisposable
|
||||
|
||||
using var client = new HttpClient();
|
||||
client.Timeout = TimeSpan.FromSeconds(5);
|
||||
var response = await client.GetAsync("http://localhost:8081/health");
|
||||
var response = await client.GetAsync($"http://localhost:{_port}/health");
|
||||
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
}
|
||||
|
||||
private static int GetAvailablePort()
|
||||
{
|
||||
var listener = new TcpListener(IPAddress.Loopback, 0);
|
||||
listener.Start();
|
||||
var port = ((IPEndPoint)listener.LocalEndpoint).Port;
|
||||
listener.Stop();
|
||||
return port;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ public sealed class WebHealthEndpointTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NpgsqlHealthCheck_ShouldReturnHealthy_WhenDatabaseIsAccessible()
|
||||
public async Task NpgsqlHealthCheck_ShouldReturnUnhealthy_WhenDatabaseIsInaccessible()
|
||||
{
|
||||
var dataSource = NpgsqlDataSource.Create("Host=localhost;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=fake");
|
||||
var healthCheck = new NpgsqlHealthCheck(dataSource);
|
||||
|
||||
Reference in New Issue
Block a user