Archived Repository This code is no longer maintained. Feel free to fork it, but use it at your own risks. |
This repository aims to reflect code published in an article on the marmelab's blog.
This is a simple Symfony2 project with 2 tests (DemoControllerTest
& SecondControllerTest
).
Each one simulate a lot of tests with a pause of 5 seconds.
Running these tests the normal way :
$ time phpunit -c app/
real 0m10.443s
user 0m0.379s
sys 0m0.050s
Running these tests in parallel :
$ time sh tests.sh
real 0m6.427s
user 0m0.084s
sys 0m0.100s
This example is not explicit, you can run these tests in parallel only with GNU Parallel.
However your tests can use a storage engine, a search index or other dependencies. In this case when you alter data in a test, this data should not be changed in other tests. Docker allows to run each test in isolated containers so other tests aren't affected.
composer install
Docker only support Linux LXC (for now) so we should run a virtual machine :
vagrant up
vagrant ssh
cd /vagrant
sh tests.sh