Prechádzať zdrojové kódy

Add JCommander parser

Vincent Spiewak 12 rokov pred
rodič
commit
6014800a5d

+ 8 - 1
pom.xml

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

+ 17 - 19
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(nbThreads);
+        LogExecutor executor = new LogExecutor(params.threads);
 
-        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");
 
     }

+ 16 - 0
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;
+
+}