public void Test_404() { var monitor = new HttpMonitor(); var result = monitor.CheckHealth(@"https://httpstat.us/404"); Assert.AreEqual(HealthStatus.NotExists, result.Status); }
public void Test_503() { var monitor = new HttpMonitor(); var result = monitor.CheckHealth(@"https://httpstat.us/503"); Assert.AreEqual(HealthStatus.Offline, result.Status); }
public void Test_200() { var monitor = new HttpMonitor(); var result = monitor.CheckHealth(@"https://httpstat.us/200"); Assert.AreEqual(HealthStatus.Healthy, result.Status); }
private HealthReport InternalCheckHealth() { var result = new HealthReport(); //calculate httpMonitor timeout based on the check interval (1 minute for instance) substracted with 5 seconds var timeout = TimeSpan.FromMinutes(_endpoint.CheckInterval).Subtract(TimeSpan.FromSeconds(5)).TotalSeconds; var monitor = new HttpMonitor(_endpoint.Id.ToString(), _httpClientFactory, _tokenService, timeout, _logger); var sw = Stopwatch.StartNew(); var info = monitor.CheckHealth(_endpoint.Url); result.TimeStamp = DateTime.UtcNow; sw.Stop(); result.ResponseTime = sw.ElapsedMilliseconds; result.Message = string.Empty; if (info.Details != null && info.Details.Any()) { if (info.Details.ContainsKey("code")) { result.Status = (HttpStatusCode)Enum.Parse(typeof(HttpStatusCode), info.Details["code"]); } if (info.Details.ContainsKey("content")) { result.Message = info.Details["content"]; } if (info.Details.ContainsKey("contentType")) { if (info.Details["contentType"].Contains("html")) { result.Message = "Unexpected html content"; } } } if (_endpoint.CheckType == (int)CheckType.AvailabilityCheck) { Validate(result); } else if (_endpoint.CheckType == (int)CheckType.ContentCheck) { ValidateCustom(result); } return(result); }