You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by sm...@apache.org on 2019/01/17 18:35:28 UTC

[geode-benchmarks] branch develop updated: GEODE-6147 - Fail benchmark task if average latency change is 5+% (#43)

This is an automated email from the ASF dual-hosted git repository.

smgoller 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 d98d389  GEODE-6147 - Fail benchmark task if average latency change is 5+% (#43)
d98d389 is described below

commit d98d389fa775e09e5f68b9dc9a13acdea5b130fa
Author: Sean Goller <se...@goller.net>
AuthorDate: Thu Jan 17 10:35:24 2019 -0800

    GEODE-6147 - Fail benchmark task if average latency change is 5+% (#43)
    
    * GEODE-6147 - Fail benchmark task if average latency change is 5+%
    
    * Change ratio to difference
    * Add difference calculation to ProbeResult
    * Fail analyzeRun task if average latency difference is >= 5%
    
    Authored-by: Sean Goller <sg...@pivotal.io>
---
 .../apache/geode/perftest/analysis/Analyzer.java   | 25 ++++++++++++++++++++--
 .../perftest/analysis/BenchmarkRunResult.java      | 18 ++++++++++------
 2 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java b/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java
index 5e288f1..b88944e 100644
--- a/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java
+++ b/harness/src/main/java/org/apache/geode/perftest/analysis/Analyzer.java
@@ -61,7 +61,28 @@ public class Analyzer {
     analyzer.addProbe(new YardstickPercentileSensorParser());
     analyzer.addProbe(new YardstickHdrHistogramParser());
 
-    analyzer.analyzeTestRun(baselineResultDir, testResultDir)
-        .writeResult(new PrintWriter(System.out));
+    BenchmarkRunResult benchmarkRunResult =
+        analyzer.analyzeTestRun(baselineResultDir, testResultDir);
+    benchmarkRunResult.writeResult(new PrintWriter(System.out));
+    /* throw exc if failed? */
+
+    StringBuilder message = new StringBuilder();
+    for (BenchmarkRunResult.BenchmarkResult benchmarkResult : benchmarkRunResult
+        .getBenchmarkResults()) {
+      for (BenchmarkRunResult.ProbeResult probeResult : benchmarkResult.probeResults) {
+        if (probeResult.description.equals("average latency")) {
+          if (probeResult.getDifference() >= 0.05) {
+            message.append("BENCHMARK FAILED: ").append(benchmarkResult.name)
+                .append(" average latency is 5% worse than baseline.\n");
+          }
+        }
+      }
+    }
+
+    if (message.length() > 0) {
+      System.out.println(message);
+      System.exit(1);
+    }
+
   }
 }
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 96b6d42..db37a99 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
@@ -40,7 +40,7 @@ public class BenchmarkRunResult implements Serializable {
         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.print(String.format("  Difference: %+6.1f%%", probeResult.getDifference() * 100));
         stream.println();
       }
     }
@@ -83,8 +83,8 @@ public class BenchmarkRunResult implements Serializable {
   }
 
   static class BenchmarkResult implements Serializable {
-    private final String name;
-    private final List<ProbeResult> probeResults = new ArrayList<>();
+    final String name;
+    final List<ProbeResult> probeResults = new ArrayList<>();
 
     public BenchmarkResult(String name) {
       this.name = name;
@@ -114,10 +114,10 @@ public class BenchmarkRunResult implements Serializable {
     }
   }
 
-  private static class ProbeResult implements Serializable {
-    private final String description;
-    private final double baseline;
-    private final double test;
+  static class ProbeResult implements Serializable {
+    final String description;
+    final double baseline;
+    final double test;
 
     public ProbeResult(String description, double baseline, double test) {
       this.description = description;
@@ -125,6 +125,10 @@ public class BenchmarkRunResult implements Serializable {
       this.test = test;
     }
 
+    public double getDifference() {
+      return (test - baseline) / baseline;
+    }
+
     @Override
     public boolean equals(Object o) {
       if (this == o) {