diff --git a/pom.xml b/pom.xml
index 0970170..c7db4f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,8 @@
1.7.5
1.0.13
-
+ 1.30
+
[2.2.1, 3.1.0)
1.6
2.1
@@ -78,6 +79,12 @@
runtime
+
+ com.beust
+ jcommander
+ ${jcommander.version}
+
+
junit
diff --git a/src/main/java/com/github/vspiewak/loggenerator/App.java b/src/main/java/com/github/vspiewak/loggenerator/App.java
index 9805d6b..8a4da8f 100644
--- a/src/main/java/com/github/vspiewak/loggenerator/App.java
+++ b/src/main/java/com/github/vspiewak/loggenerator/App.java
@@ -1,5 +1,7 @@
package com.github.vspiewak.loggenerator;
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.ParameterException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -11,42 +13,38 @@ public class App {
private static final Logger log = LoggerFactory.getLogger(App.class);
private static AtomicLong counter = new AtomicLong(0);
- public static final long DEFAULT_NB_LOGS = 100;
- public static final int DEFAULT_NB_THREAD = 2;
-
public static void main(String[] args) {
- long nbLogsToGenerate = DEFAULT_NB_LOGS;
- int nbThreads = DEFAULT_NB_THREAD;
-
- if(args.length > 0) {
- try {
- nbLogsToGenerate = Long.parseLong(args[0]);
- } catch(NumberFormatException e) {
- log.info("Usage: first argument must be the number of logs to generate");
- System.exit(1);
- }
+ InputParameters params = new InputParameters();
+ JCommander commander = new JCommander(params);
+ try {
+ commander.parse(args);
+ } catch (ParameterException e) {
+ commander.usage();
+ System.exit(1);
}
log.trace("starting");
- long start_time = System.nanoTime();
+ LogExecutor executor = new LogExecutor(params.threads);
- LogExecutor executor = new LogExecutor(nbThreads);
-
- while (counter.get() < nbLogsToGenerate) {
+ while (counter.get() < params.logs) {
long number = counter.incrementAndGet();
SearchTask aSearchTask = new SearchTask(number);
SellTask aSellTask = new SellTask(number);
executor.addAll(Arrays.asList(aSearchTask, aSellTask));
}
+ log.trace("initialization done");
+
+ long start_time = System.nanoTime();
+
executor.execute();
long end_time = System.nanoTime();
- double difference = (end_time - start_time)/1e6;
+ double difference = (end_time - start_time) / 1e6;
- log.trace("generated {} logs in {}ms using {} threads", counter.get(), (int)difference, nbThreads);
+ log.trace("generated {} logs in {}ms using {} threads", counter.get(), (int) difference, params.threads);
log.trace("shutdown");
}
diff --git a/src/main/java/com/github/vspiewak/loggenerator/InputParameters.java b/src/main/java/com/github/vspiewak/loggenerator/InputParameters.java
new file mode 100644
index 0000000..eab49cb
--- /dev/null
+++ b/src/main/java/com/github/vspiewak/loggenerator/InputParameters.java
@@ -0,0 +1,16 @@
+package com.github.vspiewak.loggenerator;
+
+import com.beust.jcommander.Parameter;
+
+public class InputParameters {
+
+ @Parameter(names = { "-log", "-n" }, description = "Number of logs to generate")
+ public Long logs = 10L;
+
+ @Parameter(names = { "-threads", "-t" }, description = "Number of threads to use")
+ public Integer threads = 2;
+
+ @Parameter(names = "--help", help = true)
+ private boolean help;
+
+}