public static bool Evaluate(MetricsTestResult result, out string message) { var withinThresholds = result.LowerBoundThreshold <= result.PercentDiff && result.PercentDiff <= result.UpperBoundThreshold; message = withinThresholds ? $"Test for {result.MetricName} succeeded as {result.PercentDiff:0.##}% is within {result.LowerBoundThreshold:0.##}% and {result.UpperBoundThreshold:0.##}%." : MetricsTestResult.ConstructFailureMessage(result); return(withinThresholds); }
public static void Evaluate( IEnumerable <MetricsTestResult> results, out string accumulatedMessage, out bool accumulatedWithinThresholds) { accumulatedMessage = string.Empty; accumulatedWithinThresholds = true; foreach (var result in results) { // If thresholds are not set properly, default to failure string message; bool withinThresholds = MetricsTestResult.Evaluate(result, out message); accumulatedMessage += message; accumulatedWithinThresholds &= withinThresholds; } }
/// <summary> /// Constructs the failure message. /// </summary> /// <param name="result">The result.</param> /// <returns>System.String.</returns> public static string ConstructFailureMessage(MetricsTestResult result) { var failureMessage = $"Date {result.Date:d}, Metric {result.MetricName}"; if (result.PercentDiff < result.LowerBoundThreshold) { failureMessage += $"Lower bound threshold: {result.LowerBoundThreshold}%"; } else if (result.PercentDiff > result.UpperBoundThreshold) { failureMessage += $"Upper bound threshold: {result.UpperBoundThreshold}%"; } failureMessage += $", Breached threshold: {result.PercentDiff:0.##}%."; return(failureMessage); }