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; - } - }}} -