Skip to content

A test load balancer that splits tests in multiple mutually exclusive and collectively exhaustive partitions, and allows running them in parallel to reduce build time.

License

Notifications You must be signed in to change notification settings

test-load-balancer/tlb

 
 

Repository files navigation

Rationale:

A typical problem that teams doing CI (continuous integration) try and solve is to get the build time to an acceptable amount so that frequent checkins are possible. However, with a steady increase in the number of tests, the time taken to run these tests on every checkin keeps increasing. Solving this problem in the build is almost always non trivial. This is where parallelizing builds comes handy. Throwing hardware at this problem is one of the potential solutions to get build time under acceptable limits.

TestLoadBalancer (TLB) aims at splitting your entire test suite into mutually exclusive units such that each of the unit can be executed in parallel. Assuming that tests are written independent of each other, which is a best practice in writing tests, the tests can be ordered and arranged in anyway and TLB leverages this fact in order to split the test suite and reorder the tests.

Build from Source

TLB is a Java project that uses ant for building, ivy for dependency management and junit for tests.

Follow these steps to get TLB building locally

  • Clone the code base
  • Make sure you have:
    • JDK 1.6
    • ant 1.7 or above
    • ant-junit libraries in the ant lib directory
  • TLB uses ivy to manage dependencies. Hence, the build will need to be able to download all the dependent libraries from a maven repo.
  • In the checkout directory, run ant. This will download all the deps (only the first time), compile and run all tests for all the modules and build the packages.

Checkout the build.xml file to see all the build targets.

Documentation:

Detailed documentation of TLB concepts and configuration options is available in the TLB Website.

Supported Frameworks:

Please check the list of supported frameworks on the TLB Website.

Contributors:

Core Team:

Other Contributors:

History:

TLB started in Jan 2010 as an attempt to enhance another similar project called TestLoadBalancer(hosted on code.google.com and github.com). However due to some other issues inheriting the codebase for reuse/enhancement was not possible, besides the direction planned for the new codebase was not aligned with the structure of TestLoadBalancer codebase, so we decided to build TLB from scratch. The old TestLoadBalancer originally implemented the idea of load balancing tests based on count, and inspired the creation of TLB. The project is not developed or maintained anymore and is not hosted publicly.

People behind TestLoadBalancer(the old project)

About

A test load balancer that splits tests in multiple mutually exclusive and collectively exhaustive partitions, and allows running them in parallel to reduce build time.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.0%
  • Shell 1.0%