in GoogleTestAdapter/Core/Scheduling/SchedulingAnalyzer.cs [42:78]
public void PrintStatisticsToDebugOutput()
{
_logger.DebugInfo(Resources.SchedulingStats);
_logger.DebugInfo(String.Format(Resources.ExpectedTestCase, ExpectedTestcaseDurations.Count));
_logger.DebugInfo(String.Format(Resources.ActualTestCase, ActualTestcaseDurations.Count));
if (ExpectedTestcaseDurations.Count == 0 || ActualTestcaseDurations.Count == 0)
{
_logger.DebugInfo(Resources.NothingToReport);
return;
}
var differences = new List<Difference>();
differences.AddRange(ExpectedTestcaseDurations
.Where(ed => ActualTestcaseDurations.ContainsKey(ed.Key))
.Select(ed => new Difference
{
TestCase = ed.Key,
DifferenceInMs = ed.Value - ActualTestcaseDurations[ed.Key]
}));
differences.Sort((d1, d2) => Math.Abs(d2.DifferenceInMs) - Math.Abs(d1.DifferenceInMs));
int sumOfAllDifferences = differences.Select(d => d.DifferenceInMs).Sum();
double avgDifference = (double) sumOfAllDifferences / differences.Count;
double sumOfSquaresOfDifferences = differences.Select(d => (d.DifferenceInMs - avgDifference) * (d.DifferenceInMs - avgDifference)).Sum();
double standardDeviation = Math.Sqrt(sumOfSquaresOfDifferences / differences.Count);
_logger.DebugInfo(String.Format(Resources.ExpectedDurations, differences.Count));
_logger.DebugInfo(String.Format(Resources.AvgDifference, avgDifference.ToString("F1", CultureInfo.InvariantCulture)));
_logger.DebugInfo(String.Format(Resources.StandardDeviation, standardDeviation.ToString("F1", CultureInfo.InvariantCulture)));
int nrOfWorstDifferences = Math.Min(10, differences.Count);
_logger.DebugInfo(String.Format(Resources.WorstDifferences, nrOfWorstDifferences));
for (int i = 0; i < nrOfWorstDifferences; i++)
{
_logger.DebugInfo(String.Format(Resources.Results, differences[i].TestCase.FullyQualifiedName, ExpectedTestcaseDurations[differences[i].TestCase], ActualTestcaseDurations[differences[i].TestCase]));
}
}