private MeasurementResult DeterminePerformanceResult(SampleGroupResult sampleGroup, uint sigFig) { var measurementResult = MeasurementResult.Neutral; var positiveThresholdValue = sampleGroup.BaselineValue + sampleGroup.BaselineValue * sampleGroup.Threshold; var negativeThresholdValue = sampleGroup.BaselineValue - sampleGroup.BaselineValue * sampleGroup.Threshold; if (sampleGroup.IncreaseIsBetter) { if (sampleGroup.AggregatedValue.TruncToSigFig(sigFig) < negativeThresholdValue.TruncToSigFig(sigFig)) { measurementResult = MeasurementResult.Regression; } if (sampleGroup.AggregatedValue.TruncToSigFig(sigFig) > positiveThresholdValue.TruncToSigFig(sigFig)) { measurementResult = MeasurementResult.Progression; } } else { if (sampleGroup.AggregatedValue.TruncToSigFig(sigFig) > positiveThresholdValue.TruncToSigFig(sigFig)) { measurementResult = MeasurementResult.Regression; } if (sampleGroup.AggregatedValue.TruncToSigFig(sigFig) < negativeThresholdValue.TruncToSigFig(sigFig)) { measurementResult = MeasurementResult.Progression; } } return(measurementResult); }
public List <TestResult> GetTestResults( PerformanceTestRun performanceTestRun) { var mergedTestExecutions = MergeTestExecutions(performanceTestRun); var performanceTestResults = new List <TestResult>(); foreach (var testName in mergedTestExecutions.Keys) { var performanceTestResult = new TestResult { TestName = testName, TestCategories = performanceTestRun.Results.First(r => r.TestName == testName).TestCategories, TestVersion = performanceTestRun.Results.First(r => r.TestName == testName).TestVersion, State = (int)TestState.Success, SampleGroupResults = new List <SampleGroupResult>() }; foreach (var sampleGroup in mergedTestExecutions[testName]) { var sampleGroupResult = new SampleGroupResult { SampleGroupName = sampleGroup.Definition.Name, SampleUnit = sampleGroup.Definition.SampleUnit.ToString(), IncreaseIsBetter = sampleGroup.Definition.IncreaseIsBetter, Threshold = sampleGroup.Definition.Threshold, AggregationType = sampleGroup.Definition.AggregationType.ToString(), Percentile = sampleGroup.Definition.Percentile, Min = sampleGroup.Min, Max = sampleGroup.Max, Median = sampleGroup.Median, Average = sampleGroup.Average, StandardDeviation = sampleGroup.StandardDeviation, PercentileValue = sampleGroup.PercentileValue, Sum = sampleGroup.Sum, Zeroes = sampleGroup.Zeroes, SampleCount = sampleGroup.SampleCount, BaselineValue = -1, AggregatedValue = GetAggregatedSampleValue(sampleGroup) }; performanceTestResult.SampleGroupResults.Add(sampleGroupResult); } performanceTestResults.Add(performanceTestResult); } return(performanceTestResults); }