ci: run test round with parallel-checkout enabled
We already have tests for the basic parallel-checkout operations. But this code can also run be executed by other commands, such as git-read-tree and git-sparse-checkout, which are currently not tested with multiple workers. To promote a wider test coverage without duplicating tests: 1. Add the GIT_TEST_CHECKOUT_WORKERS environment variable, to optionally force parallel-checkout execution during the whole test suite. 2. Set this variable (with a value of 2) in the second test round of our linux-gcc CI job. This round runs `make test` again with some optional GIT_TEST_* variables enabled, so there is no additional overhead in exercising the parallel-checkout code here. Note that tests checking out less than two parallel-eligible entries will fall back to the sequential mode. Nevertheless, it's still a good exercise for the parallel-checkout framework as the fallback codepath also writes the queued entries using the parallel-checkout functions (only without spawning any worker). Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d5904220bc
commit
87094fc2da
@ -25,6 +25,7 @@ linux-gcc)
|
|||||||
export GIT_TEST_ADD_I_USE_BUILTIN=1
|
export GIT_TEST_ADD_I_USE_BUILTIN=1
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
|
||||||
export GIT_TEST_WRITE_REV_INDEX=1
|
export GIT_TEST_WRITE_REV_INDEX=1
|
||||||
|
export GIT_TEST_CHECKOUT_WORKERS=2
|
||||||
make test
|
make test
|
||||||
;;
|
;;
|
||||||
linux-clang)
|
linux-clang)
|
||||||
|
@ -35,6 +35,20 @@ static const int DEFAULT_NUM_WORKERS = 1;
|
|||||||
|
|
||||||
void get_parallel_checkout_configs(int *num_workers, int *threshold)
|
void get_parallel_checkout_configs(int *num_workers, int *threshold)
|
||||||
{
|
{
|
||||||
|
char *env_workers = getenv("GIT_TEST_CHECKOUT_WORKERS");
|
||||||
|
|
||||||
|
if (env_workers && *env_workers) {
|
||||||
|
if (strtol_i(env_workers, 10, num_workers)) {
|
||||||
|
die("invalid value for GIT_TEST_CHECKOUT_WORKERS: '%s'",
|
||||||
|
env_workers);
|
||||||
|
}
|
||||||
|
if (*num_workers < 1)
|
||||||
|
*num_workers = online_cpus();
|
||||||
|
|
||||||
|
*threshold = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (git_config_get_int("checkout.workers", num_workers))
|
if (git_config_get_int("checkout.workers", num_workers))
|
||||||
*num_workers = DEFAULT_NUM_WORKERS;
|
*num_workers = DEFAULT_NUM_WORKERS;
|
||||||
else if (*num_workers < 1)
|
else if (*num_workers < 1)
|
||||||
|
4
t/README
4
t/README
@ -436,6 +436,10 @@ and "sha256".
|
|||||||
GIT_TEST_WRITE_REV_INDEX=<boolean>, when true enables the
|
GIT_TEST_WRITE_REV_INDEX=<boolean>, when true enables the
|
||||||
'pack.writeReverseIndex' setting.
|
'pack.writeReverseIndex' setting.
|
||||||
|
|
||||||
|
GIT_TEST_CHECKOUT_WORKERS=<n> overrides the 'checkout.workers' setting
|
||||||
|
to <n> and 'checkout.thresholdForParallelism' to 0, forcing the
|
||||||
|
execution of the parallel-checkout code.
|
||||||
|
|
||||||
Naming Tests
|
Naming Tests
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
# Helpers for tests invoking parallel-checkout
|
# Helpers for tests invoking parallel-checkout
|
||||||
|
|
||||||
|
# Parallel checkout tests need full control of the number of workers
|
||||||
|
unset GIT_TEST_CHECKOUT_WORKERS
|
||||||
|
|
||||||
set_checkout_config () {
|
set_checkout_config () {
|
||||||
if test $# -ne 2
|
if test $# -ne 2
|
||||||
then
|
then
|
||||||
|
Loading…
Reference in New Issue
Block a user