public async Task TestCallbacksAll() { var callbacks = new HealthMonitorCallbacks(_logger); var healthyCount = 0; var degradedCount = 0; var unhealthyCount = 0; callbacks.AddCallback("Check1", HealthMonitorStatus.Healthy, (result) => { healthyCount++; return(Task.CompletedTask); }); callbacks.AddCallback("Check2", HealthMonitorStatus.Degraded, (result) => { degradedCount++; return(Task.CompletedTask); }); callbacks.AddCallback("Check3", HealthMonitorStatus.Unhealthy, (result) => { unhealthyCount++; return(Task.CompletedTask); }); await callbacks.ProcessCallbacks(Data()); Assert.Equal(1, healthyCount); Assert.Equal(1, degradedCount); Assert.Equal(1, unhealthyCount); }
public async Task UnhealthyResultWithCallback() { var opts = Options(); opts.HealthChecks[0].Uri = "unhealthy"; var count = 0; var callbacks = new HealthMonitorCallbacks(_callbackLogger); callbacks.AddCallback("Check1", HealthMonitorStatus.Unhealthy, (result) => { count++; return(Task.CompletedTask); }); var data = await RunTest(opts, callbacks); Assert.Equal(3, data.MonitorResults.Count); Assert.Equal(HealthMonitorStatus.Unhealthy, data.MonitorResults["Check1"].Status); Assert.Equal(HealthMonitorStatus.Healthy, data.MonitorResults["Check2"].Status); Assert.Equal(HealthMonitorStatus.Healthy, data.MonitorResults["Check3"].Status); Assert.Equal(1, count); }
private async Task <HealthMonitorData> RunTest(HealthCheckMonitorOptions options, HealthMonitorCallbacks callbacks = null) { var data = new HealthMonitorData(options); if (callbacks == null) { callbacks = new HealthMonitorCallbacks(_callbackLogger); } var service = new MonitorCollectorService(options, data, callbacks, _clientFactory, _collectorLogger); using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(2))) { await service.StartAsync(cts.Token); await Task.Delay(TimeSpan.FromMilliseconds(500)); await service.StopAsync(cts.Token); } return(data); }