@Override public void testStarted() { if (JMeter.isNonGUI()) { out = System.out; } else { out = new JMeterLoggerOutputStream(log); } cur = 0; }
private HashTree loadJMX(InputStream reader) throws Exception { HashTree tree = SaveService.loadTree(reader); // unfortunately core JMeter code does not throw exception, we may only guess... if (tree == null) { throw new TestPlanBrokenException("There was problems loading test plan. Please investigate error messages above."); } JMeter.convertSubTree(tree); // Remove the disabled items JMeterEngine engine = new StandardJMeterEngine(); engine.configure(tree); return tree; }
private void startNonGui(String testFile, String logFile, CLOption remoteStart, boolean generateReportDashboard) throws IllegalUserActionException, ConfigurationException { // add a system property so samplers can check to see if JMeter // is running in NonGui mode System.setProperty(JMETER_NON_GUI, "true");// $NON-NLS-1$ JMeter driver = new JMeter();// TODO - why does it create a new instance? driver.remoteProps = this.remoteProps; driver.remoteStop = this.remoteStop; driver.deleteResultFile = this.deleteResultFile; PluginManager.install(this, false); String remoteHostsString = null; if (remoteStart != null) { remoteHostsString = remoteStart.getArgument(); if (remoteHostsString == null) { remoteHostsString = JMeterUtils.getPropDefault( "remote_hosts", //$NON-NLS-1$ "127.0.0.1");//NOSONAR $NON-NLS-1$ } } if (testFile == null) { throw new IllegalUserActionException("Non-GUI runs require a test plan"); } driver.runNonGui(testFile, logFile, remoteStart != null, remoteHostsString, generateReportDashboard); }
initializeProperties(parser); // Also initialises JMeter logging setProxy(parser); updateClassLoader(); if (log.isDebugEnabled()) displayAsciiArt(); } else if (parser.getArgumentById(HELP_OPT) != null) { displayAsciiArt(); System.out.println(JMeterUtils.getResourceFileAsText("org/apache/jmeter/help.txt"));//NOSONAR $NON-NLS-1$ } else if (parser.getArgumentById(OPTIONS_OPT) != null) { displayAsciiArt(); startOptionalServers(); } catch (Exception ex) { System.err.println("Server failed to start: "+ex);//NOSONAR if (testReportOpt != null) { // generate report from existing file String reportFile = testReportOpt.getArgument(); extractAndSetReportOutputFolder(parser, false); 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, deleteResultFile);
File f = new File(testFile); if (!f.exists() || !f.isFile()) { println("Could not open " + testFile); return; convertSubTree(tree); if (summariserName.length() > 0) { log.info("Creating summariser <{}>", summariserName); println("Creating summariser <" + summariserName + ">"); summariser = new Summariser(summariserName); println("Created the tree successfully using "+testFile); if (!remoteStart) { JMeterEngine engine = new StandardJMeterEngine(); engine.configure(tree); long now=System.currentTimeMillis(); println("Starting the test @ "+new Date(now)+" ("+now+")"); engine.runTest(); engines.add(engine); distributedRunner.start(); startUdpDdaemon(engines); } catch (Exception e) { System.out.println("Error in NonGUIDriver " + e.toString());//NOSONAR
if (item.isEnabled()) { if (item instanceof ReplaceableController) { ReplaceableController rc = ensureReplaceableControllerIsLoaded(item); HashTree replacementTree = rc.getReplacementSubTree(); if (replacementTree != null) { convertSubTree(replacementTree); tree.replaceKey(item, rc); tree.set(rc, replacementTree); convertSubTree(tree.getTree(item)); ReplaceableController rc = ensureReplaceableControllerIsLoaded(controllerAsItem); HashTree replacementTree = rc.getReplacementSubTree(); if (replacementTree != null) { convertSubTree(replacementTree); tree.replaceKey(item, rc); tree.set(rc, replacementTree); convertSubTree(tree.getTree(item)); TestElement testElement = item.getTestElement(); tree.replaceKey(item, testElement);
@Override public void testStarted() { if (JMeter.isNonGUI()) { out = System.out; } else { out = new JMeterLoggerOutputStream(log); } cur = 0; }
private HashTree loadJMX(File file) throws Exception { HashTree tree = SaveService.loadTree(file); // unfortunately core JMeter code does not throw exception, we may only guess... if (tree == null) { throw new TestPlanBrokenException("There was problems loading test plan. Please investigate error messages above."); } JMeter.convertSubTree(tree); // Remove the disabled items JMeterEngine engine = new StandardJMeterEngine(); engine.configure(tree); return tree; }
@Override public void run() { running = false; resetSingletonEngine(); if (now) { tellThreadGroupsToStop(); pause(10L * countStillActiveThreads()); boolean stopped = verifyThreadsStopped(); if (!stopped) { // we totally failed to stop the test if (JMeter.isNonGUI()) { // TODO should we call test listeners? That might hang too ... log.error(JMeterUtils.getResString("stopping_test_failed")); //$NON-NLS-1$ if (SYSTEM_EXIT_ON_STOP_FAIL) { // default is true log.error("Exiting"); System.out.println("Fatal error, could not stop test, exiting"); // NOSONAR Intentional System.exit(1); // NOSONAR Intentional } else { System.out.println("Fatal error, could not stop test"); // NOSONAR Intentional } } else { JMeterUtils.reportErrorToUser( JMeterUtils.getResString("stopping_test_failed"), //$NON-NLS-1$ JMeterUtils.getResString("stopping_test_title")); //$NON-NLS-1$ } } // else will be done by threadFinished() } else { stopAllThreadGroups(); } } }
private HashTree getTestTree() { GuiPackage gui = GuiPackage.getInstance(); HashTree testTree = gui.getTreeModel().getTestPlan(); JMeter.convertSubTree(testTree); testTree.add(testTree.getArray()[0], gui.getMainFrame()); // Used for remote notification of threads start/stop,see BUG 54152 testTree.add(testTree.getArray()[0], new RemoteThreadsListenerTestElement()); return testTree; } }
if (JMeter.isNonGUI() && SYSTEM_EXIT_FORCED) { log.info("Forced JVM shutdown requested at end of test"); System.exit(0); // NOSONAR Intentional
HashTree testTree = gui.getTreeModel().getTestPlan(); JMeter.convertSubTree(testTree); if(threadGroupsToRun != null && threadGroupsToRun.length>0) { removeThreadGroupsFromHashTree(testTree, threadGroupsToRun);
private void stopTest() { stopTries++; if (JMeter.isNonGUI()) { log.info("Stopping JMeter via UDP call"); stopTestViaUDP("StopTestNow"); } else { if (stopTries > 10) { log.info("Tries more than 10, stop it NOW!"); StandardJMeterEngine.stopEngineNow(); } else if (stopTries > 5) { log.info("Tries more than 5, stop it!"); StandardJMeterEngine.stopEngine(); } else { JMeterContextService.getContext().getEngine().askThreadsToStop(); } } }
private void stopTest() { stopTries++; if (JMeter.isNonGUI()) { log.info("Stopping JMeter via UDP call"); stopTestViaUDP("StopTestNow"); } else { if (stopTries > 10) { log.info("Tries more than 10, stop it NOW!"); StandardJMeterEngine.stopEngineNow(); } else if (stopTries > 5) { log.info("Tries more than 5, stop it!"); StandardJMeterEngine.stopEngine(); } else { JMeterContextService.getContext().getEngine().askThreadsToStop(); } } }