You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2011/12/12 14:11:06 UTC
svn commit: r1213223 - in
/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk:
concurrent/ConcurrentBlobTest.java concurrent/ConcurrentCacheTest.java
concurrent/ConcurrentTest.java util/Concurrent.java
Author: thomasm
Date: Mon Dec 12 13:11:06 2011
New Revision: 1213223
URL: http://svn.apache.org/viewvc?rev=1213223&view=rev
Log:
Support profiling and benchmarks.
Modified:
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentBlobTest.java
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentCacheTest.java
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentTest.java
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/util/Concurrent.java
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentBlobTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentBlobTest.java?rev=1213223&r1=1213222&r2=1213223&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentBlobTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentBlobTest.java Mon Dec 12 13:11:06 2011
@@ -45,7 +45,7 @@ public class ConcurrentBlobTest {
@Test
public void test() throws Exception {
final AtomicInteger id = new AtomicInteger();
- Concurrent.run(new Task() {
+ Concurrent.run("blob", new Task() {
public void call() throws Exception {
int i = id.getAndIncrement();
ByteArrayOutputStream out = new ByteArrayOutputStream();
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentCacheTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentCacheTest.java?rev=1213223&r1=1213222&r2=1213223&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentCacheTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentCacheTest.java Mon Dec 12 13:11:06 2011
@@ -34,7 +34,7 @@ public class ConcurrentCacheTest impleme
@Test
public void test() throws Exception {
- Concurrent.run(new Task() {
+ Concurrent.run("cache", new Task() {
public void call() throws Exception {
int k = value++ % 10;
Data v = cache.get(k);
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentTest.java?rev=1213223&r1=1213222&r2=1213223&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/concurrent/ConcurrentTest.java Mon Dec 12 13:11:06 2011
@@ -34,11 +34,8 @@ public class ConcurrentTest extends Mult
@Test
public void test() throws Exception {
- if (url.startsWith("mem:")) {
- return;
- }
final AtomicInteger id = new AtomicInteger();
- Concurrent.run(new Task() {
+ Concurrent.run(url, new Task() {
public void call() throws Exception {
long start = System.currentTimeMillis();
String rev = mk.getHeadRevision();
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/util/Concurrent.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/util/Concurrent.java?rev=1213223&r1=1213222&r2=1213223&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/util/Concurrent.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/util/Concurrent.java Mon Dec 12 13:11:06 2011
@@ -18,33 +18,47 @@ package org.apache.jackrabbit.mk.util;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
+import org.h2.util.Profiler;
/**
* A concurrency test tool.
*/
public class Concurrent {
+ private static final boolean BENCHMARK = false;
+ private static final boolean PROFILE = false;
+
/**
* Run a task concurrently in 2 threads for 1 second.
*
+ * @param message the message
* @param task the task
* @throws Exception the first exception that is thrown (if any)
*/
- public static void run(Task task) throws Exception {
- run(task, 2, 1000);
+ public static void run(String message, Task task) throws Exception {
+ run(message, task, 2, 1000);
}
- public static void run(final Task task, int threadCount, int millis) throws Exception {
+ public static void run(String message, final Task task, int threadCount, int millis) throws Exception {
final AtomicBoolean stopped = new AtomicBoolean();
final AtomicReference<Throwable> exception = new AtomicReference<Throwable>();
ArrayList<Thread> threads = new ArrayList<Thread>();
+ final AtomicInteger counter = new AtomicInteger();
+ StopWatch timer = new StopWatch();
+ Profiler p = new Profiler();
+ if (PROFILE) {
+ p.interval = 1;
+ p.startCollecting();
+ }
for (int i = 0; i < threadCount; i++) {
Thread t = new Thread("Task " + i) {
public void run() {
while (!stopped.get()) {
try {
task.call();
+ counter.incrementAndGet();
} catch (Error e) {
exception.set(e);
stopped.set(true);
@@ -55,8 +69,17 @@ public class Concurrent {
}
}
};
- t.start();
- threads.add(t);
+ if (threadCount == 1) {
+ long stop = millis + System.currentTimeMillis();
+ while (System.currentTimeMillis() < stop) {
+ task.call();
+ counter.incrementAndGet();
+ }
+ millis = 0;
+ } else {
+ t.start();
+ threads.add(t);
+ }
}
Throwable e = null;
while (e == null && millis > 0) {
@@ -74,6 +97,13 @@ public class Concurrent {
}
throw (Error) e;
}
+ if (BENCHMARK) {
+ String t = timer.operationsPerSecond(counter.get());
+ System.out.println(message + ": " + t);
+ }
+ if (PROFILE) {
+ System.out.println(p.getTop(5));
+ }
}
public interface Task {