Search code examples
c++googletest

How to implement google test sharding in c++?


I want to parallelise my googletest cases in c++. I have read the documentation of google test sharding but unable to implement it in c++ coding environment. As I'm new to the coding field , so can anyone please by a code explain to me the documentation in the link below https://github.com/google/googletest/blob/master/googletest/docs/advanced.md

Google Sharding works on different machines or can be implemented on same using multiple threads?


Solution

  • Sharding isn't done in code, it's done using the environment. Your machine specifies two environment variables GTEST_TOTAL_SHARDS, which is the total number of machines you are running and GTEST_SHARD_INDEX, which is unique to each machine. When GTEST starts up, it selects a subset of these tests.

    If you want to simulate this, then you need to set these environment variables (which can be done in code).

    I would probably try something like this (on Windows) in a .bat file:

    set GTEST_TOTAL_SHARDS=10
    FOR /L %%I in (1,1,10) DO cmd.exe /c "set GTEST_SHARD_INDEX=%%I && start mytest.exe"
    

    And hope that the new cmd instance had it's own environment.