List of usage examples for org.apache.commons.cli.avalon CLArgsParser getArgumentById
public final CLOption getArgumentById(final int id)
null if no command line option is found. From source file:org.apache.jmeter.JMeter.java
/** * Takes the command line arguments and uses them to determine how to * startup JMeter.//from w w w .j av a 2 s.c o m * * Called reflectively by {@link NewDriver#main(String[])} * @param args The arguments for JMeter */ public void start(String[] args) { CLArgsParser parser = new CLArgsParser(args, options); String error = parser.getErrorString(); if (error == null) {// Check option combinations boolean gui = parser.getArgumentById(NONGUI_OPT) == null; boolean nonGuiOnly = parser.getArgumentById(REMOTE_OPT) != null || parser.getArgumentById(REMOTE_OPT_PARAM) != null || parser.getArgumentById(REMOTE_STOP) != null; if (gui && nonGuiOnly) { error = "-r and -R and -X are only valid in non-GUI mode"; } } if (null != error) { System.err.println("Error: " + error); System.out.println("Usage"); System.out.println(CLUtil.describeOptions(options).toString()); // repeat the error so no need to scroll back past the usage to see it System.out.println("Error: " + error); return; } try { initializeProperties(parser); // Also initialises JMeter logging /* * The following is needed for HTTPClient. * (originally tried doing this in HTTPSampler2, * but it appears that it was done too late when running in GUI mode) * Set the commons logging default to Avalon Logkit, if not already defined */ if (System.getProperty("org.apache.commons.logging.Log") == null) { // $NON-NLS-1$ System.setProperty("org.apache.commons.logging.Log" // $NON-NLS-1$ , "org.apache.commons.logging.impl.LogKitLogger"); // $NON-NLS-1$ } Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { if (!(e instanceof ThreadDeath)) { log.error("Uncaught exception: ", e); System.err.println("Uncaught Exception " + e + ". See log file for details."); } } }); log.info(JMeterUtils.getJMeterCopyright()); log.info("Version " + JMeterUtils.getJMeterVersion()); logProperty("java.version"); //$NON-NLS-1$ logProperty("java.vm.name"); //$NON-NLS-1$ logProperty("os.name"); //$NON-NLS-1$ logProperty("os.arch"); //$NON-NLS-1$ logProperty("os.version"); //$NON-NLS-1$ logProperty("file.encoding"); // $NON-NLS-1$ log.info("Max memory =" + Runtime.getRuntime().maxMemory()); log.info("Available Processors =" + Runtime.getRuntime().availableProcessors()); log.info("Default Locale=" + Locale.getDefault().getDisplayName()); log.info("JMeter Locale=" + JMeterUtils.getLocale().getDisplayName()); log.info("JMeterHome=" + JMeterUtils.getJMeterHome()); logProperty("user.dir", " ="); //$NON-NLS-1$ log.info("PWD =" + new File(".").getCanonicalPath());//$NON-NLS-1$ log.info("IP: " + JMeterUtils.getLocalHostIP() + " Name: " + JMeterUtils.getLocalHostName() + " FullName: " + JMeterUtils.getLocalHostFullName()); setProxy(parser); updateClassLoader(); if (log.isDebugEnabled()) { String jcp = System.getProperty("java.class.path");// $NON-NLS-1$ String[] bits = jcp.split(File.pathSeparator); log.debug("ClassPath"); for (String bit : bits) { log.debug(bit); } } // Set some (hopefully!) useful properties long now = System.currentTimeMillis(); JMeterUtils.setProperty("START.MS", Long.toString(now));// $NON-NLS-1$ Date today = new Date(now); // so it agrees with above // TODO perhaps should share code with __time() function for this... JMeterUtils.setProperty("START.YMD", new SimpleDateFormat("yyyyMMdd").format(today));// $NON-NLS-1$ $NON-NLS-2$ JMeterUtils.setProperty("START.HMS", new SimpleDateFormat("HHmmss").format(today));// $NON-NLS-1$ $NON-NLS-2$ if (parser.getArgumentById(VERSION_OPT) != null) { displayAsciiArt(); } else if (parser.getArgumentById(HELP_OPT) != null) { displayAsciiArt(); System.out.println(JMeterUtils.getResourceFileAsText("org/apache/jmeter/help.txt"));// $NON-NLS-1$ } else if (parser.getArgumentById(OPTIONS_OPT) != null) { displayAsciiArt(); System.out.println(CLUtil.describeOptions(options).toString()); } else if (parser.getArgumentById(SERVER_OPT) != null) { // Start the server try { RemoteJMeterEngineImpl.startServer(JMeterUtils.getPropDefault("server_port", 0)); // $NON-NLS-1$ } catch (Exception ex) { System.err.println("Server failed to start: " + ex); log.error("Giving up, as server failed with:", ex); throw ex; } startOptionalServers(); } else { String testFile = null; CLOption testFileOpt = parser.getArgumentById(TESTFILE_OPT); if (testFileOpt != null) { testFile = testFileOpt.getArgument(); if (USE_LAST_JMX.equals(testFile)) { testFile = LoadRecentProject.getRecentFile(0);// most recent } } CLOption testReportOpt = parser.getArgumentById(REPORT_GENERATING_OPT); if (testReportOpt != null) { // generate report from existing file String reportFile = testReportOpt.getArgument(); extractAndSetReportOutputFolder(parser); ReportGenerator generator = new ReportGenerator(reportFile, null); generator.generate(); } else if (parser.getArgumentById(NONGUI_OPT) == null) { // not non-GUI => GUI startGui(testFile); startOptionalServers(); } else { // NON-GUI must be true extractAndSetReportOutputFolder(parser); CLOption rem = parser.getArgumentById(REMOTE_OPT_PARAM); if (rem == null) { rem = parser.getArgumentById(REMOTE_OPT); } CLOption jtl = parser.getArgumentById(LOGFILE_OPT); String jtlFile = null; if (jtl != null) { jtlFile = processLAST(jtl.getArgument(), ".jtl"); // $NON-NLS-1$ } CLOption reportAtEndOpt = parser.getArgumentById(REPORT_AT_END_OPT); if (reportAtEndOpt != null) { if (jtlFile == null) { throw new IllegalUserActionException("Option -" + ((char) REPORT_AT_END_OPT) + " requires -" + ((char) LOGFILE_OPT) + " option"); } } startNonGui(testFile, jtlFile, rem, reportAtEndOpt != null); startOptionalServers(); } } } catch (IllegalUserActionException e) { System.out.println("Incorrect Usage:" + e.getMessage()); System.out.println(CLUtil.describeOptions(options).toString()); } catch (Throwable e) { log.fatalError("An error occurred: ", e); System.out.println("An error occurred: " + e.getMessage()); System.exit(1); // TODO - could this be return? } }
From source file:org.apache.jmeter.JMeter.java
/** * Extract option JMeter#REPORT_OUTPUT_FOLDER_OPT and if defined sets property * {@link JMeter#JMETER_REPORT_OUTPUT_DIR_PROPERTY} after checking folder can * be safely written to//from ww w.ja v a 2 s. c o m * @param parser {@link CLArgsParser} * @throws IllegalArgumentException */ private void extractAndSetReportOutputFolder(CLArgsParser parser) throws IllegalArgumentException { CLOption reportOutputFolderOpt = parser.getArgumentById(REPORT_OUTPUT_FOLDER_OPT); if (reportOutputFolderOpt != null) { String reportOutputFolder = parser.getArgumentById(REPORT_OUTPUT_FOLDER_OPT).getArgument(); File reportOutputFolderAsFile = new File(reportOutputFolder); JOrphanUtils.canSafelyWriteToFolder(reportOutputFolderAsFile); log.info("Setting property '" + JMETER_REPORT_OUTPUT_DIR_PROPERTY + "' to:'" + reportOutputFolderAsFile.getAbsolutePath() + "'"); JMeterUtils.setProperty(JMETER_REPORT_OUTPUT_DIR_PROPERTY, reportOutputFolderAsFile.getAbsolutePath()); } }
From source file:org.apache.jmeter.JMeter.java
/** * Sets a proxy server for the JVM if the command line arguments are * specified.//from w ww. j a v a 2s . co m */ private void setProxy(CLArgsParser parser) throws IllegalUserActionException { if (parser.getArgumentById(PROXY_USERNAME) != null) { Properties jmeterProps = JMeterUtils.getJMeterProperties(); if (parser.getArgumentById(PROXY_PASSWORD) != null) { String u, p; Authenticator .setDefault(new ProxyAuthenticator(u = parser.getArgumentById(PROXY_USERNAME).getArgument(), p = parser.getArgumentById(PROXY_PASSWORD).getArgument())); log.info("Set Proxy login: " + u + "/" + p); jmeterProps.setProperty(HTTP_PROXY_USER, u);//for Httpclient jmeterProps.setProperty(HTTP_PROXY_PASS, p);//for Httpclient } else { String u; Authenticator.setDefault( new ProxyAuthenticator(u = parser.getArgumentById(PROXY_USERNAME).getArgument(), "")); log.info("Set Proxy login: " + u); jmeterProps.setProperty(HTTP_PROXY_USER, u); } } if (parser.getArgumentById(PROXY_HOST) != null && parser.getArgumentById(PROXY_PORT) != null) { String h = parser.getArgumentById(PROXY_HOST).getArgument(); String p = parser.getArgumentById(PROXY_PORT).getArgument(); System.setProperty("http.proxyHost", h);// $NON-NLS-1$ System.setProperty("https.proxyHost", h);// $NON-NLS-1$ System.setProperty("http.proxyPort", p);// $NON-NLS-1$ System.setProperty("https.proxyPort", p);// $NON-NLS-1$ log.info("Set http[s].proxyHost: " + h + " Port: " + p); } else if (parser.getArgumentById(PROXY_HOST) != null || parser.getArgumentById(PROXY_PORT) != null) { throw new IllegalUserActionException(JMeterUtils.getResString("proxy_cl_error"));// $NON-NLS-1$ } if (parser.getArgumentById(NONPROXY_HOSTS) != null) { String n = parser.getArgumentById(NONPROXY_HOSTS).getArgument(); System.setProperty("http.nonProxyHosts", n);// $NON-NLS-1$ System.setProperty("https.nonProxyHosts", n);// $NON-NLS-1$ log.info("Set http[s].nonProxyHosts: " + n); } }
From source file:org.apache.jmeter.JMeter.java
private void initializeProperties(CLArgsParser parser) { if (parser.getArgumentById(PROPFILE_OPT) != null) { JMeterUtils.loadJMeterProperties(parser.getArgumentById(PROPFILE_OPT).getArgument()); } else {/*w w w .ja v a 2 s. c o m*/ JMeterUtils.loadJMeterProperties(NewDriver.getJMeterDir() + File.separator + "bin" + File.separator // $NON-NLS-1$ + "jmeter.properties");// $NON-NLS-1$ } if (parser.getArgumentById(JMLOGFILE_OPT) != null) { String jmlogfile = parser.getArgumentById(JMLOGFILE_OPT).getArgument(); jmlogfile = processLAST(jmlogfile, ".log");// $NON-NLS-1$ JMeterUtils.setProperty(LoggingManager.LOG_FILE, jmlogfile); } JMeterUtils.initLogging(); JMeterUtils.initLocale(); // Bug 33845 - allow direct override of Home dir if (parser.getArgumentById(JMETER_HOME_OPT) == null) { JMeterUtils.setJMeterHome(NewDriver.getJMeterDir()); } else { JMeterUtils.setJMeterHome(parser.getArgumentById(JMETER_HOME_OPT).getArgument()); } Properties jmeterProps = JMeterUtils.getJMeterProperties(); remoteProps = new Properties(); // Add local JMeter properties, if the file is found String userProp = JMeterUtils.getPropDefault("user.properties", ""); //$NON-NLS-1$ if (userProp.length() > 0) { //$NON-NLS-1$ FileInputStream fis = null; try { File file = JMeterUtils.findFile(userProp); if (file.canRead()) { log.info("Loading user properties from: " + file.getCanonicalPath()); fis = new FileInputStream(file); Properties tmp = new Properties(); tmp.load(fis); jmeterProps.putAll(tmp); LoggingManager.setLoggingLevels(tmp);//Do what would be done earlier } } catch (IOException e) { log.warn("Error loading user property file: " + userProp, e); } finally { JOrphanUtils.closeQuietly(fis); } } // Add local system properties, if the file is found String sysProp = JMeterUtils.getPropDefault("system.properties", ""); //$NON-NLS-1$ if (sysProp.length() > 0) { FileInputStream fis = null; try { File file = JMeterUtils.findFile(sysProp); if (file.canRead()) { log.info("Loading system properties from: " + file.getCanonicalPath()); fis = new FileInputStream(file); System.getProperties().load(fis); } } catch (IOException e) { log.warn("Error loading system property file: " + sysProp, e); } finally { JOrphanUtils.closeQuietly(fis); } } // Process command line property definitions // These can potentially occur multiple times List<CLOption> clOptions = parser.getArguments(); for (CLOption option : clOptions) { String name = option.getArgument(0); String value = option.getArgument(1); FileInputStream fis = null; switch (option.getDescriptor().getId()) { // Should not have any text arguments case CLOption.TEXT_ARGUMENT: throw new IllegalArgumentException("Unknown arg: " + option.getArgument()); case PROPFILE2_OPT: // Bug 33920 - allow multiple props try { fis = new FileInputStream(new File(name)); Properties tmp = new Properties(); tmp.load(fis); jmeterProps.putAll(tmp); LoggingManager.setLoggingLevels(tmp);//Do what would be done earlier } catch (FileNotFoundException e) { log.warn("Can't find additional property file: " + name, e); } catch (IOException e) { log.warn("Error loading additional property file: " + name, e); } finally { JOrphanUtils.closeQuietly(fis); } break; case SYSTEM_PROPFILE: log.info("Setting System properties from file: " + name); try { fis = new FileInputStream(new File(name)); System.getProperties().load(fis); } catch (IOException e) { log.warn("Cannot find system property file " + e.getLocalizedMessage()); } finally { JOrphanUtils.closeQuietly(fis); } break; case SYSTEM_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting System property: " + name + "=" + value); System.getProperties().setProperty(name, value); } else { // Reset it log.warn("Removing System property: " + name); System.getProperties().remove(name); } break; case JMETER_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting JMeter property: " + name + "=" + value); jmeterProps.setProperty(name, value); } else { // Reset it log.warn("Removing JMeter property: " + name); jmeterProps.remove(name); } break; case JMETER_GLOBAL_PROP: if (value.length() > 0) { // Set it log.info("Setting Global property: " + name + "=" + value); remoteProps.setProperty(name, value); } else { File propFile = new File(name); if (propFile.canRead()) { log.info("Setting Global properties from the file " + name); try { fis = new FileInputStream(propFile); remoteProps.load(fis); } catch (FileNotFoundException e) { log.warn("Could not find properties file: " + e.getLocalizedMessage()); } catch (IOException e) { log.warn("Could not load properties file: " + e.getLocalizedMessage()); } finally { JOrphanUtils.closeQuietly(fis); } } } break; case LOGLEVEL: if (value.length() > 0) { // Set category log.info("LogLevel: " + name + "=" + value); LoggingManager.setPriority(value, name); } else { // Set root level log.warn("LogLevel: " + name); LoggingManager.setPriority(name); } break; case REMOTE_STOP: remoteStop = true; break; default: // ignored break; } } String sampleVariables = (String) jmeterProps.get(SampleEvent.SAMPLE_VARIABLES); if (sampleVariables != null) { remoteProps.put(SampleEvent.SAMPLE_VARIABLES, sampleVariables); } jmeterProps.put("jmeter.version", JMeterUtils.getJMeterVersion()); }
From source file:org.apache.jmeter.JMeterReport.java
/** * * @param args/*from w ww . j ava 2 s .co m*/ */ public void start(String[] args) { CLArgsParser parser = new CLArgsParser(args, options); if (null != parser.getErrorString()) { System.err.println("Error: " + parser.getErrorString()); System.out.println("Usage"); System.out.println(CLUtil.describeOptions(options).toString()); return; } try { initializeProperties(parser); log.info("Version " + JMeterUtils.getJMeterVersion()); log.info("java.version=" + System.getProperty("java.version")); log.info(JMeterUtils.getJMeterCopyright()); if (parser.getArgumentById(VERSION_OPT) != null) { System.out.println(JMeterUtils.getJMeterCopyright()); System.out.println("Version " + JMeterUtils.getJMeterVersion()); } else if (parser.getArgumentById(HELP_OPT) != null) { System.out.println(JMeterUtils.getResourceFileAsText("org/apache/jmeter/help.txt")); } else if (parser.getArgumentById(NONGUI_OPT) == null) { startGui(parser.getArgumentById(TESTFILE_OPT)); } else { startNonGui(parser.getArgumentById(TESTFILE_OPT), parser.getArgumentById(LOGFILE_OPT)); } } catch (Exception e) { e.printStackTrace(); System.out.println("An error occurred: " + e.getMessage()); System.exit(-1); } }
From source file:org.apache.jmeter.JMeterReport.java
private void initializeProperties(CLArgsParser parser) { if (parser.getArgumentById(PROPFILE_OPT) != null) { JMeterUtils.getProperties(parser.getArgumentById(PROPFILE_OPT).getArgument()); } else {/*from w w w . j ava 2 s. c om*/ JMeterUtils.getProperties( NewDriver.getJMeterDir() + File.separator + "bin" + File.separator + "jmeter.properties"); } // Bug 33845 - allow direct override of Home dir if (parser.getArgumentById(JMETER_HOME_OPT) == null) { JMeterUtils.setJMeterHome(NewDriver.getJMeterDir()); } else { JMeterUtils.setJMeterHome(parser.getArgumentById(JMETER_HOME_OPT).getArgument()); } // Process command line property definitions (can occur multiple times) Properties jmeterProps = JMeterUtils.getJMeterProperties(); List<CLOption> clOptions = parser.getArguments(); int size = clOptions.size(); for (int i = 0; i < size; i++) { CLOption option = clOptions.get(i); String name = option.getArgument(0); String value = option.getArgument(1); switch (option.getDescriptor().getId()) { case PROPFILE2_OPT: // Bug 33920 - allow multiple props File f = new File(name); FileInputStream inStream = null; try { inStream = new FileInputStream(f); jmeterProps.load(inStream); } catch (FileNotFoundException e) { log.warn("Can't find additional property file: " + name, e); } catch (IOException e) { log.warn("Error loading additional property file: " + name, e); } finally { IOUtils.closeQuietly(inStream); } break; case SYSTEM_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting System property: " + name + "=" + value); System.getProperties().setProperty(name, value); } else { // Reset it log.warn("Removing System property: " + name); System.getProperties().remove(name); } break; case JMETER_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting JMeter property: " + name + "=" + value); jmeterProps.setProperty(name, value); } else { // Reset it log.warn("Removing JMeter property: " + name); jmeterProps.remove(name); } break; case LOGLEVEL: if (value.length() > 0) { // Set category log.info("LogLevel: " + name + "=" + value); LoggingManager.setPriority(value, name); } else { // Set root level log.warn("LogLevel: " + name); LoggingManager.setPriority(name); } break; default: // ignored break; } } }