diff --git a/src/VirtualClient/VirtualClient.Actions.UnitTests/Examples/SPECjbb/specjbbNanOutput1.txt b/src/VirtualClient/VirtualClient.Actions.UnitTests/Examples/SPECjbb/specjbbNanOutput1.txt new file mode 100644 index 0000000000..7e71a23455 --- /dev/null +++ b/src/VirtualClient/VirtualClient.Actions.UnitTests/Examples/SPECjbb/specjbbNanOutput1.txt @@ -0,0 +1,277 @@ + +SPECjbb2015 Java Business Benchmark + (c) Standard Performance Evaluation Corporation, 2015 + +Preparing to launch SPECjbb2015 reporter. + +Reading property file: /home/junovmadmin/nuget/packages/virtualclient/1.13.2568.1195/content/linux-x64/packages/specjbb.2015.0.0/./config/specjbb2015.props +Report directory is result/specjbb2015-C-20240711-00001/report-00001 + 6613s: Building report... + + 461 msec: Pre-reading source + 0 msec: Validation + 0 msec: Printing JbbProperties + 0 msec: Controller time verification + 1 msec: Build report with HW/SW parameters + 2 msec: Dump run logs + 17 msec: Parsing attributes + 2 msec: Parsing agent names + 24 msec: Building throughput - response time curve +RUN RESULT: hbIR (max attempted) = 304872, hbIR (settled) = N/A, max-jOPS = 234751, critical-jOPS = N/A + 15 msec: Primary metrics calculation + 42 msec: Render Allowed Failures + 140 msec: [FAILED] Render IR by probes tasks +java.lang.InternalError: java.lang.reflect.InvocationTargetException +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75) +\tat java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:248) +\tat java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:266) +\tat java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:863) +\tat org.jfree.text.G2TextMeasurer.getStringWidth(G2TextMeasurer.java:79) +\tat org.jfree.text.TextUtilities.nextLineBreak(TextUtilities.java:306) +\tat org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:247) +\tat org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:628) +\tat org.jfree.chart.title.TextTitle.arrange(TextTitle.java:496) +\tat org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1311) +\tat org.jfree.chart.JFreeChart.draw(JFreeChart.java:1203) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1399) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1379) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1364) +\tat org.spec.jbb.reporter.Reporter.render(Reporter.java:817) +\tat org.spec.jbb.reporter.tasks.RenderRTTask$RenderIRByProbesTask.innerCompute(RenderRTTask.java:591) +\tat org.spec.jbb.reporter.tasks.AbstractReporterTask.compute(AbstractReporterTask.java:37) +\tat java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) +\tat java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) +\tat java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) +\tat java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) +\tat java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) +\tat java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) + 125 msec: [FAILED] Request Mix accuracy +Caused by: java.lang.reflect.InvocationTargetException +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) +\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) +\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) +\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85) +\t... 24 more +Caused by: java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration +\tat java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1271) +\tat java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) +\tat java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) +\tat java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.SunFontManager.(SunFontManager.java:315) +\tat java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35) +\tat java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56) +\t... 30 more +java.lang.InternalError: java.lang.reflect.InvocationTargetException +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75) +\tat java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:248) +\tat java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:266) +\tat java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:863) +\tat org.jfree.text.G2TextMeasurer.getStringWidth(G2TextMeasurer.java:79) +\tat org.jfree.text.TextUtilities.nextLineBreak(TextUtilities.java:306) +\tat org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:247) +\tat org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:628) +\tat org.jfree.chart.title.TextTitle.arrange(TextTitle.java:496) +\tat org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1311) +\tat org.jfree.chart.JFreeChart.draw(JFreeChart.java:1203) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1399) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1379) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1364) + 165 msec: [FAILED] Render IR/PR Accuracy +\tat org.spec.jbb.reporter.Reporter.render(Reporter.java:817) +\tat org.spec.jbb.reporter.tasks.RequestMixValidation.innerCompute(RequestMixValidation.java:222) +\tat org.spec.jbb.reporter.tasks.AbstractReporterTask.compute(AbstractReporterTask.java:37) +\tat java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) +\tat java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) +\tat java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) +\tat java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) +\tat java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) +\tat java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) +Caused by: java.lang.reflect.InvocationTargetException +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) +\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) +\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) +\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85) +\t... 24 more +Caused by: java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration +\tat java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1271) +\tat java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) +\tat java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) +\tat java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.SunFontManager.(SunFontManager.java:315) +\tat java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35) +\tat java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56) +\t... 30 more +java.lang.InternalError: java.lang.reflect.InvocationTargetException +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75) +\tat java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:248) +\tat java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:266) +\tat java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:863) +\tat org.jfree.text.G2TextMeasurer.getStringWidth(G2TextMeasurer.java:79) + 141 msec: [FAILED] Overall RT curves +\tat org.jfree.text.TextUtilities.nextLineBreak(TextUtilities.java:306) +\tat org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:247) +\tat org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:628) +\tat org.jfree.chart.title.TextTitle.arrange(TextTitle.java:496) +\tat org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1311) +\tat org.jfree.chart.JFreeChart.draw(JFreeChart.java:1203) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1399) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1379) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1364) +\tat org.spec.jbb.reporter.Reporter.render(Reporter.java:817) +\tat org.spec.jbb.reporter.tasks.IRPRAccuracyTask.innerCompute(IRPRAccuracyTask.java:157) +\tat org.spec.jbb.reporter.tasks.AbstractReporterTask.compute(AbstractReporterTask.java:37) +\tat java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) +\tat java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) +\tat java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) +\tat java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) +\tat java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) +\tat java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) +Caused by: java.lang.reflect.InvocationTargetException +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) + 106 msec: [FAILED] Max Delay during RT curve building +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) +\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) +\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) +\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85) +\t... 24 more +Caused by: java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration +\tat java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1271) +\tat java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) +\tat java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) +\tat java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.SunFontManager.(SunFontManager.java:315) +\tat java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35) +\tat java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56) +\t... 30 more +java.lang.InternalError: java.lang.reflect.InvocationTargetException +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75) +\tat java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:248) +\tat java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:266) +\tat java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:863) +\tat org.jfree.text.G2TextMeasurer.getStringWidth(G2TextMeasurer.java:79) +\tat org.jfree.text.TextUtilities.nextLineBreak(TextUtilities.java:306) +\tat org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:247) +\tat org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:628) +\tat org.jfree.chart.title.TextTitle.arrange(TextTitle.java:496) +\tat org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1311) +\tat org.jfree.chart.JFreeChart.draw(JFreeChart.java:1203) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1399) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1379) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1364) +\tat org.spec.jbb.reporter.Reporter.render(Reporter.java:817) +\tat org.spec.jbb.reporter.tasks.RenderGetPerfDelay.generateChart(RenderGetPerfDelay.java:155) +\tat org.spec.jbb.reporter.tasks.RenderGetPerfDelay.innerCompute(RenderGetPerfDelay.java:103) +\tat org.spec.jbb.reporter.tasks.AbstractReporterTask.compute(AbstractReporterTask.java:37) +\tat java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) +\tat java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) +\tat java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) +\tat java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) +\tat java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) +\tat java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) +Caused by: java.lang.reflect.InvocationTargetException +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) +\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) +\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) +\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85) +\t... 25 more +Caused by: java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration +\tat java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1271) +\tat java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) +\tat java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) +\tat java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.SunFontManager.(SunFontManager.java:315) +\tat java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35) +\tat java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56) +\t... 31 more +java.lang.InternalError: java.lang.reflect.InvocationTargetException +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75) +\tat java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:248) +\tat java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:266) +\tat java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:871) +\tat org.jfree.text.TextFragment.calculateDimensions(TextFragment.java:230) +\tat org.jfree.text.TextLine.calculateDimensions(TextLine.java:194) +\tat org.jfree.text.TextBlock.calculateDimensions(TextBlock.java:171) +\tat org.jfree.chart.block.LabelBlock.arrange(LabelBlock.java:313) +\tat org.jfree.chart.block.BorderArrangement.arrangeNN(BorderArrangement.java:215) +\tat org.jfree.chart.block.BorderArrangement.arrange(BorderArrangement.java:141) +\tat org.jfree.chart.block.BlockContainer.arrange(BlockContainer.java:178) +\tat org.jfree.chart.block.CenterArrangement.arrangeNN(CenterArrangement.java:286) +\tat org.jfree.chart.block.CenterArrangement.arrange(CenterArrangement.java:100) +\tat org.jfree.chart.block.BlockContainer.arrange(BlockContainer.java:178) +\tat org.jfree.chart.block.FlowArrangement.arrangeNN(FlowArrangement.java:367) +\tat org.jfree.chart.block.FlowArrangement.arrangeRR(FlowArrangement.java:285) +\tat org.jfree.chart.block.FlowArrangement.arrange(FlowArrangement.java:160) +\tat org.jfree.chart.block.BlockContainer.arrange(BlockContainer.java:178) +\tat org.jfree.chart.title.LegendTitle.arrange(LegendTitle.java:540) +\tat org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1320) +\tat org.jfree.chart.JFreeChart.draw(JFreeChart.java:1214) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1399) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1379) +\tat org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1364) +\tat org.spec.jbb.reporter.Reporter.render(Reporter.java:817) +\tat org.spec.jbb.reporter.tasks.RenderRTTask$RenderRTCurvesTask.innerCompute(RenderRTTask.java:279) +\tat org.spec.jbb.reporter.tasks.AbstractReporterTask.compute(AbstractReporterTask.java:37) +\tat java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) +\tat java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) +\tat java.base/java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:814) +\tat org.spec.jbb.reporter.tasks.RenderRTTask.innerCompute(RenderRTTask.java:76) +\tat org.spec.jbb.reporter.tasks.AbstractReporterTask.compute(AbstractReporterTask.java:37) +\tat java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) +\tat java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) +\tat java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) +\tat java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) +\tat java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) +\tat java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) +Caused by: java.lang.reflect.InvocationTargetException +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) +\tat java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) +\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) +\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) +\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) +\tat java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85) +\t... 39 more +Caused by: java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration +\tat java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1271) +\tat java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) +\tat java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) +\tat java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358) +\tat java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315) +\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:318) +\tat java.desktop/sun.font.SunFontManager.(SunFontManager.java:315) +\tat java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35) +\tat java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56) +\t... 45 more + 0 msec: Render RT + 3 msec: Render template to file result/specjbb2015-C-20240711-00001/report-00001/data/specjbb2015-C-20240711-00001-runProperties.txt + 15 msec: Render template to file result/specjbb2015-C-20240711-00001/report-00001/specjbb2015-C-20240711-00001.html +Report generation finished. Wallclock = 767 msecs, real = 1259 msecs, parallelism = 1.64x diff --git a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioMetricsParserTests.cs b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioMetricsParserTests.cs index 1070c3b1a3..5f4b639bc6 100644 --- a/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioMetricsParserTests.cs +++ b/src/VirtualClient/VirtualClient.Actions.UnitTests/FIO/FioMetricsParserTests.cs @@ -245,8 +245,8 @@ public void FioResultsParserReadsTheExpectedMeasurementValuesFromTheResults_Read Assert.IsNotNull(metrics); Assert.IsNotEmpty(metrics); - IEnumerable> expectedValues = FioMetricsParserTests.ExpectedReadMetrics.Select(entry => new Tuple(entry.Key, entry.Value)); - IEnumerable> actualValues = metrics.Select(m => new Tuple(m.Name, m.Value)); + IEnumerable> expectedValues = FioMetricsParserTests.ExpectedReadMetrics.Select(entry => new Tuple(entry.Key, entry.Value)); + IEnumerable> actualValues = metrics.Select(m => new Tuple(m.Name, m.Value)); CollectionAssert.AreEquivalent(expectedValues, actualValues); } @@ -262,8 +262,8 @@ public void FioResultsParserReadsTheExpectedMeasurementValuesFromTheResults_Writ Assert.IsNotNull(metrics); Assert.IsNotEmpty(metrics); - IEnumerable> expectedValues = FioMetricsParserTests.ExpectedWriteMetrics.Select(entry => new Tuple(entry.Key, entry.Value)); - IEnumerable> actualValues = metrics.Select(m => new Tuple(m.Name, m.Value)); + IEnumerable> expectedValues = FioMetricsParserTests.ExpectedWriteMetrics.Select(entry => new Tuple(entry.Key, entry.Value)); + IEnumerable> actualValues = metrics.Select(m => new Tuple(m.Name, m.Value)); CollectionAssert.AreEquivalent(expectedValues, actualValues); } @@ -282,11 +282,11 @@ public void FioResultsParserAppliesTheExpectedDefaultConversionFactorToMeasureme // All latency metrics are emitted in milliseconds form (vs. nanoseconds). double expectedConversionFactor = 0.000001; - IEnumerable> expectedValues = FioMetricsParserTests.ExpectedReadMetrics.Where(entry => entry.Key.Contains("latency")) - .Select(entry => new Tuple(entry.Key, entry.Value * expectedConversionFactor)); + IEnumerable> expectedValues = FioMetricsParserTests.ExpectedReadMetrics.Where(entry => entry.Key.Contains("latency")) + .Select(entry => new Tuple(entry.Key, entry.Value * expectedConversionFactor)); - IEnumerable> actualValues = metrics.Where(m => m.Name.Contains("latency")) - .Select(m => new Tuple(m.Name, m.Value)); + IEnumerable> actualValues = metrics.Where(m => m.Name.Contains("latency")) + .Select(m => new Tuple(m.Name, m.Value)); Assert.IsTrue(expectedValues.Count() == actualValues.Count()); CollectionAssert.AreEquivalent(expectedValues, actualValues); @@ -306,11 +306,11 @@ public void FioResultsParserAppliesTheExpectedDefaultConversionFactorToMeasureme // All latency metrics are emitted in milliseconds form (vs. nanoseconds). double expectedConversionFactor = 0.000001; - IEnumerable> expectedValues = FioMetricsParserTests.ExpectedWriteMetrics.Where(entry => entry.Key.Contains("latency")) - .Select(entry => new Tuple(entry.Key, entry.Value * expectedConversionFactor)); + IEnumerable> expectedValues = FioMetricsParserTests.ExpectedWriteMetrics.Where(entry => entry.Key.Contains("latency")) + .Select(entry => new Tuple(entry.Key, entry.Value * expectedConversionFactor)); - IEnumerable> actualValues = metrics.Where(m => m.Name.Contains("latency")) - .Select(m => new Tuple(m.Name, m.Value)); + IEnumerable> actualValues = metrics.Where(m => m.Name.Contains("latency")) + .Select(m => new Tuple(m.Name, m.Value)); Assert.IsTrue(expectedValues.Count() == actualValues.Count()); CollectionAssert.AreEquivalent(expectedValues, actualValues); diff --git a/src/VirtualClient/VirtualClient.Actions.UnitTests/SPEC/SpecJbbMetricsParserTests.cs b/src/VirtualClient/VirtualClient.Actions.UnitTests/SPEC/SpecJbbMetricsParserTests.cs index ccb149ba9a..04126857fb 100644 --- a/src/VirtualClient/VirtualClient.Actions.UnitTests/SPEC/SpecJbbMetricsParserTests.cs +++ b/src/VirtualClient/VirtualClient.Actions.UnitTests/SPEC/SpecJbbMetricsParserTests.cs @@ -40,5 +40,22 @@ public void SpecJbbParserVerifyMetricsFpRate() MetricAssert.Exists(metrics, "max-jOPS", 4188, "jOPS"); MetricAssert.Exists(metrics, "critical-jOPS", 1666, "jOPS"); } + + + [Test] + public void SpecJbbParserVerifyNanMetricsFpRate() + { + string workingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + string outputPath = Path.Combine(workingDirectory, "Examples", "SPECjbb", "specjbbNanOutput1.txt"); + this.rawText = File.ReadAllText(outputPath); + this.testParser = new SpecJbbMetricsParser(this.rawText); + IList metrics = this.testParser.Parse(); + + Assert.AreEqual(4, metrics.Count); + MetricAssert.Exists(metrics, "hbIR (max attempted)", 304872, "jOPS"); + MetricAssert.Exists(metrics, "hbIR (settled)", null, "jOPS"); + MetricAssert.Exists(metrics, "max-jOPS", 234751, "jOPS"); + MetricAssert.Exists(metrics, "critical-jOPS", null , "jOPS"); + } } } \ No newline at end of file diff --git a/src/VirtualClient/VirtualClient.Actions/3DMark/ThreeDMarkExecutor.cs b/src/VirtualClient/VirtualClient.Actions/3DMark/ThreeDMarkExecutor.cs index 96792358c5..9ca2555d54 100644 --- a/src/VirtualClient/VirtualClient.Actions/3DMark/ThreeDMarkExecutor.cs +++ b/src/VirtualClient/VirtualClient.Actions/3DMark/ThreeDMarkExecutor.cs @@ -344,9 +344,9 @@ private Task ExecuteWorkloadAsync(EventContext telemetryContext, CancellationTok private IList CalculateTimeSpyAggregates(IList metrics) { IList aggregates = new List(); - double tsgt1 = 0; - double tsgt2 = 0; - double tsct = 0; + double? tsgt1 = 0; + double? tsgt2 = 0; + double? tsct = 0; foreach (Metric metric in metrics) { if (metric.Name == "timespy.graphics.1") @@ -366,9 +366,9 @@ private IList CalculateTimeSpyAggregates(IList metrics) // Weighted Harmonic Mean of Individual Scores if (tsgt1 != 0 && tsgt2 != 0 && tsct != 0) { - double graphicsScore = 165 * (2 / ((1 / tsgt1) + (1 / tsgt2))); - double cpuScore = 298 * tsct; - double aggScore = 1 / ((0.85 / graphicsScore) + (0.15 / cpuScore)); + double? graphicsScore = 165 * (2 / ((1 / tsgt1) + (1 / tsgt2))); + double? cpuScore = 298 * tsct; + double? aggScore = 1 / ((0.85 / graphicsScore) + (0.15 / cpuScore)); aggregates.Add(new Metric("timespy.graphics.agg", graphicsScore, "score", MetricRelativity.HigherIsBetter)); aggregates.Add(new Metric("timespy.cpu.agg", cpuScore, "score", MetricRelativity.HigherIsBetter)); aggregates.Add(new Metric("timespy.finalscore", aggScore, "score", MetricRelativity.HigherIsBetter)); diff --git a/src/VirtualClient/VirtualClient.Actions/SPECjbb/SpecJbbMetricsParser.cs b/src/VirtualClient/VirtualClient.Actions/SPECjbb/SpecJbbMetricsParser.cs index 6457f52c57..01f75ad793 100644 --- a/src/VirtualClient/VirtualClient.Actions/SPECjbb/SpecJbbMetricsParser.cs +++ b/src/VirtualClient/VirtualClient.Actions/SPECjbb/SpecJbbMetricsParser.cs @@ -43,7 +43,8 @@ public override IList Parse() string[] tokens = metric.Split("="); string name = tokens[0]; string value = tokens[1]; - this.Metrics.Add(new Metric(name.Trim(), Convert.ToDouble(value), SpecJbbMetricsParser.OperationPerSecond, MetricRelativity.HigherIsBetter)); + + this.Metrics.Add(new Metric(name.Trim(), (value.Trim().Equals("N/A", StringComparison.OrdinalIgnoreCase)) ? null : Convert.ToDouble(value), SpecJbbMetricsParser.OperationPerSecond, MetricRelativity.HigherIsBetter)); } return this.Metrics; diff --git a/src/VirtualClient/VirtualClient.Contracts/Metric.cs b/src/VirtualClient/VirtualClient.Contracts/Metric.cs index b6988c727b..0626f252aa 100644 --- a/src/VirtualClient/VirtualClient.Contracts/Metric.cs +++ b/src/VirtualClient/VirtualClient.Contracts/Metric.cs @@ -18,7 +18,7 @@ public class Metric : IEquatable /// /// Creates a metric /// - public Metric(string name, double value) + public Metric(string name, double? value) { this.Name = name; this.Value = value; @@ -30,7 +30,7 @@ public Metric(string name, double value) /// /// Creates a metric /// - public Metric(string name, double value, IEnumerable tags = null, string description = null, IDictionary metadata = null) + public Metric(string name, double? value, IEnumerable tags = null, string description = null, IDictionary metadata = null) : this(name, value) { this.Description = description; @@ -51,7 +51,7 @@ public Metric(string name, double value, IEnumerable tags = null, string /// /// Creates a metric /// - public Metric(string name, double value, MetricRelativity relativity, IEnumerable tags = null, string description = null, IDictionary metadata = null) + public Metric(string name, double? value, MetricRelativity relativity, IEnumerable tags = null, string description = null, IDictionary metadata = null) : this(name, value, tags: tags, description: description, metadata: metadata) { this.Relativity = relativity; @@ -60,7 +60,7 @@ public Metric(string name, double value, MetricRelativity relativity, IEnumerabl /// /// Creates a metric /// - public Metric(string name, double value, string unit, IEnumerable tags = null, string description = null, IDictionary metadata = null) + public Metric(string name, double? value, string unit, IEnumerable tags = null, string description = null, IDictionary metadata = null) : this(name, value, tags: tags, description: description, metadata: metadata) { this.Unit = unit; @@ -69,7 +69,7 @@ public Metric(string name, double value, string unit, IEnumerable tags = /// /// Creates a metric /// - public Metric(string name, double value, string unit, MetricRelativity relativity, IEnumerable tags = null, string description = null, IDictionary metadata = null) + public Metric(string name, double? value, string unit, MetricRelativity relativity, IEnumerable tags = null, string description = null, IDictionary metadata = null) : this(name, value, unit, tags: tags, description: description, metadata: metadata) { this.Relativity = relativity; @@ -99,7 +99,7 @@ public Metric(string name, double value, string unit, MetricRelativity relativit /// /// Result of test /// - public double Value { get; } + public double? Value { get; } /// /// Unit of result diff --git a/src/VirtualClient/VirtualClient.Contracts/MetricAggregate.cs b/src/VirtualClient/VirtualClient.Contracts/MetricAggregate.cs index 788f71558e..c328fc03ff 100644 --- a/src/VirtualClient/VirtualClient.Contracts/MetricAggregate.cs +++ b/src/VirtualClient/VirtualClient.Contracts/MetricAggregate.cs @@ -12,7 +12,7 @@ namespace VirtualClient.Contracts /// Provides features for capturing Windows performance counter values over a period /// of time. /// - public class MetricAggregate : ConcurrentBag + public class MetricAggregate : ConcurrentBag { /// /// Initializes a new instance of the class. @@ -115,11 +115,11 @@ public Metric ToMetric(MetricAggregateType aggregateType) return Metric.None; } - double value = 0; + double? value = 0; switch (aggregateType) { case MetricAggregateType.Average: - double sum = this.Sum(); + double? sum = this.Sum(); value = sum / this.Count; break; diff --git a/src/VirtualClient/VirtualClient.Contracts/VirtualClientLoggingExtensions.cs b/src/VirtualClient/VirtualClient.Contracts/VirtualClientLoggingExtensions.cs index 9b872ed017..cfa55fe0d3 100644 --- a/src/VirtualClient/VirtualClient.Contracts/VirtualClientLoggingExtensions.cs +++ b/src/VirtualClient/VirtualClient.Contracts/VirtualClientLoggingExtensions.cs @@ -744,7 +744,7 @@ public static void LogMetrics( DateTime scenarioStartTime, DateTime scenarioEndTime, string metricName, - double metricValue, + double? metricValue, string metricUnits, string metricCategorization, string scenarioArguments, diff --git a/src/VirtualClient/VirtualClient.TestExtensions/MetricAssert.cs b/src/VirtualClient/VirtualClient.TestExtensions/MetricAssert.cs index fe0c7f827a..85011d4ae1 100644 --- a/src/VirtualClient/VirtualClient.TestExtensions/MetricAssert.cs +++ b/src/VirtualClient/VirtualClient.TestExtensions/MetricAssert.cs @@ -27,7 +27,7 @@ public static void Exists( /// /// Asserts the metric exists in the given list of results /// - public static void Exists(IList results, string expectedMetric, double expectedMetricValue, string expectedMetricUnit = null, List expectedTags = null) + public static void Exists(IList results, string expectedMetric, double? expectedMetricValue, string expectedMetricUnit = null, List expectedTags = null) { List matchingMetrics = results.Where(m => m.Name == expectedMetric).ToList();