From 4f0e33524f877c7e1d3523b7f82efb6aca48e7da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 21 Sep 2021 19:13:47 +0200 Subject: [PATCH] Refactor parallel-features.sh to a general solution --- cypress/parallel-features.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cypress/parallel-features.sh b/cypress/parallel-features.sh index a234b1d0e..10f660605 100755 --- a/cypress/parallel-features.sh +++ b/cypress/parallel-features.sh @@ -11,9 +11,16 @@ MAX_JOBS=$2 FEATURE_LIST=( $(find cypress/integration/ -maxdepth 1 -name "*.feature") ) # Calculation -MAX_FEATURES=$(find cypress/integration/ -maxdepth 1 -name "*.feature" -printf '.' | wc -m) -FEATURES_PER_JOB=$(expr $(expr ${MAX_FEATURES} + ${MAX_JOBS} - 1) / ${MAX_JOBS} ) -FEATURES_SKIP=$(expr $(expr ${CUR_JOB} - 1 ) \* ${FEATURES_PER_JOB} ) +MAX_FEATURES=$(find cypress/integration/ -maxdepth 1 -name "*.feature" -print | wc -l) +# adds overhead features to the first jobs +if [[ $CUR_JOB -lt $(expr ${MAX_FEATURES} % ${MAX_JOBS}) ]] +then + FEATURES_PER_JOB=$(expr ${MAX_FEATURES} / ${MAX_JOBS} + 1) + FEATURES_SKIP=$(expr $(expr ${MAX_FEATURES} / ${MAX_JOBS} + 1) \* ${CUR_JOB}) +else + FEATURES_PER_JOB=$(expr ${MAX_FEATURES} / ${MAX_JOBS}) + FEATURES_SKIP=$(expr $(expr ${MAX_FEATURES} / ${MAX_JOBS} + 1) \* $(expr ${MAX_FEATURES} % ${MAX_JOBS}) + $(expr $(expr ${MAX_FEATURES} / ${MAX_JOBS}) \* $(expr ${CUR_JOB} - ${MAX_FEATURES} % ${MAX_JOBS}))) +fi # Comma separated list echo $(join_by , ${FEATURE_LIST[@]:${FEATURES_SKIP}:${FEATURES_PER_JOB}}) \ No newline at end of file