JMeter Integration Test Template POM
Here's the basic layout for a JMeter performance test using Cargo and Tomcat.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.alexecollins</groupId>
<artifactId>jmeter-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<url>/</url>
<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>default</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<tasks>
<!-- delete some files to ensure that test run from the same base-line -->
<delete includeemptydirs="true">
<fileset dir="${project.basedir}">
<include name="**/jmeter.log"/>
</fileset>
</delete>
</tasks>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.2.0</version>
<executions>
<!-- start AND deploy the war for this project,
war details need to be configured below too -->
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
<goal>deploy</goal>
</goals>
</execution>
<execution>
<id>stop-container</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
<configuration>
<container>
<type>installed</type>
<containerId>tomcat6x</containerId>
<zipUrlInstaller>
<url>http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.zip</url>
</zipUrlInstaller>
<dependencies>
<!-- add data-source dependencies here-->
</dependencies>
</container>
<configuration>
<files>
<copy>
<!-- copy in our a server.xml file (originally taken from executing "mvn cargo:run")
with added resource into Tomcat's conf dir -->
<file>src/test/conf/server.xml</file>
<todir>conf</todir>
</copy>
</files>
<properties>
<cargo.logging>medium</cargo.logging>
</properties>
</configuration>
<deployer>
<deployables>
<deployable>
<!-- a page to ensure that the app is up and running before the
load testing starts -->
<pingURL>http://localhost:8080/${project.build.finalName}/</pingURL>
<pingTimeout>300000</pingTimeout>
</deployable>
</deployables>
</deployer>
</configuration>
</plugin>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>jmeter-tests</id>
<phase>integration-test</phase>
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>