public void WriteReport(PerformanceTestRunResult[] results, uint sigFig = 2,
                                string reportDirectoryPath = null, bool hasBenchmarkResults = false)
        {
            if (results != null && results.Length > 0)
            {
                Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

                thisSigFig = sigFig;
                thisHasBenchmarkResults = hasBenchmarkResults;
                perfTestRunResults      = results;
                baselineResults         = results.FirstOrDefault(r => r.IsBaseline);
                SetDistinctTestNames();
                SetDistinctSampleGroupNames();

                var reportDirectory = EnsureBenchmarkDirectory(reportDirectoryPath);
                WriteEmbeddedResourceFiles(reportDirectory);
                var benchmarkReportFile = GetBenchmarkReportFile(reportDirectory);
                using (var rw = new StreamWriter(benchmarkReportFile))
                {
                    System.Console.WriteLine($"Writing Report To: {reportDirectory.FullName}");
                    System.Console.WriteLine($"");
                    WriteHtmlReport(rw);
                }
            }
            else
            {
                throw new ArgumentNullException(nameof(results),
                                                "PerformanceTestRun results list is empty. No report will be written.");
            }
        }
        public void WriteReport(PerformanceTestRunResult[] results, uint sigFig = 2,
                                string reportDirectoryPath = null, string reportHtmlName = null, bool hasBenchmarkResults = false)
        {
            if (results != null && results.Length > 0)
            {
                thisSigFig = sigFig;
                thisHasBenchmarkResults = hasBenchmarkResults;
                perfTestRunResults      = results;
                baselineResults         = results.FirstOrDefault(r => r.IsBaseline);
                SetDistinctTestNames();
                SetDistinctSampleGroupNames();

                var reportDirectory = EnsureBenchmarkDirectory(reportDirectoryPath);
                WriteEmbeddedResourceFiles(reportDirectory);
                var benchmarkReportFile = GetBenchmarkReportFile(reportDirectory, reportHtmlName);
                using (var rw = new StreamWriter(benchmarkReportFile))
                {
                    WriteHtmlReport(rw);
                }
            }
            else
            {
                throw new ArgumentNullException(nameof(results),
                                                "PerformanceTestRun results list is empty. No report will be written.");
            }
        }
Example #3
0
        private void EnsureOrderedResults(List <PerformanceTestRunResult> results)
        {
            baselineResults = results.FirstOrDefault(r => r.IsBaseline);
            if (baselineResults != null)
            {
                perfTestRunResults.Add(baselineResults);
            }

            var tempResults = results.Where(r => !r.IsBaseline).ToList();

            tempResults.Sort((x, y) => DateTime.Compare(x.StartTime, y.StartTime));
            perfTestRunResults.AddRange(tempResults);
        }
Example #4
0
        public PerformanceTestRunResult CreateTestRunResult(PerformanceTestRun runResults,
                                                            List <TestResult> testResults, string resultName, bool isBaseline = false)
        {
            var performanceTestRunResult = new PerformanceTestRunResult
            {
                ResultName = resultName,
                IsBaseline = isBaseline,
                TestSuite  = runResults.TestSuite,
                StartTime  =
                    new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(
                        runResults.StartTime),
                TestResults      = testResults,
                PlayerSystemInfo = runResults.PlayerSystemInfo,
                EditorVersion    = runResults.EditorVersion,
                BuildSettings    = runResults.BuildSettings,
                ScreenSettings   = runResults.ScreenSettings,
                QualitySettings  = runResults.QualitySettings,
                PlayerSettings   = runResults.PlayerSettings
            };

            return(performanceTestRunResult);
        }
Example #5
0
        private static void Main(string[] args)
        {
            var aggregateTestRunResults           = new List <PerformanceTestRunResult>();
            var baselinePerformanceTestRunResults = new List <PerformanceTestRunResult>();
            var baselineTestResults       = new List <TestResult>();
            var performanceTestRunResults = new List <PerformanceTestRunResult>();
            var testResults          = new List <TestResult>();
            var performanceBenchmark = new PerformanceBenchmark(ExcludedConfigFieldNames);
            var optionsParser        = new OptionsParser();

            optionsParser.ParseOptions(performanceBenchmark, args);
            var testResultXmlParser = new TestResultXmlParser();

            if (performanceBenchmark.BaselineResultFilesExist)
            {
                performanceBenchmark.AddBaselinePerformanceTestRunResults(testResultXmlParser, baselinePerformanceTestRunResults, baselineTestResults);

                if (baselinePerformanceTestRunResults.Any())
                {
                    aggregateTestRunResults.AddRange(baselinePerformanceTestRunResults);
                }
                else
                {
                    Environment.Exit(1);
                }
            }

            if (performanceBenchmark.ResultFilesExist)
            {
                performanceBenchmark.AddPerformanceTestRunResults(testResultXmlParser, performanceTestRunResults, testResults, baselineTestResults);

                if (performanceTestRunResults.Any())
                {
                    aggregateTestRunResults.AddRange(performanceTestRunResults);
                }
                else
                {
                    Environment.Exit(1);
                }
            }

            var performanceTestResults = new PerformanceTestRunResult[0];

            if (aggregateTestRunResults.Any(a => a.IsBaseline))
            {
                Array.Resize(ref performanceTestResults, 1);
                performanceTestResults[0] = aggregateTestRunResults.First(a => a.IsBaseline);
            }

            var nonBaselineTestRunResults = aggregateTestRunResults.Where(a => !a.IsBaseline).ToList();

            nonBaselineTestRunResults.Sort((run1, run2) => string.Compare(run1.ResultName, run2.ResultName, StringComparison.Ordinal));


            foreach (var performanceTestRunResult in nonBaselineTestRunResults)
            {
                Array.Resize(ref performanceTestResults, performanceTestResults.Length + 1);
                performanceTestResults[performanceTestResults.Length - 1] = performanceTestRunResult;
            }


            var reportWriter = new ReportWriter(performanceBenchmark.TestRunMetadataProcessor);

            reportWriter.WriteReport(
                performanceTestResults,
                performanceBenchmark.SigFig,
                performanceBenchmark.ReportDirPath,
                performanceBenchmark.ReportHtmlName,
                performanceBenchmark.BaselineResultFilesExist);
        }
Example #6
0
        private static int Main(string[] args)
        {
            var aggregateTestRunResults           = new List <PerformanceTestRunResult>();
            var baselinePerformanceTestRunResults = new List <PerformanceTestRunResult>();
            var baselineTestResults       = new List <TestResult>();
            var performanceTestRunResults = new List <PerformanceTestRunResult>();
            var testResults          = new List <TestResult>();
            var performanceBenchmark = new PerformanceBenchmark(ExcludedConfigFieldNames);
            var optionsParser        = new OptionsParser();

            optionsParser.ParseOptions(performanceBenchmark, args);
            var testResultXmlParser = new TestResultXmlParser();

            if (performanceBenchmark.BaselineResultFilesExist)
            {
                performanceBenchmark.AddBaselinePerformanceTestRunResults(testResultXmlParser, baselinePerformanceTestRunResults, baselineTestResults);

                if (baselinePerformanceTestRunResults.Any())
                {
                    aggregateTestRunResults.AddRange(baselinePerformanceTestRunResults);
                }
                else
                {
                    Environment.Exit(1);
                }
            }

            if (performanceBenchmark.ResultFilesExist)
            {
                performanceBenchmark.AddPerformanceTestRunResults(testResultXmlParser, performanceTestRunResults, testResults, baselineTestResults);

                if (performanceTestRunResults.Any())
                {
                    aggregateTestRunResults.AddRange(performanceTestRunResults);
                }
                else
                {
                    Environment.Exit(1);
                }
            }

            var performanceTestResults = new PerformanceTestRunResult[0];

            // If we have a baseline
            if (aggregateTestRunResults.Any(a => a.IsBaseline))
            {
                // Insert the baseline in the front of the array results; this way we can display the baseline first in the report
                Array.Resize(ref performanceTestResults, 1);
                performanceTestResults[0] = aggregateTestRunResults.First(a => a.IsBaseline);
            }

            var nonBaselineTestRunResults = aggregateTestRunResults.Where(a => !a.IsBaseline).ToList();

            nonBaselineTestRunResults.Sort((run1, run2) => string.Compare(run1.ResultName, run2.ResultName, StringComparison.Ordinal));


            foreach (var performanceTestRunResult in nonBaselineTestRunResults)
            {
                Array.Resize(ref performanceTestResults, performanceTestResults.Length + 1);
                performanceTestResults[performanceTestResults.Length - 1] = performanceTestRunResult;
            }

            performanceBenchmark.TestRunMetadataProcessor.PerformFinalMetadataUpdate(performanceBenchmark);

            var reportWriter = new ReportWriter(performanceBenchmark.TestRunMetadataProcessor);

            reportWriter.WriteReport(
                performanceTestResults,
                performanceBenchmark.SigFig,
                performanceBenchmark.ReportDirPath,
                performanceBenchmark.BaselineResultFilesExist);

            return(WriteFailedTestsAndMetricsToConsole(performanceTestResults, performanceBenchmark));
        }