jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Jmeter Wiki] Update of "JMeterMavenPlugin" by Ardesco
Date Tue, 12 Mar 2013 21:09:56 GMT
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;
-         }
- }}}
- 

Mime
View raw message