For now, you need to have a running dockerized James JMAP server running on the same computer than your Gatling host. It needs to export the webAdmin over port 8000.
Alternatively you can set up the following system properties:
-
TARGET_HOSTNAMEwhich is set tolocalhostby default -
SMTP_PORTwhich is set to25by default -
SMTP_SSL_PORTwhich is set to465by default -
JMAP_PORTwhich is set to1080by default -
JMAP_PROTOCOLwhich is set tohttpby default (you can usehttpsinstead for example) -
WEBADMIN_PORTwhich is set to8000by default -
WEBADMIN_PROTOCOLwhich is set tohttpby default (you can usehttpsinstead for example)
In some cases you could want to specify target hostname per protocol, the following properties can help you:
* SMTP_TARGET_HOSTNAME which is set to TARGET_HOSTNAME by default
* JMAP_TARGET_HOSTNAME which is set to TARGET_HOSTNAME by default
* IMAP_SERVER_HOSTNAME which is set to TARGET_HOSTNAME by default
* WEBADMIN_SERVER_HOSTNAME which is set to TARGET_HOSTNAME by default
You can run all the simulations via sbt :
$ sbt > gatling:test
Run a specific simulation via sbt :
$ sbt > gatling:testOnly SIMULATION_FQDN
You can use a custom local jenkins runner with the Jenkinsfile at the root of this project to build the project.
This will automatically do for you:
-
checkout and compile the latest code of James Gatling project
-
launch Gatling integration tests
To launch it you need to have docker installed. From the root of this project, you can build the Jenkins runner locally yourself:
docker build -t local-jenkins-runner dockerfiles/jenkins-runner
And then you need to launch it with the Jenkinsfile:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v ${PWD}/dockerfiles/jenkins-runner/Jenkinsfile:/workspace/Jenkinsfile --network=host local-jenkins-runner
If you don’t want the build to redownload everytime all the sbt dependencies (it can be heavy) you can mount
your local sbt repository as a volume by adding -v $HOME/.ivy2/cache:/root/.ivy2/cache to the above command.
You can use the Dockerfile at the root to build an image that will contain this Gatling project that you can run.
docker build -t james-gatling-runner dockerfiles/docker-runner
To change configuration variables, you should modify the environment file. You can find an example in sample.env.
You should also change the file 'dockerfiles/docker-runner/users.csv` to be able to match your test users on your environment.
To launch it:
docker run --env-file sample.env \
--mount type=bind,source="$(pwd)"/dockerfiles/docker-runner/users.csv,target=/home/sbtuser/james-gatling/src/test/resources/users.csv \
-it --rm james-gatling-runner
Then you will be prompted with sbt from inside the container. You can run simulations now.
In case want to run a specific simulation directly, you can use the following command:
docker run --env-file sample.env \
--mount type=bind,source="$(pwd)"/dockerfiles/docker-runner/users.csv,target=/home/sbtuser/james-gatling/src/test/resources/users.csv \
-it --rm james-gatling-runner org.apache.james.gatling.simulation.imap.PlatformValidationSimulation
Sometimes we could have hang simulation when few users can not finish their session. It forces us to break the simulation without any report that generated by Gatling.
We however can save wasted time for the hang simulations by generating reports using the [Gatling report](https://github.com/nuxeo/gatling-report).
For example, we can export the report as CSV format:
java -jar path/to/gatling-report-VERSION-capsule-fat.jar path/to/simulation.log > report.csv