public void SetUp() { var hangingChecker = Substitute.For<ISystemChecker>(); hangingChecker.SystemName.Returns("Hanging checker"); hangingChecker.CheckSystem().Returns(x => { Thread.Sleep(TimeSpan.FromSeconds(10)); return (SystemCheckResult)null; }); var healthyChecker = Substitute.For<ISystemChecker>(); healthyChecker.CheckSystem().Returns(x => new SystemCheckResult { SystemName = "Healthy checker", Health = HealthState.Good }); var healthNetConfiguration = Substitute.For<IHealthNetConfiguration>(); healthNetConfiguration.DefaultSystemCheckTimeout.Returns(TimeSpan.FromSeconds(1)); var service = new HealthCheckService(healthNetConfiguration, Substitute.For<IVersionProvider>(), new[] { hangingChecker, healthyChecker }); var task = Task<HealthResult>.Factory.StartNew(() => service.CheckHealth()); if (Task.WaitAll(new Task[] {task}, TimeSpan.FromSeconds(5))) { result = task.Result; } else { throw new TimeoutException(); } }
public async Task InvokeAsync(HttpContext context, HealthCheckService healthCheckService) { if (IsCallToHealthCheck(context)) { var responseHeaders = context.Response.Headers; responseHeaders["Content-Type"] = new[] { $"{Constants.Response.ContentType.Json}; charset=utf-8" }; var responseStream = context.Response.Body; var result = healthCheckService.CheckHealth(IsIntrusive(context)); using (var writeStream = new MemoryStream()) { var contentLength = serializer.SerializeToStream(writeStream, result); responseHeaders["Content-Length"] = new[] { contentLength.ToString("D") }; writeStream.Position = 0; await writeStream.CopyToAsync(responseStream); } } else { await next(context); } }
public void SetUp() { var hangingChecker = Substitute.For <ISystemChecker>(); hangingChecker.SystemName.Returns("Hanging checker"); hangingChecker.CheckSystem().Returns(x => { Thread.Sleep(TimeSpan.FromSeconds(10)); return((SystemCheckResult)null); }); var healthyChecker = Substitute.For <ISystemChecker>(); healthyChecker.CheckSystem().Returns(x => new SystemCheckResult { SystemName = "Healthy checker", Health = HealthState.Good }); var healthNetConfiguration = Substitute.For <IHealthNetConfiguration>(); healthNetConfiguration.DefaultSystemCheckTimeout.Returns(TimeSpan.FromSeconds(1)); var service = new HealthCheckService(healthNetConfiguration, Substitute.For <IVersionProvider>(), new[] { hangingChecker, healthyChecker }); var task = Task <HealthResult> .Factory.StartNew(() => service.CheckHealth()); if (Task.WaitAll(new Task[] { task }, TimeSpan.FromSeconds(5))) { result = task.Result; } else { throw new TimeoutException(); } }
public async Task Invoke(Env environment) { if (IsCallToHealthCheck(environment)) { var responseHeaders = (IDictionary <string, string[]>)environment["owin.ResponseHeaders"]; responseHeaders["Content-Type"] = new[] { $"{Constants.Response.ContentType.Json}; charset=utf-8" }; var responseStream = (Stream)environment["owin.ResponseBody"]; var healthCheckService = new HealthCheckService(configuration, versionProvider ?? new AssemblyFileVersionProvider(configuration), systemCheckerResolverFactory()); var result = healthCheckService.CheckHealth(IsIntrusive(environment)); using (var writeStream = new MemoryStream()) { var contentLength = new HealthResultJsonSerializer().SerializeToStream(writeStream, result); responseHeaders["Content-Length"] = new[] { contentLength.ToString("D") }; writeStream.Position = 0; await writeStream.CopyToAsync(responseStream); } } else { await next.Invoke(environment); } }
public void SetUp() { var versionProvider = Substitute.For<IVersionProvider>(); versionProvider.GetSystemVersion().Returns("1.2.3.4"); var healthNetConfiguration = Substitute.For<IHealthNetConfiguration>(); healthNetConfiguration.DefaultSystemCheckTimeout.Returns(TimeSpan.FromSeconds(5)); var service = new HealthCheckService(healthNetConfiguration, versionProvider, SystemStateCheckers()); Result = service.CheckHealth(PerformeIntrusive); }
public void SetUp() { var versionProvider = Substitute.For <IVersionProvider>(); versionProvider.GetSystemVersion().Returns("1.2.3.4"); var healthNetConfiguration = Substitute.For <IHealthNetConfiguration>(); healthNetConfiguration.DefaultSystemCheckTimeout.Returns(TimeSpan.FromSeconds(5)); var service = new HealthCheckService(healthNetConfiguration, versionProvider, SystemStateCheckers()); Result = service.CheckHealth(PerformeIntrusive); }
public HealthNetModule(IHealthNetConfiguration configuration, IEnumerable<ISystemChecker> systemCheckers) : base(configuration.Path) { Get[""] = p => { var healthChecker = new HealthCheckService(configuration, new VersionProvider(configuration), systemCheckers); var intrusive = false; if (Request.Query.intrusive != null) { intrusive = Request.Query.intrusive == "true"; } Action<Stream> performeHealthCheck = stream => new HealthResultJsonSerializer().SerializeToStream(stream, healthChecker.CheckHealth(intrusive)); return new Response { Contents = performeHealthCheck, ContentType = Constants.Response.ContentType.Json + "; charset=utf-8", StatusCode = HttpStatusCode.OK }; }; }
public void SetUp() { var hangingChecker = Substitute.For <ISystemChecker>(); hangingChecker.SystemName.Returns("Hanging checker"); hangingChecker.CheckSystem().Returns(x => { Thread.Sleep(TimeSpan.FromSeconds(10)); return((SystemCheckResult)null); }); var healthyChecker = Substitute.For <ISystemChecker>(); healthyChecker.SystemName.Returns("Healthy checker"); healthyChecker.CheckSystem() .Returns(x => new SystemCheckResult { SystemName = healthyChecker.SystemName, Health = HealthState.Good }); var healthNetConfiguration = Substitute.For <IHealthNetConfiguration>(); healthNetConfiguration.DefaultSystemCheckTimeout.Returns(TimeSpan.FromSeconds(4)); var service = new HealthCheckService(healthNetConfiguration, Substitute.For <IVersionProvider>(), new[] { hangingChecker, healthyChecker }); var task = Task <HealthResult> .Factory.StartNew(() => service.CheckHealth()); if (Task.WaitAll(new Task[] { task }, TimeSpan.FromSeconds(20))) { result = task.Result; TestContext.Progress.WriteLine($"Health check result:{Environment.NewLine}{JsonConvert.SerializeObject(result)}"); } else { TestContext.Progress.WriteLine("Healthcheck timed out"); throw new TimeoutException(); } }
public HealthNetModule(IHealthNetConfiguration configuration, IEnumerable <ISystemChecker> systemCheckers) : base(configuration.Path) { Get[""] = p => { var healthChecker = new HealthCheckService(configuration, new VersionProvider(configuration), systemCheckers); var intrusive = false; if (Request.Query.intrusive != null) { intrusive = Request.Query.intrusive == "true"; } Action <Stream> performeHealthCheck = stream => new HealthResultJsonSerializer().SerializeToStream(stream, healthChecker.CheckHealth(intrusive)); return(new Response { Contents = performeHealthCheck, ContentType = Constants.Response.ContentType.Json + "; charset=utf-8", StatusCode = HttpStatusCode.OK }); }; }