Skip to content

Commit 5ffa37d

Browse files
committed
chore(ci): optimize parallel system test execution and fix race conditions
1 parent c20eedc commit 5ffa37d

1 file changed

Lines changed: 24 additions & 13 deletions

File tree

.kokoro/system.sh

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,24 @@ RETVAL=0
3535

3636
pwd
3737

38+
reap_parallel_results() {
39+
local retval=0
40+
for failed in .logs/*.failed; do
41+
if [ -f "$failed" ]; then
42+
local pkg=$(basename "$failed" .failed)
43+
echo "--- FAILED: $pkg ---"
44+
cat ".logs/$pkg.log"
45+
retval=1
46+
fi
47+
done
48+
return $retval
49+
}
50+
51+
3852
run_package_test() {
3953
local package_name=$1
4054
local package_path="packages/${package_name}"
41-
55+
4256
# Declare local overrides to prevent bleeding into the next loop iteration
4357
local PROJECT_ID
4458
local GOOGLE_APPLICATION_CREDENTIALS
@@ -77,7 +91,8 @@ run_package_test() {
7791
export GOOGLE_CLOUD_PROJECT="${PROJECT_ID}"
7892

7993
gcloud auth activate-service-account --key-file="$GOOGLE_APPLICATION_CREDENTIALS"
80-
gcloud config set project "$PROJECT_ID"
94+
export CLOUDSDK_CORE_PROJECT="${PROJECT_ID}"
95+
8196

8297
# Run the actual test
8398
pushd "${package_path}" > /dev/null
@@ -86,7 +101,7 @@ run_package_test() {
86101
local res=$?
87102
set -e
88103
popd > /dev/null
89-
104+
90105
return $res
91106
}
92107

@@ -150,16 +165,12 @@ if [ -n "$PACKAGES_TO_TEST" ]; then
150165
mkdir -p .logs
151166
export -f run_package_test
152167
export system_test_script PROJECT_ROOT KOKORO_GFILE_DIR
153-
154-
echo "$PACKAGES_TO_TEST" | tr ' ' '\n' | awk 'NF' | xargs -P 8 -I {} bash -c 'run_package_test "{}" > ".logs/{}.log" 2>&1 || touch ".logs/{}.failed"'
155-
156-
for failed in .logs/*.failed; do
157-
if [ -f "$failed" ]; then
158-
echo "--- FAILED: ${failed%.failed} ---"
159-
cat "${failed%.failed}.log"
160-
RETVAL=1
161-
fi
162-
done
168+
169+
CONCURRENCY=${MAX_PARALLEL_TESTS:-8}
170+
171+
printf '%s\n' $PACKAGES_TO_TEST | xargs -P "$CONCURRENCY" -I {} bash -c 'run_package_test "{}" > ".logs/{}.log" 2>&1 || touch ".logs/{}.failed"'
172+
173+
reap_parallel_results || RETVAL=1
163174
fi
164175

165176
exit ${RETVAL}

0 commit comments

Comments
 (0)