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 904dec5  Tweaking the output format of the analyzer
904dec5 is described below

commit 904dec5e19ef8de1a76a61d30b124ee5cd02f3c1
Author: Dan Smith <upthewatersp...@apache.org>
AuthorDate: Thu Nov 29 17:29:55 2018 -0800

    Tweaking the output format of the analyzer
---
 .../perftest/analysis/BenchmarkRunResult.java      | 93 ++++++++++++++++++++--
 .../analysis/BenchmarkRunAnalyzerTest.java         | 57 +++----------
 2 files changed, 97 insertions(+), 53 deletions(-)

diff --git 
a/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunResult.java
 
b/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunResult.java
index 07d4c41..96b6d42 100644
--- 
a/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunResult.java
+++ 
b/harness/src/main/java/org/apache/geode/perftest/analysis/BenchmarkRunResult.java
@@ -17,12 +17,14 @@ package org.apache.geode.perftest.analysis;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Serializable;
+import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 public class BenchmarkRunResult implements Serializable {
-  private List<BenchmarkResult> benchmarkResults = new ArrayList<>();
+  private final List<BenchmarkResult> benchmarkResults = new ArrayList<>();
 
   public BenchmarkResult addBenchmark(String name) {
     final BenchmarkResult benchmarkResult = new BenchmarkResult(name);
@@ -33,13 +35,12 @@ public class BenchmarkRunResult implements Serializable {
   public void writeResult(Writer output) throws IOException {
     PrintWriter stream = new PrintWriter(output);
     for (BenchmarkResult benchmarkResult : benchmarkResults) {
-      stream.println("-- " + benchmarkResult.name + " --");
+      stream.println(benchmarkResult.name);
       for (ProbeResult probeResult : benchmarkResult.probeResults) {
-        stream.println(probeResult.description);
-        stream.println("Result: " + String.valueOf(probeResult.test));
-        stream.println("Baseline: " + String.valueOf(probeResult.baseline));
-        stream.println(
-            "Relative performance: " + String.valueOf(probeResult.test / 
probeResult.baseline));
+        stream.print(String.format("  %30s", probeResult.description));
+        stream.print(String.format("  Baseline: %12.2f", 
probeResult.baseline));
+        stream.print(String.format("  Test: %12.2f", probeResult.test));
+        stream.print(String.format("  Ratio: %2.2f", probeResult.test / 
probeResult.baseline));
         stream.println();
       }
     }
@@ -47,6 +48,40 @@ public class BenchmarkRunResult implements Serializable {
     output.flush();
   }
 
+  @Override
+  public String toString() {
+    StringWriter writer = new StringWriter();
+    try {
+      this.writeResult(writer);
+    } catch (IOException e) {
+      throw new IllegalStateException();
+    }
+
+    return writer.toString();
+
+  }
+
+  public List<BenchmarkResult> getBenchmarkResults() {
+    return benchmarkResults;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    BenchmarkRunResult that = (BenchmarkRunResult) o;
+    return Objects.equals(benchmarkResults, that.benchmarkResults);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(benchmarkResults);
+  }
+
   static class BenchmarkResult implements Serializable {
     private final String name;
     private final List<ProbeResult> probeResults = new ArrayList<>();
@@ -58,6 +93,25 @@ public class BenchmarkRunResult implements Serializable {
     public void addProbeResult(String name, double baseline, double test) {
       probeResults.add(new ProbeResult(name, baseline, test));
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) {
+        return true;
+      }
+      if (o == null || getClass() != o.getClass()) {
+        return false;
+      }
+      BenchmarkResult that = (BenchmarkResult) o;
+      return Objects.equals(name, that.name) &&
+          Objects.equals(probeResults, that.probeResults);
+    }
+
+    @Override
+    public int hashCode() {
+
+      return Objects.hash(name, probeResults);
+    }
   }
 
   private static class ProbeResult implements Serializable {
@@ -70,5 +124,30 @@ public class BenchmarkRunResult implements Serializable {
       this.baseline = baseline;
       this.test = test;
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) {
+        return true;
+      }
+      if (o == null || getClass() != o.getClass()) {
+        return false;
+      }
+      ProbeResult that = (ProbeResult) o;
+      return fuzzyEquals(that.baseline, baseline) &&
+          fuzzyEquals(that.test, test) &&
+          Objects.equals(description, that.description);
+    }
+
+    @Override
+    public int hashCode() {
+
+      return Objects.hash(description, baseline, test);
+    }
+
+    public boolean fuzzyEquals(double a, double b) {
+      double ratio = Math.abs(a / b);
+      return ratio < 1.05 && ratio > 0.95;
+    }
   }
 }
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 195dd06..12e37d1 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
@@ -15,17 +15,14 @@
 
 package org.apache.geode.perftest.analysis;
 
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
+import static org.junit.Assert.assertEquals;
+
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.PrintStream;
-import java.io.StringReader;
 import java.io.StringWriter;
-import java.util.Scanner;
 
-import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -82,15 +79,18 @@ public class BenchmarkRunAnalyzerTest {
     harvester.addProbe(new YardstickThroughputSensorParser());
     harvester.addProbe(new YardstickPercentileSensorParser());
 
-    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(4000);
     StringWriter writer = new StringWriter();
 
-    harvester.analyzeTestRun(testFolder, baseFolder).writeResult(writer);
-    System.out.println(writer.toString());
-    BufferedReader resultReader = new BufferedReader(new 
StringReader(writer.toString()));
+    BenchmarkRunResult results = harvester.analyzeTestRun(testFolder, 
baseFolder);
 
-    validatedBenchmark(resultReader, "BenchmarkA", 20, 300, 25, 200);
-    validatedBenchmark(resultReader, "BenchmarkB", 25, 400, 20, 400);
+    BenchmarkRunResult expectedBenchmarkResult = new BenchmarkRunResult();
+    BenchmarkRunResult.BenchmarkResult resultA = 
expectedBenchmarkResult.addBenchmark("BenchmarkA");
+    
resultA.addProbeResult(YardstickThroughputSensorParser.probeResultDescription, 
25, 20);
+    
resultA.addProbeResult(YardstickPercentileSensorParser.probeResultDescription, 
200, 300);
+    BenchmarkRunResult.BenchmarkResult resultB = 
expectedBenchmarkResult.addBenchmark("BenchmarkB");
+    
resultB.addProbeResult(YardstickThroughputSensorParser.probeResultDescription, 
20, 25);
+    
resultB.addProbeResult(YardstickPercentileSensorParser.probeResultDescription, 
400, 400);
+    assertEquals(expectedBenchmarkResult, results);
   }
 
   private void populateThroughputCSV(File targetDirectory, double[] 
perSecondThroughputs)
@@ -114,39 +114,4 @@ public class BenchmarkRunAnalyzerTest {
     }
     output.close();
   }
-
-  private void validatedBenchmark(BufferedReader input, String benchmarkName, 
double testValA,
-      double testValB, double baseValA, double baseValB)
-      throws IOException {
-    String line = input.readLine();
-    Assert.assertEquals("-- " + benchmarkName + " --", line);
-    validateProbe(input, 
YardstickThroughputSensorParser.probeResultDescription, testValA,
-        baseValA);
-    validateProbe(input, 
YardstickPercentileSensorParser.probeResultDescription, testValB,
-        baseValB);
-  }
-
-  private void validateProbe(BufferedReader input, String description, double 
testVal,
-      double baseVal)
-      throws IOException {
-    String line = input.readLine();
-    Assert.assertEquals(description, line);
-    Scanner scanner = new Scanner(input.readLine());
-    while (!scanner.hasNextDouble()) {
-      scanner.next();
-    }
-    Assert.assertEquals(testVal, scanner.nextDouble(), 0.01 * testVal);
-    scanner = new Scanner(input.readLine());
-    while (!scanner.hasNextDouble()) {
-      scanner.next();
-    }
-    Assert.assertEquals(baseVal, scanner.nextDouble(), 0.01 * baseVal);
-    scanner = new Scanner(input.readLine());
-    while (!scanner.hasNextDouble()) {
-      scanner.next();
-    }
-    Assert.assertEquals(testVal / baseVal, scanner.nextDouble(), 0.1);
-    line = input.readLine();
-    Assert.assertEquals("", line);
-  }
 }

Reply via email to