Example how to integrate jmeter tests in a maven build and how to automatically generate graphs from the test results using the jmeter plugins CMDRunner.
The jmeter tests can easily be used as part of a jenkins-job. See https://mlex.ci.cloudbees.com/job/jmeter-maven-example/. The repository also contains a docker-image of a preconfigured jenkins.
This example was created to accompany a blog post: https://blog.codecentric.de/2013/12/jmeter-tests-mit-maven-und-jenkins-automatisieren/
The jmeter-maven-plugin is used to integrate jmeter in the maven build. To generate graphs from the jmeter results, the jmeter-graph-maven-plugin is used.
Under docker/jenkins
can find a jenkins with a preconfigured build-job that runs the jmeter tests and archives the results. Just build the docker image with
cd docker/jenkins
docker build -t jmeter-jenkins .
and run the container with
docker run -p=8080:8080 jmeter-jenkins
and you can access the jenkins in your browser via http://localhost:8080/jenkins/
.
Just execute
mvn -Pembedded-jetty verify
This will
- start an embedded jetty server wit a small webapp,
- run jmeter tests (just some http requests) against this webserver and
- create some nice graphs of the result (you will find them in
target/jmeter/results
).
To start the JMeter GUI, use the jmeter:gui
goal. The tests are located in /src/test/jmeter
. If you start the tests, make sure that the example webapp is running. You can start the webapp explicitly with jetty:run
.
To just execute the jmeter-tests from commandline (without gui, without embedded webapp, without graph-generation), use the jmeter:jmeter
goal. The tests expect a running example webapp, so make sure at http://localhost:9097/
. The results of the test-run can be found in /target/jmeter/results
. If you want graph-generation, run mvn verify
(without the "local" profile).
The following maven-properties are available (to set them from commandline, simply add -Dproperty=value
)
Property | Default |
---|---|
jetty.port | 9097 |
performancetest.webservice.host | localhost |
performancetest.webservice.port | ${jetty.port} |
performancetest.webservice.path | / |
performancetest.connectTimeout | 1000 |
performancetest.responseTimeout | 3000 |
performancetest.threadCount | 20 |
performancetest.loopCount | 10 |