Skip to content
  • Brad King's avatar
    CTest: Fix --test-load regression · 292ec157
    Brad King authored
    The `ctest --test-load` option is implemented in `StartNextTests` by not
    starting any tests when the load is too high and instead sleeping and
    then returning.  Prior to commit v3.11.0-rc1~117^2 (CTest: Re-implement
    test process handling using libuv, 2017-12-10) our outer loop in
    `RunTests` would immediately call `StartNextTests` again.  However, now
    the `uv_run` loop may simply terminate if there are no tests running
    because no events are left pending.
    
    Fix this by converting the sleep in `StartNextTests` into a libuv timer
    that it starts instead.  This avoids leaving `uv_run` with no pending
    events.  In the case that there are other running tests this also allows
    CTest to detect when they finish even if it during the wait period where
    we previously slept.
    
    This regression was not caught by the test suite because it only
    verified that we do not start new tests when the load was too high and
    not that we proceed to start tests when the load drops.  Revise the test
    suite to cover both.
    
    Fixes: #18338
    292ec157