End slow test feedback! Easy Horizontal Scaling with ClusterRunner
- Audience level:
Maintaining prompt test feedback is a common challenge for fast-growing projects and engineering teams. ClusterRunner is a Python open source application we've developed at Box to run our suite of over 8 sequential hours of tests in ~3 minutes. ClusterRunner makes it insanely easy to horizontally scale test suites in any language across your entire infrastructure.
ClusterRunner enables lightning-fast test feedback by distributing tests horizontally across a large fleet of machines. ClusterRunner allows Box Engineering to run an eight-hour test suite in around three minutes, hundreds of times every day. It is [open source](http://www.clusterrunner.com/), implemented entirely in Python 3, and supports running test suites for virtually any language. ClusterRunner is most useful to larger engineering teams struggling with longer and longer test feedback delays. It was designed from the bottom up to be easy to use and can be dropped in to an existing CI system. If you can run a single test or test file, you can use ClusterRunner to parallelize those tests. It's able to utilize infrastructure efficiently by learning how long your tests take to execute and scheduling accordingly. ClusterRunner services communicate via a friendly REST API (built on Tornado!) which allows it to be both performant and extensible. ClusterRunner is an excellent example of how Python makes it easy to build a distributed application consisting of multiple services communicating via REST API. Our poster session will include visualizations of how ClusterRunner breaks up and distributes test suites, and how it dynamically scales queued job execution into all available infrastructure.