This is an example Java App used to showcase the CI Boilerplate setup found at ci-boilerplate.
The Maven pom for build and test is setup to support
- static code analyses (DRY, PMD, FindBugs, Warnings)
- unit testing with JUnit
- integration testing on local test server
- integration testing against app deployed on Google App Engine
- JMeter performance testing
- code coverage using Emma
Before you run the Maven script you have to setup the GAE project id and version. Copy the
gae.properties.example
file and rename it to gae.properties
.
Afterwards edit gae.properties
and replace the placeholders with your project id and version.
gae_project_id=example-app
gae_project_version=1
The JMeter test plans are located at src/non-packaged-resources/jmeter
.
The test plans contain placeholder variables e.g. ${testserver.endpoint.host}
for
protocol
, host
and port
that are replaced during the execution of the maven
script with values where the app is running.
These values are taken from the following environment variables:
TESTSERVER_ENDPOINT_PROTOCOL
, TESTSERVER_ENDPOINT_HOST
and TESTSERVER_ENDPOINT_PORT
.
To set these variables for local testing do on the cmd where you run the Maven script:
$ export TESTSERVER_ENDPOINT_PROTOCOL='http'
$ export TESTSERVER_ENDPOINT_HOST=example-app.appspot.com
$ export TESTSERVER_ENDPOINT_PORT=80
If you want to run JMeter against your local instance you have to first set the environment variables
$ export TESTSERVER_ENDPOINT_PROTOCOL='http'
$ export TESTSERVER_ENDPOINT_HOST=localhost
$ export TESTSERVER_ENDPOINT_PORT=8181
then start the local test server mvn appengine:devserver_start
, run the jmeter
tests with mvn generate-test-resources jmeter:jmeter
and afterwards stop the test server with mvn appengine:devserver_stop
The port 8181
is taken from the testserver.endpoint.port
property value in your pom.