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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to