From 6014800a5d166da674dfacbe308f3bb367a52c92 Mon Sep 17 00:00:00 2001 From: Vincent Spiewak Date: Fri, 13 Sep 2013 16:24:27 +0200 Subject: [PATCH] Add JCommander parser --- pom.xml | 9 ++++- .../com/github/vspiewak/loggenerator/App.java | 36 +++++++++---------- .../loggenerator/InputParameters.java | 16 +++++++++ 3 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/github/vspiewak/loggenerator/InputParameters.java 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; + +}