creates simple healthchecks

This commit is contained in:
2025-08-25 23:46:04 +02:00
commit b81eb5b9f5
21 changed files with 2835 additions and 0 deletions

11
Abstracts/HealthCheck.cs Normal file
View File

@@ -0,0 +1,11 @@
namespace MCVIngenieros.Healthchecks.Abstracts;
public abstract class HealthCheck : IHealthCheck
{
public virtual int? RetryAttempts => 2;
public virtual TimeSpan? Timeout => TimeSpan.FromSeconds(3);
public virtual TimeSpan? RetryDelay => TimeSpan.FromSeconds(1);
public virtual HealthCheckSeverity? Severity => HealthCheckSeverity.Critical;
public virtual string? Description => null;
public abstract Task<HealthCheckResult> CheckAsync(CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,5 @@
namespace MCVIngenieros.Healthchecks.Abstracts;
// Severity levels for health checks
public enum HealthCheckSeverity { Info, Warning, Critical }

16
Abstracts/IHealthCheck.cs Normal file
View File

@@ -0,0 +1,16 @@
using System.ComponentModel;
namespace MCVIngenieros.Healthchecks.Abstracts;
// Health check interface
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IHealthCheck
{
int? RetryAttempts { get; }
TimeSpan? Timeout { get; }
TimeSpan? RetryDelay { get; }
HealthCheckSeverity? Severity { get; }
string? Description { get; }
Task<HealthCheckResult> CheckAsync(CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,17 @@
using System.ComponentModel;
namespace MCVIngenieros.Healthchecks.Abstracts;
// Health check container interface
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IHealthCheckContainer
{
Task<List<HealthCheckResult>> RunAllChecks(CancellationToken cancellationToken = default);
Task<HealthCheckResult?> RunCheck(string name, CancellationToken cancellationToken = default);
Task<List<HealthCheckResult>> RunChecks(IEnumerable<string> names, CancellationToken cancellationToken = default);
IReadOnlyList<string> GetAllCheckNames();
void DiscoverHealthChecks();
IReadOnlyDictionary<string, IHealthCheck> GetAllChecks();
Task<List<HealthCheckResult>> GetAllChecksResults(CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,8 @@
using MCVIngenieros.Healthchecks.Options;
namespace MCVIngenieros.Healthchecks.Abstracts;
public interface IHealthCheckWithOptions : IHealthCheck
{
HealthChecksConfigs Options { get; }
}