{{{#!wiki red/solid Please note: the JMeter Maven plugin is a 3rd party product; it is not part of the Apache JMeter project
}}}
A more recent version of this wiki page can be found here
https://github.com/Ronnie76er/jmeter-maven-plugin/wiki
This is a Maven 2 plugin that allows you to run JMeter tests as part of the build. I am using this with JChav and Continuum to automate the running of a suite of JMeter load tests, and publish the results to a web page. Sorry this is not more polished. It could use some TLC to make it more user-friendly to actually plug it into a project. I just thought I'd stick the code out there as quickly as possible and see if anyone is interested in it before I went any further with it.
To build and use the plugin:
Remote Repository
Deploy JMeter Jar
mvn deploy:deploy-file -DgroupId=org.apache.jmeter -DartifactId=jmeter -Dversion=2.2 -Dpackaging=jar -Dfile=c://downloads//jmeter//jmeterPlugin/jmeter-2.2.jar -DpomFile=c://downloads//jmeter//jmeterPlugin/jmeter-2.2.pom -Durl=file:////myRepoHost.com/FileShare/ProductDevelopment/ApplicationDevelopment/maven2repository -DrepositoryId=my-repo |
Deploy Dependencies
Install the Plugin
<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>maven-jmeter-plugin</artifactId> <version>1.0-SNAPSHOT</version> </dependency> |
Configure the Plugin
<build> <plugins> <plugin> <groupId>org.apache.jmeter</groupId> <artifactId>maven-jmeter-plugin</artifactId> <configuration> <includes> <include>myTest1.jmx</include> <include>myTest2.jmx</include> </includes> </configuration> </plugin> </plugins> </build> |
<build> <plugins> <plugin> <groupId>org.apache.jmeter</groupId> <artifactId>maven-jmeter-plugin</artifactId> <configuration> <includes> <include>myTest1.jmx</include> <include>myTest2.jmx</include> </includes> <reportDir>target/jmeter-reports</reportDir> </configuration> </plugin> </plugins> </build> |
Executing the Plugin
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; } |