Add JCommander parser

This commit is contained in:
Vincent Spiewak
2013-09-13 16:24:27 +02:00
parent 3cee4afaf0
commit 6014800a5d
3 changed files with 41 additions and 20 deletions

View File

@@ -37,7 +37,8 @@
<!-- Dependencies versions --> <!-- Dependencies versions -->
<slf4j.version>1.7.5</slf4j.version> <slf4j.version>1.7.5</slf4j.version>
<logback.version>1.0.13</logback.version> <logback.version>1.0.13</logback.version>
<jcommander.version>1.30</jcommander.version>
<maven.versions>[2.2.1, 3.1.0)</maven.versions> <maven.versions>[2.2.1, 3.1.0)</maven.versions>
<java.version>1.6</java.version> <java.version>1.6</java.version>
<maven.shade.plugin>2.1</maven.shade.plugin> <maven.shade.plugin>2.1</maven.shade.plugin>
@@ -78,6 +79,12 @@
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>${jcommander.version}</version>
</dependency>
<!-- Junit --> <!-- Junit -->
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>

View File

@@ -1,5 +1,7 @@
package com.github.vspiewak.loggenerator; package com.github.vspiewak.loggenerator;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.ParameterException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -11,42 +13,38 @@ public class App {
private static final Logger log = LoggerFactory.getLogger(App.class); private static final Logger log = LoggerFactory.getLogger(App.class);
private static AtomicLong counter = new AtomicLong(0); 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) { public static void main(String[] args) {
long nbLogsToGenerate = DEFAULT_NB_LOGS; InputParameters params = new InputParameters();
int nbThreads = DEFAULT_NB_THREAD; JCommander commander = new JCommander(params);
try {
if(args.length > 0) { commander.parse(args);
try { } catch (ParameterException e) {
nbLogsToGenerate = Long.parseLong(args[0]); commander.usage();
} catch(NumberFormatException e) { System.exit(1);
log.info("Usage: first argument must be the number of logs to generate");
System.exit(1);
}
} }
log.trace("starting"); log.trace("starting");
long start_time = System.nanoTime(); LogExecutor executor = new LogExecutor(params.threads);
LogExecutor executor = new LogExecutor(nbThreads); while (counter.get() < params.logs) {
while (counter.get() < nbLogsToGenerate) {
long number = counter.incrementAndGet(); long number = counter.incrementAndGet();
SearchTask aSearchTask = new SearchTask(number); SearchTask aSearchTask = new SearchTask(number);
SellTask aSellTask = new SellTask(number); SellTask aSellTask = new SellTask(number);
executor.addAll(Arrays.asList(aSearchTask, aSellTask)); executor.addAll(Arrays.asList(aSearchTask, aSellTask));
} }
log.trace("initialization done");
long start_time = System.nanoTime();
executor.execute(); executor.execute();
long end_time = System.nanoTime(); 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"); log.trace("shutdown");
} }

View File

@@ -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;
}