You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by Apache Wiki <wi...@apache.org> on 2008/10/17 14:03:03 UTC

[Jakarta-jmeter Wiki] Update of "JMeterMavenPlugin" by PeterAndersen

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-jmeter Wiki" for change notification.

The following page has been changed by PeterAndersen:
http://wiki.apache.org/jakarta-jmeter/JMeterMavenPlugin

------------------------------------------------------------------------------
  '''Executing the Plugin'''
    * Run "mvn org.apache.jmeter:maven-jmeter-plugin:jmeter" to run the tests.
  
+ '''Change to the plugin - by Peter Andersen / not committed!'''
+ 
+ (If this can be used - please commit this into the codebase)
+ 
+ Using jmeter from maven-jmeter-plugin as suggested on:
+ 
+ http://jlorenzen.blogspot.com/2008_03_01_archive.html
+ 
+ The problem is that maven hang after the test has ended.
+ 
+ Some debugging shows that the maven-jmeter-plugin call to jmeter course jmeter to leak threads,
+ I have done the following change to the maven-jmeter-plugin that fixes the problem, using checkForEndOfTest method below.
+ 
+ Hope someone can use this to improve the plugin.
+ 
+ Code changes to org.apache.jmeter.JMeterMojo.java:
+ 
+ {{{
+ 	private void executeTest(File test) throws MojoExecutionException {
+ 		/...	cut out from mail
+ 			try {
+ 				// This mess is necessary because the only way to know when JMeter
+ 				// is done is to wait for all of the threads that it spawned to exit.
+ 				new JMeter().start(args.toArray(new String[]{}));
+ 				BufferedReader in = new BufferedReader(new FileReader(jmeterLog));
+ 				while (!checkForEndOfTest(in)) {
+ 					try {
+ 						Thread.sleep(1000);
+ 					} catch (InterruptedException e) {
+ 						break;
+ 					}
+ 				}
+ 				in.close();
+ 			} catch (ExitException e) {
+ 				if (e.getCode() != 0) {
+ 					throw new MojoExecutionException("Test failed", e);
+ 				}
+ 			} finally {
+ 				System.setSecurityManager(oldManager);
+ 				Thread.setDefaultUncaughtExceptionHandler(oldHandler);
+ 			}
+ 		} catch (IOException e) {
+ 			throw new MojoExecutionException("Can't execute test", e);
+ 		}
+ 	}
+ 
+ 	private boolean checkForEndOfTest(BufferedReader in) throws MojoExecutionException {
+ 		boolean testEnded = false;
+ 		try {
+ 			String line;
+ 			while ( (line = in.readLine()) != null) {
+ 				if (line.indexOf("Test has ended") != -1) {
+ 					testEnded = true;
+ 					break;
+ 				}
+ 			}
+ 		} catch (IOException e) {
+ 			throw new MojoExecutionException("Can't read log file", e);
+ 		}
+ 		return testEnded;
+ 	}
+ 
+ 
+ }}}
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org