-
Notifications
You must be signed in to change notification settings - Fork 11
Description
In the past few months we were using test suite of Boost library to find deficiencies of our C++ toolchain. All the experiments were run locally and a few deficiencies were found and fixed. For the future work it will be beneficial to have Boost testing in CI where we can just run it conveniently.
Local Boost testing
Scripts used for local testing are in boost-build-local-b2 branch in .github/scripts/boost. They are meant to be used from WSL or with minor changes from MSYS2 shell.
Usage:
# This will clone Boost and run the full test suite (~6 hours and 300GB disc space needed)
~$ ./mingw-woarm64-build/.github/scripts/boost/build_and_test_boost.sh BOOST_TESTING_FOLDER
# Get summary of errors, group them by module and log message
~$ python mingw-woarm64-build/.github/scripts/boost/group_test_failures.py --log_file BOOST_TESTING_FOLDER/boost-test-full-static.log
CI Boost testing
Some progress was made in #199. Boost is nativelly build with b2
build system but also supports cmake
. Currently, in #199 I used cmake
to build tests on x64 linux machine and move build executables to arm64 Windows machine for executing tests (we do this e.g. for ffmpeg
).
One of motivations for using cmake
was also that b2
cannot build test executables with one command and then run them with separate command. However, functionality of Boost's cmake
definitions aren't in full parity with b2
. cmake
defines only ~2500 tests while b2
defines ~13000 tests (e.g. accumulators module doesn't contain cmake definitions of tests) So we'll have to use b2
instead and building and running of tests will have to be done on the same machine.
Imo the simplest how to use b2
for testing is (similarly to local testing) to use Windows arm64 machine where we build and run Boost tests in WSL. Caveat is that GitHub win arm64 VMs don't support WSL, we'll need to either use self-hosted lab arm64 machine or local device like Volterra.
Note also that a bit more than 300GB of disc space has to be available for building full test suite with static linking (static linking is used to workaround #258).