Skip to content

Commit 760a70d

Browse files
authored
chore(provisioner/terraform): make testdata generate.sh parallel (#16326)
1 parent 92d22e2 commit 760a70d

File tree

1 file changed

+54
-18
lines changed

1 file changed

+54
-18
lines changed

provisioner/terraform/testdata/generate.sh

Lines changed: 54 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,73 @@
33
set -euo pipefail
44
cd "$(dirname "${BASH_SOURCE[0]}")"
55

6-
for d in */; do
7-
pushd "$d"
6+
generate() {
7+
local name="$1"
8+
9+
echo "=== BEGIN: $name"
10+
terraform init -upgrade &&
11+
terraform plan -out terraform.tfplan &&
12+
terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json &&
13+
terraform graph -type=plan >"$name".tfplan.dot &&
14+
rm terraform.tfplan &&
15+
terraform apply -auto-approve &&
16+
terraform show -json ./terraform.tfstate | jq >"$name".tfstate.json &&
17+
rm terraform.tfstate &&
18+
terraform graph -type=plan >"$name".tfstate.dot
19+
ret=$?
20+
echo "=== END: $name"
21+
if [[ $ret -ne 0 ]]; then
22+
return $ret
23+
fi
24+
}
25+
26+
run() {
27+
d="$1"
28+
cd "$d"
829
name=$(basename "$(pwd)")
930

1031
# This needs care to update correctly.
1132
if [[ $name == "kubernetes-metadata" ]]; then
12-
popd
13-
continue
33+
echo "== Skipping: $name"
34+
return 0
1435
fi
1536

1637
# This directory is used for a different purpose (quick workaround).
1738
if [[ $name == "cleanup-stale-plugins" ]]; then
18-
popd
19-
continue
39+
echo "== Skipping: $name"
40+
return 0
2041
fi
2142

2243
if [[ $name == "timings-aggregation" ]]; then
23-
popd
24-
continue
44+
echo "== Skipping: $name"
45+
return 0
46+
fi
47+
48+
echo "== Generating test data for: $name"
49+
if ! out="$(generate "$name" 2>&1)"; then
50+
echo "$out"
51+
echo "== Error generating test data for: $name"
52+
return 1
2553
fi
54+
echo "== Done generating test data for: $name"
55+
exit 0
56+
}
2657

27-
terraform init -upgrade
28-
terraform plan -out terraform.tfplan
29-
terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json
30-
terraform graph -type=plan >"$name".tfplan.dot
31-
rm terraform.tfplan
32-
terraform apply -auto-approve
33-
terraform show -json ./terraform.tfstate | jq >"$name".tfstate.json
34-
rm terraform.tfstate
35-
terraform graph -type=plan >"$name".tfstate.dot
36-
popd
58+
declare -a jobs=()
59+
for d in */; do
60+
run "$d" &
61+
jobs+=($!)
62+
done
63+
64+
err=0
65+
for job in "${jobs[@]}"; do
66+
if ! wait "$job"; then
67+
err=$((err + 1))
68+
fi
3769
done
70+
if [[ $err -ne 0 ]]; then
71+
echo "ERROR: Failed to generate test data for $err modules"
72+
exit 1
73+
fi
3874

3975
terraform version -json | jq -r '.terraform_version' >version.txt

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy