# ignite-47 Add method GridTestUtil.benchmark()
(cherry picked from commit ce2d266)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2d1b861f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2d1b861f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2d1b861f

Branch: refs/heads/ignite-gg-9828
Commit: 2d1b861f84e29770fcebb61fa571e661f3ec38be
Parents: 5d460e0
Author: sevdokimov <sevdoki...@gridgain.com>
Authored: Sat Mar 7 14:31:50 2015 +0300
Committer: sevdokimov <sevdoki...@gridgain.com>
Committed: Wed Mar 11 18:17:36 2015 +0300

----------------------------------------------------------------------
 .../ignite/testframework/GridTestUtils.java     | 50 ++++++++++++++++++++
 1 file changed, 50 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d1b861f/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
index 96b1d7a..90c6cb6 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
@@ -45,6 +45,7 @@ import java.nio.file.attribute.*;
 import java.security.*;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.concurrent.atomic.*;
 
 /**
  * Utility class for tests.
@@ -1423,6 +1424,55 @@ public final class GridTestUtils {
     }
 
     /**
+     * @param name Name.
+     * @param run Run.
+     */
+    public static void benchmark(@Nullable String name, @NotNull Runnable run) 
{
+        benchmark(name, 8000, 10000, run);
+    }
+
+    /**
+     * @param name Name.
+     * @param warmup Warmup.
+     * @param executionTime Time.
+     * @param run Run.
+     */
+    public static void benchmark(@Nullable String name, long warmup, long 
executionTime, @NotNull Runnable run) {
+        final AtomicBoolean stop = new AtomicBoolean();
+
+        class Stopper extends TimerTask {
+            @Override public void run() {
+                stop.set(true);
+            }
+        }
+
+        new Timer(true).schedule(new Stopper(), warmup);
+
+        while (!stop.get())
+            run.run();
+
+        stop.set(false);
+
+        new Timer(true).schedule(new Stopper(), executionTime);
+
+        long startTime = System.currentTimeMillis();
+
+        int cnt = 0;
+
+        do {
+            run.run();
+
+            cnt++;
+        }
+        while (!stop.get());
+
+        double dur = (System.currentTimeMillis() - startTime) / 1000d;
+
+        System.out.printf("%s:\n operations:%d, duration=%fs, op/s=%d, 
latency=%fms\n", name, cnt, dur,
+            (long)(cnt / dur), dur / cnt);
+    }
+
+    /**
      * @return Path to apache ignite.
      */
     public static String apacheIgniteTestPath() {

Reply via email to