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 + '}'; } }