This is an automated email from the ASF dual-hosted git repository. upthewaterspout pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode-benchmarks.git
The following commit(s) were added to refs/heads/develop by this push: new 27ce719 GEODE-6086: Looking for the output files in the correct location 27ce719 is described below commit 27ce7198f9fd200e5c6fc12fb6e1af90462d7cb1 Author: Dan Smith <dsm...@pivotal.io> AuthorDate: Mon Nov 26 13:57:25 2018 -0800 GEODE-6086: Looking for the output files in the correct location GEODE-6086: Looking for the output files in the correct location Yardstick creates a subdirectory, so find the files in that directory --- .../perftest/analysis/BenchmarkRunAnalyzer.java | 29 +++++++++++++++++++--- .../geode/perftest/yardstick/YardstickTask.java | 6 +++++ .../analysis/BenchmarkRunAnalyzerTest.java | 16 ++++++------ 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzer.java b/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzer.java index c095876..c84346b 100644 --- a/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzer.java +++ b/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzer.java @@ -15,12 +15,16 @@ package org.apache.geode.perftest.analysis; import java.io.File; +import java.io.FilenameFilter; import java.io.IOException; import java.io.PrintWriter; import java.io.Writer; +import java.nio.file.Files; import java.util.ArrayList; import java.util.List; +import org.apache.geode.perftest.yardstick.YardstickTask; + /** * Analyzer that takes in benchmarks, probes, and result directories and produces * a comparison of the results to a provided writer. @@ -30,9 +34,11 @@ import java.util.List; * Result1 * /BenchmarkA * /client1 - * /Probe1.csv + * /20181121-111354-yardstick-output + * /Probe1.csv * /client2 - * /Probe2.csv + * /20181121-111354-yardstick-output + * /Probe1.csv * /BenchmarkB * ... * </pre> @@ -65,13 +71,13 @@ public class BenchmarkRunAnalyzer { for (ProbeResultParser probe : probes) { stream.println(probe.getResultDescription()); for (String node : benchmark.nodesToParse) { - probe.parseResults(new File(new File(testResultDir, benchmark.benchmarkSubdirectory), node)); + probe.parseResults(getBenchmarkOutputDir(testResultDir, benchmark, node)); } double testResult = probe.getProbeResult(); stream.println("Result: " + String.valueOf(testResult)); probe.reset(); for (String node : benchmark.nodesToParse) { - probe.parseResults(new File(new File(baselineResultDir, benchmark.benchmarkSubdirectory), node)); + probe.parseResults(getBenchmarkOutputDir(baselineResultDir, benchmark, node)); } double baselineResult = probe.getProbeResult(); stream.println("Baseline: " + String.valueOf(baselineResult)); @@ -83,6 +89,21 @@ public class BenchmarkRunAnalyzer { stream.flush(); } + private File getBenchmarkOutputDir(File testResultDir, SensorData benchmark, + String node) { + File benchmarkDir = new File(testResultDir, benchmark.benchmarkSubdirectory); + File nodeDir = new File(benchmarkDir, node); + + File[] files = nodeDir.listFiles((dir, name) -> name.contains(YardstickTask.YARDSTICK_OUTPUT)); + + if(files == null || files.length != 1) { + throw new IllegalStateException("Expected at least one subdirectory in " + nodeDir + + " with the name *" +YardstickTask.YARDSTICK_OUTPUT); + } + + return files[0]; + } + // TODO: depending on how run output is stored, this data may be excessive or insufficient // The present assumption is each benchmark contains an arbitrarily named result directory // containing subdirectories for each node. Those subdirectories then contain the probe output diff --git a/harness/src/main/java/org/apache/geode/perftest/yardstick/YardstickTask.java b/harness/src/main/java/org/apache/geode/perftest/yardstick/YardstickTask.java index 9046327..6c8cb7b 100644 --- a/harness/src/main/java/org/apache/geode/perftest/yardstick/YardstickTask.java +++ b/harness/src/main/java/org/apache/geode/perftest/yardstick/YardstickTask.java @@ -41,6 +41,7 @@ import org.apache.geode.perftest.WorkloadConfig; * is executed, it will use yardstick to run an measure the driver. */ public class YardstickTask implements Task { + public static final String YARDSTICK_OUTPUT = "-yardstick-output"; private final BenchmarkDriver benchmark; private WorkloadConfig workloadConfig; @@ -77,6 +78,11 @@ public class YardstickTask implements Task { public String outputFolder() { return context.getOutputDir().getAbsolutePath(); } + + @Override + public String defaultDescription() { + return YARDSTICK_OUTPUT; + } }; cfg.output(System.out); diff --git a/harness/src/test/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzerTest.java b/harness/src/test/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzerTest.java index 1911c0c..387c198 100644 --- a/harness/src/test/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzerTest.java +++ b/harness/src/test/java/org/apache/geode/perftest/analysis/BenchmarkRunAnalyzerTest.java @@ -43,15 +43,15 @@ public class BenchmarkRunAnalyzerTest { @Test public void verifyResultHarvester() throws IOException { final File testFolder = temporaryFolder.newFolder("testFolder"); - final File testBenchmarkA1 = temporaryFolder.newFolder("testFolder","BenchmarkA","client1"); - final File testBenchmarkA2 = temporaryFolder.newFolder("testFolder","BenchmarkA","client2"); - final File testBenchmarkB1 = temporaryFolder.newFolder("testFolder","BenchmarkB","client1"); - final File testBenchmarkB2 = temporaryFolder.newFolder("testFolder","BenchmarkB","client2"); + final File testBenchmarkA1 = temporaryFolder.newFolder("testFolder","BenchmarkA","client1", "20181121-111516-yardstick-output"); + final File testBenchmarkA2 = temporaryFolder.newFolder("testFolder","BenchmarkA","client2", "20181121-111516-yardstick-output"); + final File testBenchmarkB1 = temporaryFolder.newFolder("testFolder","BenchmarkB","client1", "20181121-111516-yardstick-output"); + final File testBenchmarkB2 = temporaryFolder.newFolder("testFolder","BenchmarkB","client2", "20181121-111516-yardstick-output"); final File baseFolder = temporaryFolder.newFolder("baseFolder"); - final File baseBenchmarkA1 = temporaryFolder.newFolder("baseFolder","BenchmarkA","client1"); - final File baseBenchmarkA2 = temporaryFolder.newFolder("baseFolder","BenchmarkA","client2"); - final File baseBenchmarkB1 = temporaryFolder.newFolder("baseFolder","BenchmarkB","client1"); - final File baseBenchmarkB2 = temporaryFolder.newFolder("baseFolder","BenchmarkB","client2"); + final File baseBenchmarkA1 = temporaryFolder.newFolder("baseFolder","BenchmarkA","client1", "20181121-111516-yardstick-output"); + final File baseBenchmarkA2 = temporaryFolder.newFolder("baseFolder","BenchmarkA","client2", "20181121-111516-yardstick-output"); + final File baseBenchmarkB1 = temporaryFolder.newFolder("baseFolder","BenchmarkB","client1", "20181121-111516-yardstick-output"); + final File baseBenchmarkB2 = temporaryFolder.newFolder("baseFolder","BenchmarkB","client2", "20181121-111516-yardstick-output"); populateThroughputCSV(testBenchmarkA1, new double[] {10, 15, 20, 25, 30}); // Avg 20 populatePercentileCSV(testBenchmarkA1, new double[] {0, 0, 99, 1}); // 200