public CheckResultTests() { var ck2 = new HttpCheck(2, Env, Srv, TimeSpan.FromMinutes(15), new Uri("http://remotehost"), new List <HttpCheckCondition> { Cnd }, HttpCheck.HttpMethod.Get); var rs3 = new ConditionResultDetail("status", true, "Good but slow"); var now = DateTimeOffset.UtcNow; _checkResultA1 = CreateCheckResult(); _checkResultA1Clone = new CheckResult(Ck1, now, CheckOutcome.Success, new List <ConditionResultDetail> { Rs1 }); _checkResultA2 = new CheckResult(Ck1, now.AddHours(1), CheckOutcome.Success, new List <ConditionResultDetail> { Rs1 }); _checkResultB1 = new CheckResult(ck2, now, CheckOutcome.Success, new List <ConditionResultDetail> { Rs1 }); _checkResultC1 = new CheckResult(Ck1, now.AddHours(1), CheckOutcome.Fail, new List <ConditionResultDetail> { Rs2 }); _checkResultD1 = new CheckResult(Ck1, now.AddHours(1), CheckOutcome.Success, new List <ConditionResultDetail> { rs3 }); }
public CheckResult Check(CheckBase checkBase) { if (checkBase == null) { throw new ArgumentNullException(nameof(checkBase)); } var httpCheck = checkBase as HttpCheck; if (httpCheck == null) { throw new ArgumentException("check is not of type HttpCall"); } var result = HttpUtil.GetContentFromUrl( httpCheck.Url, httpCheck.ConnectTimeout, httpCheck.ReadTimeout, _readBufferSize, _connectSleepMilliseconds, httpCheck.MaxContentLength); var now = _timeService.UtcNow; var conditionResults = new List <ConditionResultDetail>(); foreach (var conditionBase in httpCheck.Conditions) { var condition = (HttpCheckCondition)conditionBase; string checkMessage; switch (condition.Type) { case HttpCheckConditionType.Status: checkMessage = CheckStatus(result, (HttpStatusCondition)condition); break; case HttpCheckConditionType.Content: checkMessage = CheckContent(result, (HttpContentCondition)condition); break; // ReSharper disable once RedundantCaseLabel case HttpCheckConditionType.Undefined: default: throw new ArgumentOutOfRangeException(nameof(checkBase), condition.Type, "condition has no type"); } var conditionResult = new ConditionResultDetail(condition.Name, string.IsNullOrEmpty(checkMessage), checkMessage); conditionResults.Add(conditionResult); if (!conditionResult.Success && condition.StopOnFail) { break; } } var outcome = conditionResults.All(c => c.Success) ? CheckOutcome.Success : CheckOutcome.Fail; return(new CheckResult(checkBase, now, outcome, conditionResults)); }