gatling load test K8s job

Framework:

  • Gatling

  • K8s

Languages:

  • Scala

  • Python

2019-now

This work involved the creation of a little Python package that wraps up the launch of Gatling configured appropriately to point to a Customer environment. It can then disable upgrade for the that project whilst it runs the tests in two phases. The first generates authorisation apps and users. The second fires authorisation requests at the apps from those users.
The configuration of concurrency and load, tests to run etc. is defined in a bespoke YAML test profile file.
The software is deployed as a Scala & Python K8s job (or cronjob) which can be run up in the cluster under test or a separate testing cluster (to prevent the running of the tests themselves from impacting the resource usage of the stress tested monitored cluster).

A summary report with performance thresholds for pass or fail is sent to Slack and the detailed report saved.

The bulk of the work was in the creation of the 15 Scala Gatling simulation classes to do the populate and test phases.

NB: The choice of the peformance testing tools was to some extent mandated based on following those used by the dedicated Testing team.