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

domgarguilo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-testing.git


The following commit(s) were added to refs/heads/main by this push:
     new 6e792d9  Fix performance test NumberFormatException bug (#155)
6e792d9 is described below

commit 6e792d9c10f380cdd60f35183591939f2d047e66
Author: Dom G <47725857+domgargu...@users.noreply.github.com>
AuthorDate: Thu Sep 23 16:25:18 2021 -0400

    Fix performance test NumberFormatException bug (#155)
    
    * Fixed NumberFormatException
    * Add constants, make runs consistent
    * Make var names more meaningful
    
    Co-authored-by: Christopher Tubbs <ctubb...@apache.org>
---
 .../performance/tests/ConditionalMutationsPT.java  | 101 +++++++++++++--------
 1 file changed, 62 insertions(+), 39 deletions(-)

diff --git 
a/src/main/java/org/apache/accumulo/testing/performance/tests/ConditionalMutationsPT.java
 
b/src/main/java/org/apache/accumulo/testing/performance/tests/ConditionalMutationsPT.java
index 4db109b..59a91e7 100644
--- 
a/src/main/java/org/apache/accumulo/testing/performance/tests/ConditionalMutationsPT.java
+++ 
b/src/main/java/org/apache/accumulo/testing/performance/tests/ConditionalMutationsPT.java
@@ -93,34 +93,37 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
     ConditionalWriter cw = env.getClient().createConditionalWriter(tableName,
         new ConditionalWriterConfig());
 
+    // warm-up run
     conditionalMutationsTime(cw, 0);
 
     double rateSum = 0.0;
-    for (long i = 1; i < 20; i++) {
+    for (long i = 1; i <= 20; i++) {
       rateSum += conditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate: 1-19",
+    reportBuilder.result("avgRate: 1-20",
         Double.parseDouble(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "ConditionalMutationsTest: average rate (conditions/sec) to run 
sequence 1-19");
+        "ConditionalMutationsTest: average rate (conditions/sec) to run 
sequence 1-20");
 
     env.getClient().tableOperations().flush(tableName, null, null, true);
 
     rateSum = 0.0;
-    for (long i = 20; i < 40; i++) {
+    for (long i = 21; i <= 40; i++) {
       rateSum += conditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate: 20-39",
+    reportBuilder.result("avgRate: 21-40",
         Double.parseDouble(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "ConditionalMutationsTest: average rate (conditions/sec)  to run 
sequence 20-39");
+        "ConditionalMutationsTest: average rate (conditions/sec) to run 
sequence 21-40");
   }
 
   public static double conditionalMutationsTime(ConditionalWriter cw, long 
seq) throws Exception {
 
+    final int numOfConditions = 10_000;
+
     ArrayList<ConditionalMutation> cmuts = new ArrayList<>();
 
-    for (int i = 0; i < 10000; i++) {
+    for (int i = 0; i < numOfConditions; i++) {
       Condition cond = new Condition("meta", "seq");
       if (seq != 0) {
         cond.setValue("" + seq);
@@ -131,7 +134,7 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
       cmuts.add(cm);
     }
 
-    long t1 = System.nanoTime();
+    long startTime = System.nanoTime();
 
     int count = 0;
     Iterator<ConditionalWriter.Result> results = cw.write(cmuts.iterator());
@@ -148,9 +151,10 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
       throw new RuntimeException();
     }
 
-    long t2 = System.nanoTime();
+    long stopTime = System.nanoTime();
 
-    return 10000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
+    // return number of conditions per second
+    return numOfConditions / nanosToSecs(stopTime - startTime);
   }
 
   private static void runRandomizeConditionalMutationsTest(Environment env, 
String tableName,
@@ -165,42 +169,45 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
     ConditionalWriter cw = env.getClient().createConditionalWriter(tableName,
         new ConditionalWriterConfig());
 
+    // warm-up run
     randomizeConditionalMutationsTime(cw, 0);
 
     double rateSum = 0;
-    for (long i = 1; i < 20; i++) {
+    for (long i = 1; i <= 20; i++) {
       rateSum += randomizeConditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate: 1-19",
+    reportBuilder.result("avgRate: 1-20",
         Double.parseDouble(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeConditionalMutationsTest: average rate (conditions/sec)  to 
run sequence 1-19");
+        "RandomizeConditionalMutationsTest: average rate (conditions/sec) to 
run sequence 1-20");
 
     env.getClient().tableOperations().flush(tableName, null, null, true);
 
     rateSum = 0;
-    for (long i = 20; i < 40; i++) {
+    for (long i = 21; i <= 40; i++) {
       rateSum += randomizeConditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate: 20-39",
+    reportBuilder.result("avgRate: 21-40",
         Double.parseDouble(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeConditionalMutationsTest: average rate (conditions/sec)  to 
run sequence 20-39");
+        "RandomizeConditionalMutationsTest: average rate (conditions/sec) to 
run sequence 21-40");
   }
 
   private static double randomizeConditionalMutationsTime(ConditionalWriter 
cw, long seq)
       throws Exception {
 
+    final int numOfConditions = 10_000;
+
     ArrayList<ConditionalMutation> cmuts = new ArrayList<>();
     ConditionalMutation cm = new ConditionalMutation("r01");
-    ArrayList<Integer> ints = new ArrayList<>(10000);
+    ArrayList<Integer> ints = new ArrayList<>(numOfConditions);
 
-    for (int i = 0; i < 10000; i++) {
+    for (int i = 0; i < numOfConditions; i++) {
       ints.add(i);
     }
     Collections.shuffle(ints);
 
-    for (int i = 0; i < 10000; i++) {
+    for (int i = 0; i < numOfConditions; i++) {
       String qual = String.format("q%07d", ints.get(i));
 
       Condition cond = new Condition("seq", qual);
@@ -214,7 +221,7 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
     }
     cmuts.add(cm);
 
-    long t1 = System.nanoTime();
+    long startTime = System.nanoTime();
 
     int count = 0;
     Iterator<ConditionalWriter.Result> results = cw.write(cmuts.iterator());
@@ -231,9 +238,10 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
       throw new RuntimeException();
     }
 
-    long t2 = System.nanoTime();
+    long stopTime = System.nanoTime();
 
-    return 10000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
+    // return number of conditions per second
+    return numOfConditions / nanosToSecs(stopTime - startTime);
   }
 
   private static void runRandomizeBatchScanAndWriteTest(Environment env, 
String tableName,
@@ -248,43 +256,46 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
     BatchWriter bw = env.getClient().createBatchWriter(tableName, new 
BatchWriterConfig());
     BatchScanner bs = env.getClient().createBatchScanner(tableName, 
Authorizations.EMPTY, 1);
 
+    // warm-up run
     randomizeBatchWriteAndScanTime(bw, bs, 0);
 
     double rateSum = 0;
 
-    for (long i = 1; i < 20; i++) {
+    for (long i = 1; i <= 20; i++) {
       rateSum += randomizeBatchWriteAndScanTime(bw, bs, i);
     }
 
-    reportBuilder.result("avgRate: 1-19",
+    reportBuilder.result("avgRate: 1-20",
         Double.parseDouble(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeBatchScanAndWriteTest: average rate (conditions/sec)  to 
write and scan sequence 1-19");
+        "RandomizeBatchScanAndWriteTest: average rate (conditions/sec) to 
write and scan sequence 1-20");
 
     env.getClient().tableOperations().flush(tableName, null, null, true);
 
     rateSum = 0;
-    for (long i = 20; i < 40; i++) {
+    for (long i = 21; i <= 40; i++) {
       rateSum += randomizeBatchWriteAndScanTime(bw, bs, i);
     }
 
-    reportBuilder.result("avgRate: 20-39",
+    reportBuilder.result("avgRate: 21-40",
         Double.parseDouble(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeBatchScanAndWriteTest: average rate (conditions/sec)  to 
write and scan sequence 20-39 post flush");
+        "RandomizeBatchScanAndWriteTest: average rate (conditions/sec) to 
write and scan sequence 21-40 post flush");
   }
 
   private static double randomizeBatchWriteAndScanTime(BatchWriter bw, 
BatchScanner bs, long seq)
       throws Exception {
 
+    final int numOfConditions = 10_000;
+
     ArrayList<Range> ranges = new ArrayList<>();
     Mutation cm = new Mutation("r01");
-    ArrayList<Integer> ints = new ArrayList<>(10000);
+    ArrayList<Integer> ints = new ArrayList<>(numOfConditions);
 
-    for (int i = 0; i < 10000; i++) {
+    for (int i = 0; i < numOfConditions; i++) {
       ints.add(i);
     }
     Collections.shuffle(ints);
 
-    for (int i = 0; i < 10000; i++) {
+    for (int i = 0; i < numOfConditions; i++) {
       String qual = String.format("q%07d", ints.get(i));
       cm.put("seq", qual, seq == 0 ? "1" : (seq + 1) + "");
       // look between existing values
@@ -294,7 +305,7 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
     bw.addMutation(cm);
     bw.flush();
 
-    long t1 = System.nanoTime();
+    long startTime = System.nanoTime();
 
     bs.setRanges(ranges);
 
@@ -303,9 +314,10 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
       throw new RuntimeException("count = " + count);
     }
 
-    long t2 = System.nanoTime();
+    long stopTime = System.nanoTime();
 
-    return 10000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
+    // return number of conditions per second
+    return numOfConditions / nanosToSecs(stopTime - startTime);
   }
 
   private static void runSetBlockSizeTest(Environment env, String tableName,
@@ -422,13 +434,17 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
   private static double setBlockSizeTime(ConditionalWriter cw, int numRows, 
int numCols)
       throws Exception {
 
+    final int rows = 3000;
+    final int cols = 10;
+    final int numOfConditions = rows * cols;
+
     Random rand = new Random();
     ArrayList<ConditionalMutation> cmuts = new ArrayList<>();
 
-    for (int row = 0; row < 3000; row++) {
+    for (int row = 0; row < rows; row++) {
       ConditionalMutation cm = new ConditionalMutation(randRow(rand, numRows));
 
-      for (String col : randCols(rand, 10, numCols)) {
+      for (String col : randCols(rand, cols, numCols)) {
         cm.addCondition(new Condition("data", col).setValue("1"));
         cm.put("data", col, "1");
       }
@@ -436,7 +452,7 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
       cmuts.add(cm);
     }
 
-    long t1 = System.nanoTime();
+    long startTime = System.nanoTime();
 
     int count = 0;
 
@@ -454,8 +470,15 @@ public class ConditionalMutationsPT implements 
PerformanceTest {
       throw new RuntimeException();
     }
 
-    long t2 = System.nanoTime();
+    long stopTime = System.nanoTime();
+
+    // return number of conditions per second
+    return numOfConditions / nanosToSecs(stopTime - startTime);
+  }
 
-    return 30000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
+  // Convert nanoseconds to seconds
+  private static double nanosToSecs(long nanos) {
+    double nanosPerSec = (double) TimeUnit.SECONDS.toNanos(1);
+    return nanos / nanosPerSec;
   }
 }

Reply via email to