예제 #1
0
        public IHealthRoot Build()
        {
            if (_options == null)
            {
                _options = new HealthOptions();
            }

            if (_healthFormatterCollection.Count == 0)
            {
                _healthFormatterCollection.Add(new HealthStatusTextOutputFormatter());
            }

            IRunHealthChecks healthCheckRunner;

            var health = new DefaultHealth(_checks.Values);
            var defaultMetricsOutputFormatter = _defaultMetricsHealthFormatter ?? _healthFormatterCollection.FirstOrDefault();

            if (_options.Enabled && health.Checks.Any())
            {
                healthCheckRunner = new DefaultHealthCheckRunner(health.Checks);
            }
            else
            {
                healthCheckRunner = new NoOpHealthCheckRunner();
            }

            return(new HealthRoot(
                       health,
                       _options,
                       _healthFormatterCollection,
                       defaultMetricsOutputFormatter,
                       healthCheckRunner));
        }
예제 #2
0
        public async Task Status_is_healthy_if_all_checks_are_healthy()
        {
            // Arrange
            var checks = new[]
            {
                new HealthCheck("ok", () => new ValueTask <HealthCheckResult>(HealthCheckResult.Healthy())),
                new HealthCheck("another", () => new ValueTask <HealthCheckResult>(HealthCheckResult.Healthy()))
            };
            var runner = new DefaultHealthCheckRunner(checks);

            // Act
            var status = await runner.ReadAsync();

            // Assert
            status.Status.Should().Be(HealthCheckStatus.Healthy);
            status.Results.Count().Should().Be(2);
        }
예제 #3
0
        public async Task Status_is_failed_if_one_check_fails()
        {
            // Arrange
            var checks = new[]
            {
                new HealthCheck("ok", () => new ValueTask <HealthCheckResult>(HealthCheckResult.Healthy())),
                new HealthCheck("bad", () => new ValueTask <HealthCheckResult>(HealthCheckResult.Unhealthy()))
            };
            var runner = new DefaultHealthCheckRunner(checks);

            // Act
            var status = await runner.ReadAsync();

            // Assert
            status.Status.Should().Be(HealthCheckStatus.Unhealthy);
            status.Results.Count().Should().Be(2);
        }
예제 #4
0
        public IHealthRoot Build()
        {
            if (_options == null)
            {
                _options = new HealthOptions();
            }

            if (_healthFormatterCollection.Count == 0)
            {
                _healthFormatterCollection.Add(new HealthStatusTextOutputFormatter());
            }

            IRunHealthChecks healthCheckRunner;

            var health = new DefaultHealth(_checks.Values);
            var defaultMetricsOutputFormatter = _defaultMetricsHealthFormatter ?? _healthFormatterCollection.FirstOrDefault();

            if (_options.Enabled && health.Checks.Any())
            {
                healthCheckRunner = new DefaultHealthCheckRunner(health.Checks);
            }
            else
            {
                healthCheckRunner = new NoOpHealthCheckRunner();
            }

            if (string.IsNullOrWhiteSpace(_options.ApplicationName))
            {
                var entryAssembly = Assembly.GetEntryAssembly();

                _options.ApplicationName = entryAssembly?.GetName()?.Name?.Trim();
            }

            return(new HealthRoot(
                       health,
                       _options,
                       _healthFormatterCollection,
                       defaultMetricsOutputFormatter,
                       healthCheckRunner,
                       _healthStatusReporters));
        }