Using Gatling and Jenkins to Performance Test Puppet
Puppet Gatling is a Jenkins-CI plugin that post-processes Gatling simulation data to generate useful reports for load-testing Puppet. With this tool, users are able to discover a clear difference in performance between various versions of Puppet. Puppet Gatling is built upon open source tools such as the Gatling Jenkins plugin, Puppet, Cobbler, and Apache’s Maven development tool.
Puppet Gatling builds on the idea that after each commit or version of a project, a graph will be generated from load testing, giving insight into the performance of Puppet. If bugs are fixed or even unintentionally introduced, Puppet Gatlings load test will be able to show the differences after the load test run. With the use of Puppet Gatling, developers will be able to see improvements or bugs right away after each commit to a project.
The main goal of this project was to develop better reporting tools to automatically display performance increases (or decreases) per commit in a code base such as Puppet. Puppet Gatling will display graphs in Jenkins that show different important facts of performance such as Catalog Compile Time, Agent Run Time, and if there are any failures. Important to note: If failures occur, agent run time will decrease and look fast to the user. So in that case, we placed failures graph right below agent run time.
Jenkins CI Plugin Development
With the use of Maven, Puppet Gatling was developed using the Jenkins CI Plugin development tools.
Modification of Gatling
The Gatling Project has provided a plugin that you can hook into Jenkins which keeps track of different simulation information and a detailed view of each build that runs on Jenkins. By simply adding the plugin to a Jenkins job, it will display a few different trend graphs across builds including:
- Mean response time trend
- 95th percentiles response time trend
- Percentage of failed requests
These graphs provide some great information about the job, however understandably so do not account for how Puppet runs work between a master and its agents. This means that the data is calculated incorrectly. Thus the need for a plugin extension, Puppet-Gatling.
Use of Puppet
This tool takes advantage of Puppets Facter to gather facts about the operating systems these tests are running on. These facts give a more complete picture about all of the load tests. Some facts that are collected include speed of CPU and number of cores, which version of Puppet is running, the disk size, and memory size. Benefits of Projects
With this project, you will be able to see a graphical representation of performance over time between commits and versions of products. After development, graphs showed a flaw in Puppet that was fixed in later version. This bug might of been more obvious had Puppet Gatling been used.