public async Task execute_definded_action_for_health_check() { var taskResult = Task.FromResult(LivenessResult.UnHealthy("action liveness is not working")); var livenessContext = new LivenessExecutionContext(); var liveness = new ActionLiveness((cancellationToken) => taskResult); (await liveness.IsHealthy(livenessContext)) .Should().Be(taskResult.Result); }
async Task <LivenessResult> RunLiveness(IBeatPulseLiveness liveness, LivenessExecutionContext executionContext, BeatPulseOptions options) { _logger.LogInformation($"Executing liveness {executionContext.Name}."); var clock = Clock.StartNew(); try { using (var cancellationTokenSource = new CancellationTokenSource()) { var livenessTask = liveness.IsHealthy(executionContext, cancellationTokenSource.Token); if (await Task.WhenAny(livenessTask, Task.Delay(options.Timeout, cancellationTokenSource.Token)) == livenessTask) { _logger.LogInformation($"The liveness {executionContext.Name} is executed."); return((await livenessTask) .SetEnforced(name: executionContext.Name, path: executionContext.Path, duration: clock.Elapsed(), detailedErrors: options.DetailedErrors)); } else { _logger.LogWarning($"The liveness {executionContext.Name} return timeout, execution is cancelled."); cancellationTokenSource.Cancel(); return(LivenessResult.TimedOut() .SetEnforced(name: executionContext.Name, path: executionContext.Path, duration: clock.Elapsed(), detailedErrors: options.DetailedErrors)); } } } catch (Exception ex) { // The uri executed is now well formed, dns not found // or any other unexpected exceptions from liveness executions. _logger.LogError(ex, $"The liveness {executionContext.Name} is unhealthy."); return(LivenessResult.UnHealthy(ex) .SetEnforced(name: executionContext.Name, path: executionContext.Path, duration: clock.Elapsed(), detailedErrors: options.DetailedErrors)); } }