You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Apache Wiki <wi...@apache.org> on 2013/03/12 22:09:56 UTC
[Jmeter Wiki] Update of "JMeterMavenPlugin" by Ardesco
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Jmeter Wiki" for change notification.
The "JMeterMavenPlugin" page has been changed by Ardesco:
http://wiki.apache.org/jmeter/JMeterMavenPlugin?action=diff&rev1=9&rev2=10
Comment:
Updated to provide current information
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
+ '''JMeter Maven Plugin'''
+ This is a Maven 2 plugin that allows you to run JMeter tests as part of the build.
- 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 [[http://jchav.blogspot.com/|JChav]] and [[http://maven.apache.org/continuum/|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:<<BR>> <<BR>> '''Remote Repository'''
-
- * Create a locally hosted remote Maven repository, if you don't already have one.
- * Configure your pom to utilize this remote repository.
-
- '''Deploy JMeter Jar'''
-
- * Deploy the attached [[attachment:jmeter-2.2.jar|JMeter jar]] and [[attachment:jmeter-2.2.pom|POM]] to your remote repository (note that you do not need to have JMeter separately installed). For example:
- {{{
- 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'''
-
- * Add the jar files that are referenced in the JMeter POM to your local repository, via the deploy plugin, if they are not on ibiblio.
'''Install the Plugin'''
+ This plugin is available from the maven central repository, as long as you have a working install of maven you only need to create a valid pom.xml that references this plugin.
- * Download the attached [[attachment:maven-jmeter-plugin-src.tar.gz|Maven JMeter Plugin source tarball]]. Untar it.
- * Run "mvn install" to build and install the plugin.
- * In your project's pom.xml, add a dependency on this plugin:
- {{{
- <dependency>
- <groupId>org.apache.jmeter</groupId>
- <artifactId>maven-jmeter-plugin</artifactId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
- }}}
- '''Configure the Plugin'''
+ '''Basic Configuration'''
* Create a src/test/jmeter directory, and place your JMeter load tests there.
- * Create a jmeter.properties file in src/test/jmeter. It's fine to just copy the default properties file from the JMeter install if you want.
- * Optionally configure includes and excludes in your pom.xml for which tests to run. If you don't, it will just run **/*.jmx. For example:
+ * Add the plugin to your pom.xml
+
{{{
+ +---+
+ <project>
+ [...]
- <build>
+ <build>
- <plugins>
+ <pluginManagement>
- <plugin>
+ <plugins>
- <groupId>org.apache.jmeter</groupId>
+ <plugin>
+ <groupId>com.lazerycode.jmeter</groupId>
- <artifactId>maven-jmeter-plugin</artifactId>
+ <artifactId>jmeter-maven-plugin</artifactId>
- <configuration>
- <includes>
- <include>myTest1.jmx</include>
- <include>myTest2.jmx</include>
- </includes>
- </configuration>
+ <version>1.8.0</version>
+ <executions>
+ <execution>
+ <id>jmeter-tests</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>jmeter</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
- </plugin>
+ </plugins>
- </plugins>
+ </pluginManagement>
- </build>
+ </build>
+ [...]
+ </project>
+ +---+
- }}}
-
- * The default reports directory is 'jmeter-reports' which is created in the base folder ( usually where maven is run from )
- * Changing the reports directory : Add a reportDir setting to the plugin configuration. for example:
- {{{
- <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'''
- * Run "mvn org.apache.jmeter:maven-jmeter-plugin:jmeter" to run the tests.
+ * Run "mvn verify" to run the tests (Best practive would be to assign the JMeter tests to a specific profile so that they only run when invoking that profile).
- '''Change to the plugin - by Peter Andersen / not committed!'''
+ '''External Links'''
- (If this can be used - please commit this into the codebase)
+ The source code for this plugin can be found at https://github.com/Ronnie76er/jmeter-maven-plugin
- Using jmeter from maven-jmeter-plugin as suggested on:
+ The official website (which is a work in progress, you are better off looking at the github pages) is available at http://jmeter.lazerycode.com
- http://jlorenzen.blogspot.com/2008_03_01_archive.html
+ The github wiki has more detailed configuration information and is available at https://github.com/Ronnie76er/jmeter-maven-plugin/wiki
- 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;
- }
- }}}
-