I created a basic gatling loadtest that I would like to run periodically. Since we are already using Jenkins anyway, I thought about using Gatling’s Jenkins plugin. I want to see how the response time changes over time right in Jenkins:

Given that this makes Jenkins the load generator, what are the best practices around that:
-
Do you run small-enough loadtests just right on Jenkins?
-
Do you have a powerful-enough build slave to run the loadtests? Loadtest jobs could be restricted to only run on this slave to avoid any impact on other jobs.
-
Do you bring up the infrastructure to generate the load at the beginning of the job and terminate it after? A job could trigger launching EC2/GCE instances to generate load. Once the test is done Jenkins could collect the results and terminate the instances?
-
Which other options am I missing?
Thanks,
Ingo
Going over those suggestions:
Option 1: Do you run small-enough loadtests just right on Jenkins?
Not really an option for me as I don’t want to make the web UI unresponsive by running a CPU/IO intensive job on the master.
Option 2: Do you have a powerful-enough build slave to run the loadtests? Loadtest jobs could be restricted to only run on this slave to avoid any impact on other jobs.
I would prefer if the load generator and the server that I am loadtesting are both in EC2/GCE. Our Jenkins master/slaves are within a VPN hosted on-premise. I cannot add a slave (=for load generation) outside of the VPN. That’s why I don’t think this is an option either.
Option 3: Do you bring up the infrastructure to generate the load at the beginning of the job and terminate it after? A job could trigger launching EC2/GCE instances to generate load. Once the test is done Jenkins could collect the results and terminate the instances?
That’s what I would prefer. The Jenkins job would trigger the creation of a new load generator. The job would copy the gatling loadtest on the new instance. The instance starts the tests and terminates itself after the test is done and the results were uploaded to S3/GCS. The Jenkins job could then reference the generated data. Using this approach the Jenkins job would likely just be polling for the completion of the loadtest i.e. it wouldn’t actually put a lot of load on the Jenkins master/slave.
Thanks,
Ingo