feat: map canonical ZB health tiers; replace bypassing /health/live
This commit is contained in:
@@ -2,6 +2,7 @@ using System.Security.Cryptography.X509Certificates;
|
|||||||
using Microsoft.AspNetCore.Hosting.StaticWebAssets;
|
using Microsoft.AspNetCore.Hosting.StaticWebAssets;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Logging.Configuration;
|
using Microsoft.Extensions.Logging.Configuration;
|
||||||
|
using ZB.MOM.WW.Health;
|
||||||
using ZB.MOM.WW.MxGateway.Contracts;
|
using ZB.MOM.WW.MxGateway.Contracts;
|
||||||
using ZB.MOM.WW.MxGateway.Server.Alarms;
|
using ZB.MOM.WW.MxGateway.Server.Alarms;
|
||||||
using ZB.MOM.WW.MxGateway.Server.Configuration;
|
using ZB.MOM.WW.MxGateway.Server.Configuration;
|
||||||
@@ -63,7 +64,11 @@ public static class GatewayApplication
|
|||||||
builder.Services.AddGatewayConfiguration();
|
builder.Services.AddGatewayConfiguration();
|
||||||
builder.Services.AddSqliteAuthStore();
|
builder.Services.AddSqliteAuthStore();
|
||||||
builder.Services.AddGatewayGrpcAuthorization();
|
builder.Services.AddGatewayGrpcAuthorization();
|
||||||
builder.Services.AddHealthChecks();
|
builder.Services.AddHealthChecks()
|
||||||
|
.AddTypeActivatedCheck<AuthStoreHealthCheck>(
|
||||||
|
"auth-store",
|
||||||
|
failureStatus: null,
|
||||||
|
tags: new[] { ZbHealthTags.Ready });
|
||||||
builder.Services.AddSingleton<GatewayMetrics>();
|
builder.Services.AddSingleton<GatewayMetrics>();
|
||||||
builder.Services.AddSingleton<MxAccessGrpcMapper>();
|
builder.Services.AddSingleton<MxAccessGrpcMapper>();
|
||||||
builder.Services.AddSingleton<MxAccessGrpcRequestValidator>();
|
builder.Services.AddSingleton<MxAccessGrpcRequestValidator>();
|
||||||
@@ -169,13 +174,7 @@ public static class GatewayApplication
|
|||||||
{
|
{
|
||||||
endpoints.MapStaticAssets(ResolveStaticAssetsManifestPath());
|
endpoints.MapStaticAssets(ResolveStaticAssetsManifestPath());
|
||||||
|
|
||||||
endpoints.MapGet(
|
endpoints.MapZbHealth();
|
||||||
"/health/live",
|
|
||||||
() => Results.Ok(new GatewayHealthReply(
|
|
||||||
Status: "Healthy",
|
|
||||||
DefaultBackend: GatewayContractInfo.DefaultBackendName,
|
|
||||||
WorkerProtocolVersion: GatewayContractInfo.WorkerProtocolVersion)))
|
|
||||||
.WithName("LiveHealth");
|
|
||||||
|
|
||||||
endpoints.MapGrpcService<MxAccessGatewayService>();
|
endpoints.MapGrpcService<MxAccessGatewayService>();
|
||||||
endpoints.MapGrpcService<GalaxyRepositoryGrpcService>();
|
endpoints.MapGrpcService<GalaxyRepositoryGrpcService>();
|
||||||
|
|||||||
@@ -11,19 +11,22 @@ namespace ZB.MOM.WW.MxGateway.Tests.Gateway;
|
|||||||
|
|
||||||
public sealed class GatewayApplicationTests
|
public sealed class GatewayApplicationTests
|
||||||
{
|
{
|
||||||
/// <summary>Verifies that Build maps the live health check endpoint.</summary>
|
/// <summary>Verifies that Build maps the canonical three health tiers.</summary>
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task Build_MapsLiveHealthEndpoint()
|
public async Task Build_MapsCanonicalHealthEndpoints()
|
||||||
{
|
{
|
||||||
await using WebApplication app = GatewayApplication.Build([]);
|
await using WebApplication app = GatewayApplication.Build([]);
|
||||||
|
|
||||||
RouteEndpoint endpoint = Assert.Single(
|
var paths = ((IEndpointRouteBuilder)app).DataSources
|
||||||
((IEndpointRouteBuilder)app).DataSources
|
.SelectMany(dataSource => dataSource.Endpoints)
|
||||||
.SelectMany(dataSource => dataSource.Endpoints)
|
.OfType<RouteEndpoint>()
|
||||||
.OfType<RouteEndpoint>(),
|
.Select(e => e.RoutePattern.RawText)
|
||||||
candidate => candidate.RoutePattern.RawText == "/health/live");
|
.ToHashSet();
|
||||||
|
|
||||||
Assert.Equal("LiveHealth", endpoint.Metadata.GetMetadata<IEndpointNameMetadata>()?.EndpointName);
|
Assert.Contains("/health/ready", paths);
|
||||||
|
Assert.Contains("/health/active", paths);
|
||||||
|
Assert.Contains("/healthz", paths);
|
||||||
|
Assert.DoesNotContain("/health/live", paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Verifies that Build registers the gateway metrics service.</summary>
|
/// <summary>Verifies that Build registers the gateway metrics service.</summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user