You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2019/07/26 18:55:26 UTC

[accumulo-testing] branch master updated: Clean up and Minor Changes to ConditionalMutationsPT (#105)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new d44db20  Clean up and Minor Changes to ConditionalMutationsPT (#105)
d44db20 is described below

commit d44db203baf363e8138782ec97c125e4b4bd8013
Author: Jeffrey Manno <je...@gmail.com>
AuthorDate: Fri Jul 26 14:55:22 2019 -0400

    Clean up and Minor Changes to ConditionalMutationsPT (#105)
---
 .../performance/tests/ConditionalMutationsPT.java  | 269 ++++++---------------
 1 file changed, 80 insertions(+), 189 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 1f0ed91..2d4f8b1 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
@@ -9,6 +9,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Random;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.accumulo.core.client.BatchScanner;
 import org.apache.accumulo.core.client.BatchWriter;
@@ -52,7 +53,7 @@ public class ConditionalMutationsPT implements PerformanceTest {
     String tableName = "foo";
 
     Report.Builder reportBuilder = Report.builder();
-    reportBuilder.id("condmut");
+    reportBuilder.id("Conditional Mutations");
     reportBuilder.description("Runs conditional mutations tests with and without randomization,"
         + "setting of block size, and with and without randomization of batch writing/reading.");
 
@@ -76,49 +77,45 @@ public class ConditionalMutationsPT implements PerformanceTest {
     ConditionalWriter cw = env.getClient().createConditionalWriter(tableName,
         new ConditionalWriterConfig());
 
-    conditionalMutationsTime(cw, null, "0", reportBuilder);
+    conditionalMutationsTime(cw, 0);
 
     double rateSum = 0.0;
-    for (int i = 1; i < 20; i++) {
-      rateSum += conditionalMutationsTime(cw, (long) i, ((Integer) i).toString(), reportBuilder);
+    for (long i = 1; i < 20; i++) {
+      rateSum += conditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate", new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "ConditionalMutationsTest:  average rate (in seconds) to run sequence 1-19");
-
-    // System.out.printf("rate avg : %6.2f conditionalMutations/sec \n", rateSum / 20);
-    // System.out.println("Flushing");
+    reportBuilder.result("avgRate: 1-19",
+        new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
+        "ConditionalMutationsTest: average rate (conditions/sec) to run sequence 1-19");
 
     env.getClient().tableOperations().flush(tableName, null, null, true);
 
     rateSum = 0.0;
-    for (int i = 20; i < 40; i++) {
-      rateSum += conditionalMutationsTime(cw, (long) i, ((Integer) i).toString(), reportBuilder);
+    for (long i = 20; i < 40; i++) {
+      rateSum += conditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate", new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "ConditionalMutationsTest:  average rate (in seconds) to run sequence 20-39");
-
-    // System.out.printf("rate avg: %6.2f conditionalMutations/sec \n", rateSum / 20);
-
+    reportBuilder.result("avgRate: 20-39",
+        new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
+        "ConditionalMutationsTest: average rate (conditions/sec)  to run sequence 20-39");
   }
 
-  public static double conditionalMutationsTime(ConditionalWriter cw, Long seq, String testRun,
-      Report.Builder reportBuilder) throws Exception {
+  public static double conditionalMutationsTime(ConditionalWriter cw, long seq) throws Exception {
+
     ArrayList<ConditionalMutation> cmuts = new ArrayList<>();
 
     for (int i = 0; i < 10000; i++) {
       Condition cond = new Condition("meta", "seq");
-      if (seq != null) {
+      if (seq != 0) {
         cond.setValue("" + seq);
       }
 
       ConditionalMutation cm = new ConditionalMutation(String.format("r%07d", i), cond);
-      cm.put("meta", "seq", seq == null ? "1" : (seq + 1) + "");
+      cm.put("meta", "seq", seq == 0 ? "1" : (seq + 1) + "");
       cmuts.add(cm);
     }
 
-    long t1 = System.currentTimeMillis();
+    long t1 = System.nanoTime();
 
     int count = 0;
     Iterator<ConditionalWriter.Result> results = cw.write(cmuts.iterator());
@@ -134,17 +131,10 @@ public class ConditionalMutationsPT implements PerformanceTest {
     if (cmuts.size() != count) {
       throw new RuntimeException();
     }
-    long t2 = System.currentTimeMillis();
-
-    double rate = 10000 / ((t2 - t1) / 1000.0);
-
-    // reportBuilder.info("time" + testRun, (t2 - t1), "ConditionalMutationsTest: time in seconds");
-    // reportBuilder.info("rate" + testRun, new Double(new DecimalFormat("#0.00").format(rate)),
-    // "ConditionalMutationsTest: conditionalMutations/sec");
 
-    // System.out.printf("time: %d ms rate : %6.2f conditionalMutations/sec \n", (t2 - t1), rate);
+    long t2 = System.nanoTime();
 
-    return rate;
+    return 10000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
   }
 
   private static void runRandomizeConditionalMutationsTest(Environment env, String tableName,
@@ -159,69 +149,56 @@ public class ConditionalMutationsPT implements PerformanceTest {
     ConditionalWriter cw = env.getClient().createConditionalWriter(tableName,
         new ConditionalWriterConfig());
 
-    boolean randomize = true;
-
-    randomizeConditionalMutationsTime(cw, null, "0", reportBuilder, randomize);
+    randomizeConditionalMutationsTime(cw, 0);
 
     double rateSum = 0;
-    for (int i = 1; i < 20; i++) {
-      rateSum += randomizeConditionalMutationsTime(cw, (long) i, ((Integer) i).toString(),
-          reportBuilder, randomize);
+    for (long i = 1; i < 20; i++) {
+      rateSum += randomizeConditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate", new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeConditionalMutationsTest:  average rate (in seconds) to run sequence 1-19");
-
-    // System.out.printf("rate avg : %6.2f conditionalMutations/sec \n", rateSum / 20);
-    // System.out.println("Flushing");
+    reportBuilder.result("avgRate: 1-19",
+        new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
+        "RandomizeConditionalMutationsTest: average rate (conditions/sec)  to run sequence 1-19");
 
     env.getClient().tableOperations().flush(tableName, null, null, true);
 
     rateSum = 0;
-    for (int i = 20; i < 40; i++) {
-      rateSum += randomizeConditionalMutationsTime(cw, (long) i, ((Integer) i).toString(),
-          reportBuilder, randomize);
+    for (long i = 20; i < 40; i++) {
+      rateSum += randomizeConditionalMutationsTime(cw, i);
     }
 
-    reportBuilder.result("avgRate", new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeConditionalMutationsTest:  average rate (in seconds) to run sequence 20-39");
-
-    // System.out.printf("rate avg: %6.2f conditionalMutations/sec \n", rateSum / 20);
+    reportBuilder.result("avgRate: 20-39",
+        new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
+        "RandomizeConditionalMutationsTest: average rate (conditions/sec)  to run sequence 20-39");
   }
 
-  private static double randomizeConditionalMutationsTime(ConditionalWriter cw, Long seq,
-      String testRun, Report.Builder reportBuilder, boolean randomize) throws Exception {
+  private static double randomizeConditionalMutationsTime(ConditionalWriter cw, long seq)
+      throws Exception {
 
     ArrayList<ConditionalMutation> cmuts = new ArrayList<>();
-
     ConditionalMutation cm = new ConditionalMutation("r01");
-
     ArrayList<Integer> ints = new ArrayList<>(10000);
 
     for (int i = 0; i < 10000; i++) {
       ints.add(i);
     }
-
-    if (randomize) {
-      Collections.shuffle(ints);
-    }
+    Collections.shuffle(ints);
 
     for (int i = 0; i < 10000; i++) {
       String qual = String.format("q%07d", ints.get(i));
 
       Condition cond = new Condition("seq", qual);
-      if (seq != null) {
+      if (seq != 0) {
         cond.setValue("" + seq);
       }
 
       cm.addCondition(cond);
 
-      cm.put("seq", qual, seq == null ? "1" : (seq + 1) + "");
+      cm.put("seq", qual, seq == 0 ? "1" : (seq + 1) + "");
     }
-
     cmuts.add(cm);
 
-    long t1 = System.currentTimeMillis();
+    long t1 = System.nanoTime();
 
     int count = 0;
     Iterator<ConditionalWriter.Result> results = cw.write(cmuts.iterator());
@@ -237,18 +214,10 @@ public class ConditionalMutationsPT implements PerformanceTest {
     if (cmuts.size() != count) {
       throw new RuntimeException();
     }
-    long t2 = System.currentTimeMillis();
-
-    double rate = 10000 / ((t2 - t1) / 1000.0);
-
-    // reportBuilder.info("time" + testRun, (t2 - t1),
-    // "RandomizeConditionalMutationsTest: time in seconds");
-    // reportBuilder.info("rate" + testRun, new Double(new DecimalFormat("#0.00").format(rate)),
-    // "RandomizeConditionalMutationsTest: conditionalMutations/sec");
 
-    // System.out.printf("time: %d ms rate : %6.2f conditionalMutations/sec \n", (t2 - t1), rate);
+    long t2 = System.nanoTime();
 
-    return rate;
+    return 10000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
   }
 
   private static void runRandomizeBatchScanAndWriteTest(Environment env, String tableName,
@@ -263,66 +232,53 @@ public class ConditionalMutationsPT implements PerformanceTest {
     BatchWriter bw = env.getClient().createBatchWriter(tableName, new BatchWriterConfig());
     BatchScanner bs = env.getClient().createBatchScanner(tableName, Authorizations.EMPTY, 1);
 
-    boolean randomize = true;
-
-    randomizeBatchWriteAndScanTime(bw, bs, null, "0", reportBuilder, randomize);
+    randomizeBatchWriteAndScanTime(bw, bs, 0);
 
     double rateSum = 0;
 
-    for (int i = 1; i < 20; i++) {
-      rateSum += randomizeBatchWriteAndScanTime(bw, bs, (long) i, ((Integer) i).toString(),
-          reportBuilder, randomize);
+    for (long i = 1; i < 20; i++) {
+      rateSum += randomizeBatchWriteAndScanTime(bw, bs, i);
     }
 
-    reportBuilder.result("avgRate", new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeBatchScanAndWriteTest:  average rate (in seconds) to write and scan sequence 1-19");
-
-    // System.out.printf("rate avg : %6.2f \n", rateSum / 20);
-    // System.out.println("Flushing");
+    reportBuilder.result("avgRate: 1-19",
+        new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
+        "RandomizeBatchScanAndWriteTest: average rate (conditions/sec)  to write and scan sequence 1-19");
 
     env.getClient().tableOperations().flush(tableName, null, null, true);
 
     rateSum = 0;
-    for (int i = 20; i < 40; i++) {
-      rateSum += randomizeBatchWriteAndScanTime(bw, bs, (long) i, ((Integer) i).toString(),
-          reportBuilder, randomize);
+    for (long i = 20; i < 40; i++) {
+      rateSum += randomizeBatchWriteAndScanTime(bw, bs, i);
     }
 
-    reportBuilder.result("avgRate", new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "RandomizeBatchScanAndWriteTest:  average rate (in seconds) to write and scan sequence 20-39 post flush");
-
-    // System.out.printf("rate avg : %6.2f \n", rateSum / 20);
+    reportBuilder.result("avgRate: 20-39",
+        new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
+        "RandomizeBatchScanAndWriteTest: average rate (conditions/sec)  to write and scan sequence 20-39 post flush");
   }
 
-  private static double randomizeBatchWriteAndScanTime(BatchWriter bw, BatchScanner bs, Long seq,
-      String testRun, Report.Builder reportBuilder, boolean randomize) throws Exception {
+  private static double randomizeBatchWriteAndScanTime(BatchWriter bw, BatchScanner bs, long seq)
+      throws Exception {
 
     ArrayList<Range> ranges = new ArrayList<>();
-
     Mutation cm = new Mutation("r01");
-
     ArrayList<Integer> ints = new ArrayList<>(10000);
 
     for (int i = 0; i < 10000; i++) {
       ints.add(i);
     }
-
-    if (randomize) {
-      Collections.shuffle(ints);
-    }
+    Collections.shuffle(ints);
 
     for (int i = 0; i < 10000; i++) {
       String qual = String.format("q%07d", ints.get(i));
-      cm.put("seq", qual, seq == null ? "1" : (seq + 1) + "");
+      cm.put("seq", qual, seq == 0 ? "1" : (seq + 1) + "");
       // look between existing values
       ranges.add(Range.exact("r01", "seq", qual + ".a"));
     }
 
-    long t1 = System.currentTimeMillis();
     bw.addMutation(cm);
     bw.flush();
 
-    long t2 = System.currentTimeMillis();
+    long t1 = System.nanoTime();
 
     bs.setRanges(ranges);
 
@@ -334,24 +290,9 @@ public class ConditionalMutationsPT implements PerformanceTest {
       throw new RuntimeException("count = " + count);
     }
 
-    long t3 = System.currentTimeMillis();
-
-    double rate1 = 10000 / ((t2 - t1) / 1000.0);
-    double rate2 = 10000 / ((t3 - t2) / 1000.0);
-
-    // reportBuilder.info("time" + testRun, (t2 - t1),
-    // "RandomizeBatchScanAndWriteTest: time in milliseconds to write and flush mutations");
-    // reportBuilder.info("writeRate" + testRun, new Double(new
-    // DecimalFormat("#0.00").format(rate1)),
-    // "RandomizeBatchScanAndWriteTest: writes/sec");
-    // reportBuilder.info("readRate" + testRun, new Double(new
-    // DecimalFormat("#0.00").format(rate2)),
-    // "RandomizeBatchScanAndWriteTest: reads/sec");
+    long t2 = System.nanoTime();
 
-    // System.out.printf("time: %d ms rate : %6.2f writes/sec %6.2f reads/sec \n", (t2 - t1), rate1,
-    // rate2);
-
-    return rate2;
+    return 10000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
   }
 
   private static void runSetBlockSizeTest(Environment env, String tableName,
@@ -371,81 +312,59 @@ public class ConditionalMutationsPT implements PerformanceTest {
     int numCols = 100;
     int numTest = 10;
 
-    writeData(env, tableName, numRows, numCols, reportBuilder);
-    writeLgData(env, tableName, numRows, reportBuilder);
+    writeData(env, tableName, numRows, numCols);
+    writeLgData(env, tableName, numRows);
 
     ConditionalWriter cw = env.getClient().createConditionalWriter(tableName,
         new ConditionalWriterConfig());
 
     double rateSum = 0;
-    // String testRun = "_SetBlockSizeTest1";
     for (int i = 0; i < numTest; i++) {
-      rateSum += setBlockSizeTime(cw, numRows, numCols, ((Integer) i).toString(), reportBuilder);
+      rateSum += setBlockSizeTime(cw, numRows, numCols);
     }
 
     reportBuilder.result("avgRate1",
         new Double(new DecimalFormat("#0.00").format(rateSum / numTest)),
-        "SetBlockSizeTest:  average rate in conditions/sec");
-
-    // System.out.printf("rate avg : %6.2f conditions/sec \n", rateSum / numTest);
-    // System.out.println("Flushing");
+        "SetBlockSizeTest: average rate in conditions/sec");
 
     env.getClient().tableOperations().flush(tableName, null, null, true);
 
     rateSum = 0;
-    // testRun = "_SetBlockSizeTest2";
     for (int i = 0; i < numTest; i++) {
-      rateSum += setBlockSizeTime(cw, numRows, numCols, ((Integer) i).toString(), reportBuilder);
+      rateSum += setBlockSizeTime(cw, numRows, numCols);
     }
 
     reportBuilder.result("avgRate2",
         new Double(new DecimalFormat("#0.00").format(rateSum / numTest)),
-        "SetBlockSizeTest:  average rate in conditions/sec post flush");
-
-    // System.out.printf("rate avg : %6.2f conditions/sec \n", rateSum / numTest);
-    // System.out.println("Compacting");
+        "SetBlockSizeTest: average rate in conditions/sec post flush");
 
     env.getClient().tableOperations().compact(tableName, null, null, true, true);
 
     rateSum = 0;
-    // testRun = "_SetBlockSizeTest3";
     for (int i = 0; i < numTest; i++) {
-      rateSum += setBlockSizeTime(cw, numRows, numCols, ((Integer) i).toString(), reportBuilder);
+      rateSum += setBlockSizeTime(cw, numRows, numCols);
     }
 
     reportBuilder.result("avgRate3", new Double(new DecimalFormat("#0.00").format(rateSum / 20)),
-        "SetBlockSizeTest:  average rate in conditions/sec post compaction");
-
-    // System.out.printf("rate avg : %6.2f conditions/sec \n", rateSum / numTest);
+        "SetBlockSizeTest: average rate in conditions/sec post compaction");
+    reportBuilder.parameter("numRows", numRows, "SetBlockSizeTest: The number of rows");
+    reportBuilder.parameter("numCols", numCols, "SetBlockSizeTest: The number of columns");
+    reportBuilder.parameter("numTest", numTest,
+        "SetBlockSizeTest: The number of tests ran per trial");
   }
 
-  private static void writeData(Environment env, String tableName, int numRows, int numCols,
-      Report.Builder reportBuilder) throws TableNotFoundException, MutationsRejectedException {
-
-    long t1 = System.currentTimeMillis();
+  private static void writeData(Environment env, String tableName, int numRows, int numCols)
+      throws TableNotFoundException, MutationsRejectedException {
 
     BatchWriter bw = env.getClient().createBatchWriter(tableName, new BatchWriterConfig());
-
     for (int row = 0; row < numRows; row++) {
       bw.addMutation(genRow(row, numCols));
     }
-
     bw.close();
-    long t2 = System.currentTimeMillis();
-
-    double rate = numRows * numCols / ((t2 - t1) / 1000.0);
-
-    // reportBuilder.info("time", (t2 - t1),
-    // "WriteData_SetBlockSizeTest: time (in seconds) to write the entries");
-    // reportBuilder.info("rate", new Double(new DecimalFormat("#0.00").format(rate)),
-    // "WriteData_SetBlockSizeTest: entries/sec");
-
-    // System.out.printf("time: %d ms rate : %6.2f entries/sec written\n", (t2 - t1), rate);
   }
 
   private static Mutation genRow(int row, int numCols) {
     String r = String.format("%08x", Math.abs(Hashing.murmur3_32().hashInt(row).asInt()));
-
     Mutation m = new Mutation(r);
 
     for (int col = 0; col < numCols; col++) {
@@ -453,40 +372,21 @@ public class ConditionalMutationsPT implements PerformanceTest {
           Math.abs(Hashing.murmur3_32().hashInt(col).asInt() & 0xffff));
       m.put("data", c, "1");
     }
-
     return m;
   }
 
-  private static void writeLgData(Environment env, String tableName, int numRows,
-      Report.Builder reportBuilder) throws TableNotFoundException, MutationsRejectedException {
-
-    String testName = "WriteLgDataForSetBlockSizeTest";
-
-    long t1 = System.currentTimeMillis();
+  private static void writeLgData(Environment env, String tableName, int numRows)
+      throws TableNotFoundException, MutationsRejectedException {
 
     BatchWriter bw = env.getClient().createBatchWriter(tableName, new BatchWriterConfig());
-
     numRows = numRows * 10;
-
     for (int row = 0; row < numRows; row++) {
       String r = String.format("%08x", Math.abs(Hashing.murmur3_32().hashInt(row).asInt()));
-
       Mutation m = new Mutation(r);
       m.put("ntfy", "absfasf3", "");
       bw.addMutation(m);
     }
-
     bw.close();
-    long t2 = System.currentTimeMillis();
-
-    double rate = numRows / ((t2 - t1) / 1000.0);
-
-    // reportBuilder.info("time", (t2 - t1),
-    // "WriteLgData_SetBlockSizeTest: time (in seconds) to write the entries");
-    // reportBuilder.info("rate", new Double(new DecimalFormat("#0.00").format(rate)),
-    // "WriteLgData_SetBlockSizeTest: entries/sec");
-
-    // System.out.printf("time: %d ms rate : %6.2f entries/sec written\n", (t2 - t1), rate);
   }
 
   private static String randRow(Random rand, int numRows) {
@@ -495,22 +395,20 @@ public class ConditionalMutationsPT implements PerformanceTest {
   }
 
   private static Collection<String> randCols(Random rand, int num, int numCols) {
-    HashSet<String> cols = new HashSet<String>();
+    HashSet<String> cols = new HashSet<>();
     while (cols.size() < num) {
       int col = rand.nextInt(numCols);
       String c = String.format("%04x",
           Math.abs(Hashing.murmur3_32().hashInt(col).asInt() & 0xffff));
       cols.add(c);
     }
-
     return cols;
   }
 
-  private static double setBlockSizeTime(ConditionalWriter cw, int numRows, int numCols,
-      String testRun, Report.Builder reportBuilder) throws Exception {
+  private static double setBlockSizeTime(ConditionalWriter cw, int numRows, int numCols)
+      throws Exception {
 
     Random rand = new Random();
-
     ArrayList<ConditionalMutation> cmuts = new ArrayList<>();
 
     for (int row = 0; row < 3000; row++) {
@@ -524,9 +422,10 @@ public class ConditionalMutationsPT implements PerformanceTest {
       cmuts.add(cm);
     }
 
-    long t1 = System.currentTimeMillis();
+    long t1 = System.nanoTime();
 
     int count = 0;
+
     Iterator<ConditionalWriter.Result> results = cw.write(cmuts.iterator());
     while (results.hasNext()) {
       ConditionalWriter.Result result = results.next();
@@ -540,17 +439,9 @@ public class ConditionalMutationsPT implements PerformanceTest {
     if (cmuts.size() != count) {
       throw new RuntimeException();
     }
-    long t2 = System.currentTimeMillis();
-
-    double rate = 30000 / ((t2 - t1) / 1000.0);
-
-    // reportBuilder.info("time" + testRun, (t2 - t1),
-    // "SetBlockSizeTest: time (in seconds) to write conditions");
-    // reportBuilder.info("rate" + testRun, new Double(new DecimalFormat("#0.00").format(rate)),
-    // "SetBlockSizeTest: conditions/sec");
 
-    // System.out.printf("time: %d ms rate : %6.2f conditions/sec \n", (t2 - t1), rate);
+    long t2 = System.nanoTime();
 
-    return rate;
+    return 30000.0 / TimeUnit.NANOSECONDS.toSeconds(t2 - t1);
   }
 }