Address health check review feedback

This commit is contained in:
Sipke Schoorstra 2026-05-21 01:47:17 +02:00
parent 12408cca37
commit b546864b4a
No known key found for this signature in database
GPG key ID: 5C10502B28A4268F
3 changed files with 29 additions and 2 deletions

View file

@ -18,7 +18,7 @@ public static class HealthCheckExtensions
/// <summary>
/// Tag applied to Elsa readiness checks.
/// </summary>
public const string ReadinessTag = "readiness";
public const string ReadinessTag = "elsa-readiness";
private static readonly string[] ReadinessTags = [ElsaTag, ReadinessTag];

View file

@ -31,7 +31,7 @@ public class ElsaDistributedLockHealthCheckTests
Assert.Equal(HealthStatus.Healthy, result.Status);
Assert.Equal("distributed-locks", result.Data["category"]);
_distributedLockProvider.Received(1).CreateLock(Arg.Is<string>(x => x.StartsWith("elsa-health-check-", StringComparison.Ordinal)));
_distributedLockProvider.Received(1).CreateLock(Arg.Is<string>(x => IsProbeLockName(x)));
await _distributedLock.Received(1).TryAcquireAsync(ExpectedLockAcquisitionTimeout, Arg.Any<CancellationToken>());
}
@ -52,6 +52,7 @@ public class ElsaDistributedLockHealthCheckTests
Assert.Equal(2, lockNames.Count);
Assert.All(lockNames, x => Assert.DoesNotContain(Environment.MachineName, x, StringComparison.OrdinalIgnoreCase));
Assert.NotEqual(lockNames[0], lockNames[1]);
Assert.All(lockNames, x => Assert.True(IsProbeLockName(x)));
}
[Fact]
@ -102,4 +103,11 @@ public class ElsaDistributedLockHealthCheckTests
{
DistributedLockAcquisitionTimeout = ExpectedLockAcquisitionTimeout
});
private static bool IsProbeLockName(string lockName)
{
const string prefix = "elsa-health-check-";
return lockName.StartsWith(prefix, StringComparison.Ordinal)
&& Guid.TryParseExact(lockName[prefix.Length..], "N", out _);
}
}

View file

@ -1,6 +1,7 @@
using Elsa.Extensions;
using Elsa.Workflows.Runtime.Options;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Options;
namespace Elsa.Workflows.Runtime.UnitTests.HealthChecks;
@ -20,4 +21,22 @@ public class HealthCheckExtensionsTests
Assert.NotNull(serviceProvider.GetRequiredService<IOptions<ElsaReadinessHealthCheckOptions>>());
}
[Fact]
public void AddElsaReadinessChecksUsesElsaSpecificReadinessTag()
{
var services = new ServiceCollection();
services
.AddHealthChecks()
.AddElsaReadinessChecks(includePersistence: false);
using var serviceProvider = services.BuildServiceProvider();
var registrations = serviceProvider.GetRequiredService<IOptions<HealthCheckServiceOptions>>().Value.Registrations;
var registration = Assert.Single(registrations);
Assert.Contains("elsa", registration.Tags);
Assert.Contains(HealthCheckExtensions.ReadinessTag, registration.Tags);
Assert.DoesNotContain("readiness", registration.Tags);
}
}