diff --git a/pom.xml b/pom.xml
index 6c464e5..904cc7f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
org.jperf
jperf
jperf
- 2.0.3-SNAPSHOT
+ 2.0.3
jar
diff --git a/src/main/java/org/jperf/ConfigBuilder.java b/src/main/java/org/jperf/ConfigBuilder.java
index ea65735..88b3d9a 100644
--- a/src/main/java/org/jperf/ConfigBuilder.java
+++ b/src/main/java/org/jperf/ConfigBuilder.java
@@ -4,7 +4,9 @@ public interface ConfigBuilder {
ConfigBuilder minThreads(int minThreads);
ConfigBuilder maxThreads(int maxThreads);
ConfigBuilder threadIncrement(int threadIncrement);
- ConfigBuilder duration(int duration);
+ @Deprecated ConfigBuilder duration(int duration);
+ ConfigBuilder durationPerThread(int duration);
+ ConfigBuilder durationTotal(int duration);
ConfigBuilder testFactory(PerfTestFactory testFactory);
ConfigBuilder resultWriter(ResultWriter resultWriter);
void run() throws Exception;
diff --git a/src/main/java/org/jperf/DefaultConfigBuilder.java b/src/main/java/org/jperf/DefaultConfigBuilder.java
index 0293c04..677bbdf 100644
--- a/src/main/java/org/jperf/DefaultConfigBuilder.java
+++ b/src/main/java/org/jperf/DefaultConfigBuilder.java
@@ -32,8 +32,20 @@ public ConfigBuilder threadIncrement(int threadIncrement) {
}
@Override
- public ConfigBuilder duration(int duration) {
- config.duration = duration;
+ public ConfigBuilder duration(int durationPerThread) {
+ config.durationPerThread = durationPerThread;
+ return this;
+ }
+
+ @Override
+ public ConfigBuilder durationPerThread(int durationPerThread) {
+ config.durationPerThread = durationPerThread;
+ return this;
+ }
+
+ @Override
+ public ConfigBuilder durationTotal(int durationTotal) {
+ config.durationTotal = durationTotal;
return this;
}
diff --git a/src/main/java/org/jperf/JPerf.java b/src/main/java/org/jperf/JPerf.java
index be2dced..1e22953 100644
--- a/src/main/java/org/jperf/JPerf.java
+++ b/src/main/java/org/jperf/JPerf.java
@@ -71,6 +71,14 @@ private static void showUsage() {
public static void run(final PerfTestConfig config) throws Exception {
+ // validate configs and set defaults
+ if (config.durationPerThread==0) {
+ if (config.durationTotal==0) {
+ throw new RuntimeException("No duration specified");
+ }
+ config.durationPerThread = config.durationTotal / config.maxThreads;
+ }
+
// create executors and test runners (one of each per thread)
final ExecutorService exec[] = new ExecutorService[config.maxThreads];
final SingleTestRunner testRunner[] = new SingleTestRunner[config.maxThreads];
@@ -99,7 +107,7 @@ public static void run(final PerfTestConfig config) throws Exception {
}
final long start = System.currentTimeMillis();
- Thread.sleep(config.duration);
+ Thread.sleep(config.durationPerThread);
final long actualDuration = System.currentTimeMillis() - start;
// collect the totals
@@ -134,8 +142,13 @@ public static void run(final PerfTestConfig config) throws Exception {
}
}
- public static ConfigBuilder newConfigBuilder() {
+ public static ConfigBuilder newTestRun() {
return new DefaultConfigBuilder();
}
+ @Deprecated
+ public static ConfigBuilder newConfigBuilder() {
+ return newTestRun();
+ }
+
}
diff --git a/src/main/java/org/jperf/PerfTestConfig.java b/src/main/java/org/jperf/PerfTestConfig.java
index acb2243..f2923a2 100644
--- a/src/main/java/org/jperf/PerfTestConfig.java
+++ b/src/main/java/org/jperf/PerfTestConfig.java
@@ -6,7 +6,8 @@ public class PerfTestConfig {
protected int minThreads = 1;
protected int maxThreads = 10;
protected int threadIncrement = 1;
- protected int duration = 1000;
+ protected int durationPerThread = 0;
+ protected int durationTotal = 0;
protected ResultWriter resultWriter = new ResultWriterStdout();
protected PerfTestFactory testFactory;
@@ -16,7 +17,8 @@ public String toString() {
"minThreads=" + minThreads +
", maxThreads=" + maxThreads +
", threadIncrement=" + threadIncrement +
- ", duration=" + duration +
+ ", durationPerThread=" + durationPerThread +
+ ", durationTotal=" + durationTotal +
'}';
}
}