コード例 #1
0
        public static HealthCheckBuilder AddHttpEndpointCheck(this HealthCheckBuilder builder, string name, Action <HttpCheckSettingsBuilder> configureAction)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            if (configureAction == null)
            {
                throw new ArgumentNullException(nameof(configureAction));
            }

            var settingsBuilder = new HttpCheckSettingsBuilder(name);

            configureAction(settingsBuilder);
            var settingsCollection = settingsBuilder.Build();

            for (int i = 0; i < settingsCollection.Requests.Count; i++)
            {
                var request      = settingsCollection.Requests[i];
                var settingsName = settingsCollection.Requests.Count > 1 ? $"{settingsCollection.Name} {i+1}" : settingsCollection.Name;
                var settings     = new HttpCheckSettings(settingsName, settingsCollection.Critical, settingsCollection.Frequency, settingsCollection.Tags, request, settingsCollection.BeforeSend);
                builder.AddHttpEndpointCheck(settings);
            }

            return(builder);
        }
コード例 #2
0
        public async Task CheckHealthAsync_Unhealthy_ThrowsException()
        {
            var check = new HttpCheck();

            var httpSettings = new HttpRequestSettings()
            {
                HttpMethod = HttpMethod.Get, Uri = new Uri("http://localhost")
            };
            var settings    = new HttpCheckSettings("http", false, 0, null, httpSettings);
            var context     = new HealthCheckContext(settings);
            var httpHandler = new TestHttpMessageHandler();

            httpHandler.Sender   = r => throw new HttpRequestException();
            settings.HttpHandler = httpHandler;

            await Assert.ThrowsAsync <HttpRequestException>(async() => await check.CheckHealthAsync(context, settings));
        }
コード例 #3
0
        public async Task CheckHealthAsync_UnhealthyStatusCode_CheckFailed()
        {
            var check = new HttpCheck();

            var httpSettings = new HttpRequestSettings()
            {
                HttpMethod = HttpMethod.Get, Uri = new Uri("http://localhost")
            };
            var settings    = new HttpCheckSettings("http", false, 0, null, httpSettings);
            var context     = new HealthCheckContext(settings);
            var httpHandler = new TestHttpMessageHandler();

            httpHandler.Sender   = r => new HttpResponseMessage(HttpStatusCode.BadRequest);
            settings.HttpHandler = httpHandler;

            await check.CheckHealthAsync(context, settings);

            Assert.False(context.HasSucceeded);
        }
コード例 #4
0
        public static HealthCheckBuilder AddHttpEndpointCheck(this HealthCheckBuilder builder, HttpCheckOptions options)
        {
            var settings = new HttpCheckSettings(options.Name, options.Critical, options.Frequency, options.Tags, options.Request);

            return(builder.Add <HttpCheck>(settings));
        }
コード例 #5
0
 private static HealthCheckBuilder AddHttpEndpointCheck(this HealthCheckBuilder builder, HttpCheckSettings settings)
 {
     return(builder.Add <HttpCheck>(settings));
 }