Boost logo

Boost :

Subject: [boost] [build] Running 1 per N tests
From: Adam Wulkiewicz (adam.wulkiewicz_at_[hidden])
Date: 2016-06-29 06:34:15


At Boost.Geometry we're using CircleCI for testing. They allow to run
the tests concurently on N virtual machines. I'd like to alter my script
to automatically redistribute the tests evenly across all of the
machines, i.e. to run 1/N of the tests on each machine. The problem is
that at Boost.Geometry we have a lot of nested project directories, i.e.
b2 executed for some upper directory runs the tests in the test-suite in
this directory and then follows nested projects defined by build-project
directives, so runs the tests recursively. So e.g. if b2 was executed on
some virtual machine for the most-top-level directory all of the tests
would be built anyway.

Do you have an idea how this could be solved without altering the tests

Is it currently somehow possible (though AFAIK it isn't) or would be
possible to implement options allowing to e.g.:
- run b2 only for a certain directory/Jamfile, e.g. --non-recursive
- ignore arbitrary Jamfile directive, e.g. --ignore-build-project
- run only 1 per N tests, an option used together with -jX but running
tests only for one thread, e.g. b2 -i2 -j4 running only 1 per 4 commands
starting from 2nd command

The last option would be the most convenient for me. The tests would be
divided as evenly as possible. It wouldn't require to use some
workarounds i.e. traversing test directories recursively and running b2
manually for them which could result in low-quality redistribution, e.g.
if some directory contained many tests and other small number of tests.


Boost list run by bdawes at, gregod at, cpdaniel at, john at