public void GetFriendlyBytes_ParsesKB_ExpectedBehavior() { // Arrange var value = 4 * 1024L; int decimalPlaces = 1; // Act var result = DisplayUtil.GetFriendlyBytes(value, decimalPlaces); // Assert Assert.AreEqual("4.0 KB", result); mockRepository.VerifyAll(); }
public override ColorTextBuilder Write(object parameters = null) { var allReports = (IEnumerable <DataEvent>)parameters; var builder = new ColorTextBuilder(); var totalDuration = _runContext.Elapsed; var isPassed = allReports.Sum(x => x.Failed) == 0; if (_configuration.GenerateReportType.HasFlag(GenerateReportType.PassFail)) { var statusColor = _colorScheme.Error; var successColor = _colorScheme.Default; var failuresColor = _colorScheme.Default; var errorsColor = _colorScheme.Default; var warningsColor = _colorScheme.Default; var allSuccess = allReports.Sum(x => x.Failed) == 0; var anyFailure = allReports.Sum(x => x.Failed) > 0; var testCount = allReports.Sum(x => x.TestCount); var passed = allReports.Sum(x => x.Passed); var failed = allReports.Sum(x => x.Failed); var warnings = allReports.Sum(x => x.Warnings); var asserts = allReports.Sum(x => x.Asserts); var inconclusive = allReports.Sum(x => x.Inconclusive); var errors = allReports.SelectMany(x => x.Report.TestReports.Where(t => t.TestStatus == TestStatus.Fail && !string.IsNullOrEmpty(t.ErrorMessage))).Count(); var skipped = allReports.Sum(x => x.Skipped); var totalRuns = allReports.GroupBy(x => x.RunNumber).Count(); if (allSuccess) { successColor = _colorScheme.Success; statusColor = _colorScheme.Success; } if (failed > 0) { failuresColor = _colorScheme.Error; } if (errors > 0) { errorsColor = _colorScheme.DarkError; } if (warnings > 0) { warningsColor = _colorScheme.DarkHighlight; } WriteSquareBox(builder, "Test Run Summary"); builder.Append($" Overall result: ", _colorScheme.Default); builder.AppendLine(isPassed ? "Passed" : "Failed", statusColor); builder.Append($" Duration: ", _colorScheme.Default); builder.Append($"{testCount:N0} ", _colorScheme.Bright); builder.Append($"tests run in ", _colorScheme.Default); builder.AppendLine($"{totalDuration.ToTotalElapsedTime()}", _colorScheme.Duration); builder.AppendLine(""); builder.Append($" Test Runs: ", _colorScheme.Default); builder.AppendLine($"{totalRuns}", _colorScheme.Bright); builder.Append($" Test Count: ", _colorScheme.Default); builder.Append($"{testCount:N0}", _colorScheme.Bright); builder.Append($", Passed: ", _colorScheme.Default); builder.Append($"{passed:N0}", successColor); builder.Append($", Failed: ", _colorScheme.Default); builder.AppendLine($"{failed:N0}", failuresColor); builder.Append($" Errors: ", _colorScheme.DarkDefault); builder.Append($"{errors:N0}", errorsColor); builder.Append($", Warnings: ", _colorScheme.DarkDefault); builder.Append($"{warnings:N0}", warningsColor); builder.Append($", Ignored: ", _colorScheme.DarkDefault); builder.AppendLine($"{skipped}", _colorScheme.Default); builder.Append($" Asserts: ", _colorScheme.DarkDefault); builder.Append($"{asserts:N0}", _colorScheme.Default); builder.Append($", Inconclusive: ", _colorScheme.DarkDefault); builder.AppendLine($"{inconclusive:N0}", _colorScheme.Default); if (_runContext.Runs?.Any() == true) { builder.Append($" Peak Cpu: ", _colorScheme.DarkDefault); builder.Append($"{_runContext.Runs.Max(x => x.Key.Performance.PeakCpuUsed):N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{_runContext.Runs.Median(x => x.Key.Performance.MedianCpuUsed):N0}%", _colorScheme.Default); builder.Append($" Peak Memory: ", _colorScheme.DarkDefault); builder.Append($"{DisplayUtil.GetFriendlyBytes((long)_runContext.Runs.Max(x => x.Key.Performance.PeakMemoryUsed))}", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{DisplayUtil.GetFriendlyBytes((long)_runContext.Runs.Median(x => x.Key.Performance.MedianMemoryUsed))}", _colorScheme.Default); builder.Append($" Peak Disk Time: ", _colorScheme.DarkDefault); builder.Append($"{_runContext.Runs.Max(x => x.Key.Performance.PeakDiskTime):N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{_runContext.Runs.Median(x => x.Key.Performance.MedianDiskTime):N0}%", _colorScheme.Default); builder.Append($" Peak Test Concurrency: ", _colorScheme.DarkDefault); builder.Append($"{_runContext.Runs.Max(x => x.Key.Performance.PeakTestConcurrency):N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{_runContext.Runs.Max(x => x.Key.Performance.MedianTestConcurrency):N0}%", _colorScheme.Default); builder.Append($" Peak Test Fixture Concurrency: ", _colorScheme.DarkDefault); builder.Append($"{_runContext.Runs.Max(x => x.Key.Performance.PeakTestFixtureConcurrency):N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{_runContext.Runs.Max(x => x.Key.Performance.MedianTestFixtureConcurrency):N0}%", _colorScheme.Default); builder.Append($" Peak Assembly Concurrency: ", _colorScheme.DarkDefault); builder.Append($"{_runContext.Runs.Max(x => x.Key.Performance.PeakAssemblyConcurrency):N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{_runContext.Runs.Max(x => x.Key.Performance.MedianAssemblyConcurrency):N0}%", _colorScheme.Default); } builder.AppendLine(Environment.NewLine); } return(builder); }
public override ColorTextBuilder Write(object parameters = null) { var allReports = (IEnumerable<DataEvent>)parameters; var builder = new ColorTextBuilder(); var totalDuration = TimeSpan.FromTicks(allReports.Sum(x => x.Duration.Ticks)); var isPassed = allReports.Sum(x => x.Failed) == 0; if (_runContext.Runs.Count > 1) { var runNumber = 0; foreach (var run in _runContext.Runs) { runNumber++; var allSuccess = run.Value.Sum(x => x.Failed) == 0; var anyFailure = run.Value.Sum(x => x.Failed) > 0; var statusColor = _colorScheme.Error; var successColor = _colorScheme.Default; var failuresColor = _colorScheme.Default; var errorsColor = _colorScheme.Default; var warningsColor = _colorScheme.Default; var testRunner = run.Value.Select(x => x.TestRunner).FirstOrDefault(); var testRuntime = run.Value.Select(x => x.Runtime).FirstOrDefault(); var testCount = run.Value.Sum(x => x.TestCount); var passed = run.Value.Sum(x => x.Passed); var failed = run.Value.Sum(x => x.Failed); var warnings = run.Value.Sum(x => x.Warnings); var asserts = run.Value.Sum(x => x.Asserts); var inconclusive = run.Value.Sum(x => x.Inconclusive); var errors = run.Value.SelectMany(x => x.Report.TestReports.Where(t => t.TestStatus == TestStatus.Fail && !string.IsNullOrEmpty(t.ErrorMessage))).Count(); var skipped = run.Value.Sum(x => x.Skipped); var totalRuns = run.Value.GroupBy(x => x.RunNumber).Count(); if (allSuccess) { successColor = _colorScheme.Success; statusColor = _colorScheme.Success; } if (failed > 0) failuresColor = _colorScheme.Error; if (errors > 0) errorsColor = _colorScheme.DarkError; if (warnings > 0) warningsColor = _colorScheme.DarkHighlight; WriteRoundBox(builder, $"Test Run #{runNumber} Summary", 0, _colorScheme.DarkHighlight); builder.Append($" Result: ", _colorScheme.Default); builder.AppendLine(allSuccess ? "Passed" : "Failed", statusColor); builder.Append($" Duration: ", _colorScheme.Default); builder.Append($"{testCount:N0} ", _colorScheme.Bright); builder.Append($"tests run in ", _colorScheme.Default); builder.AppendLine($"{run.Key.EndTime.Subtract(run.Key.StartTime).ToTotalElapsedTime()}", _colorScheme.Duration); builder.Append($" Test Framework: ", _colorScheme.Default); builder.AppendLine($"{testRuntime:N0} ", _colorScheme.Bright); builder.Append($" Test Runner: ", _colorScheme.DarkDefault); builder.AppendLine($"{testRunner:N0} ", _colorScheme.Default); builder.AppendLine(""); builder.Append($" Test Runs: ", _colorScheme.Default); builder.AppendLine($"{totalRuns}", _colorScheme.Bright); builder.Append($" Test Count: ", _colorScheme.Default); builder.Append($"{testCount:N0}", _colorScheme.Bright); builder.Append($", Passed: ", _colorScheme.Default); builder.Append($"{passed:N0}", successColor); builder.Append($", Failed: ", _colorScheme.Default); builder.AppendLine($"{failed:N0}", failuresColor); builder.Append($" Errors: ", _colorScheme.DarkDefault); builder.Append($"{errors:N0}", errorsColor); builder.Append($", Warnings: ", _colorScheme.DarkDefault); builder.Append($"{warnings:N0}", warningsColor); builder.Append($", Ignored: ", _colorScheme.DarkDefault); builder.AppendLine($"{skipped}", _colorScheme.Default); builder.Append($" Asserts: ", _colorScheme.DarkDefault); builder.Append($"{asserts:N0}", _colorScheme.Default); builder.Append($", Inconclusive: ", _colorScheme.DarkDefault); builder.AppendLine($"{inconclusive:N0}", _colorScheme.Default); builder.Append($" Peak Cpu: ", _colorScheme.DarkDefault); builder.Append($"{run.Key.Performance.PeakCpuUsed:N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{run.Key.Performance.MedianCpuUsed:N0}%", _colorScheme.Default); builder.Append($" Peak Memory: ", _colorScheme.DarkDefault); builder.Append($"{DisplayUtil.GetFriendlyBytes((long)run.Key.Performance.PeakMemoryUsed)}", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{DisplayUtil.GetFriendlyBytes((long)run.Key.Performance.MedianMemoryUsed)}", _colorScheme.Default); builder.Append($" Peak Disk Time: ", _colorScheme.DarkDefault); builder.Append($"{run.Key.Performance.PeakDiskTime:N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{run.Key.Performance.MedianDiskTime:N0}%", _colorScheme.Default); builder.Append($" Peak Test Concurrency: ", _colorScheme.DarkDefault); builder.Append($"{run.Key.Performance.PeakTestConcurrency:N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{run.Key.Performance.MedianTestConcurrency:N0}%", _colorScheme.Default); builder.Append($" Peak Test Fixture Concurrency: ", _colorScheme.DarkDefault); builder.Append($"{run.Key.Performance.PeakTestFixtureConcurrency:N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{run.Key.Performance.MedianTestFixtureConcurrency:N0}%", _colorScheme.Default); builder.Append($" Peak Assembly Concurrency: ", _colorScheme.DarkDefault); builder.Append($"{run.Key.Performance.PeakAssemblyConcurrency:N0}%", _colorScheme.Default); builder.Append($", Median: ", _colorScheme.DarkDefault); builder.AppendLine($"{run.Key.Performance.MedianAssemblyConcurrency:N0}%", _colorScheme.Default); builder.Append($" Run Id: ", _colorScheme.Default); builder.AppendLine(run.Key.CommanderRunId.ToString(), _colorScheme.DarkDefault); builder.AppendLine(Environment.NewLine); } } return builder; }