Address health check review feedback
This commit is contained in:
parent
12408cca37
commit
b546864b4a
|
|
@ -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];
|
||||
|
||||
|
|
|
|||
|
|
@ -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 _);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue