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.
Clone or download
Pull request Compare This branch is 393 commits ahead, 1 commit behind janmejay:master.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
alien module should use project's jdk Apr 17, 2012
balancer Fixed the bug reported @ https://groups.google.com/forum/?fromgroups#… Jul 9, 2012
build issue#64 - added duplicate library check to one-jar bundling(for onej… Jan 13, 2012
core Fixed the bug reported @ https://groups.google.com/forum/?fromgroups#… Jul 9, 2012
integration_tests Fixed the bug reported @ https://groups.google.com/forum/?fromgroups#… Jul 9, 2012
java module should use project's jdk Apr 17, 2012
local_repo Adding a upload-files build task. In order to upload a file, use the … May 22, 2011
misc issue#60 - killed a few instances of /tmp/UUID or /tmp/checksum direc… Dec 27, 2011
restlet module should use project's jdk Apr 17, 2012
server Fixed the bug reported @ https://groups.google.com/forum/?fromgroups#… Jul 9, 2012
.gitignore issue#56 - un-ignored the special control-resource test that invokes … Feb 25, 2011
.travis.yml trying travis, using ant default target for build Jan 13, 2012
LICENSE minor modifications to the license Aug 24, 2010
README.markdown #63 - Added 'Build from source' documentation in readme.markdown. Nov 20, 2011
README.release #63 - Added the build from source information in the project README. Nov 20, 2011
TestLoadBalancer.ipr Merge branch 'master' of github.com:test-load-balancer/tlb Apr 17, 2012
build.xml fixed building example tar in tlb, git-archive was pushing std.err to… Jan 11, 2013
ivy.xml issue#64 - added duplicate library check to one-jar bundling(for onej… Jan 13, 2012
ivysettings.xml got build task 'core.test' working, 1 down, 6 to go Feb 20, 2011
upload.sh upload all build artifacts May 27, 2011
upload_all.sh upload all build artifacts May 27, 2011

README.markdown

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)