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

Reply via email to