Skip to content

Commit a3d334a

Browse files
committed
Parallelize external test runs on CircleCI
1 parent f77403c commit a3d334a

File tree

7 files changed

+36
-5
lines changed

7 files changed

+36
-5
lines changed

.circleci/config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,8 @@ jobs:
921921
default: no
922922
docker:
923923
- image: circleci/node:<<parameters.nodejs_version>>
924+
# NOTE: Each external test does 3 separate compile&test runs
925+
parallelism: 3
924926
environment:
925927
TERM: xterm
926928
COMPILE_ONLY: <<parameters.compile_only>>

test/externalTests/colony.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ function colony_test
3838
local min_optimizer_level=3
3939
local max_optimizer_level=3
4040

41+
local selected_optimizer_levels
42+
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
43+
print_optimizer_levels_or_exit "$selected_optimizer_levels"
44+
4145
setup_solcjs "$DIR" "$SOLJSON"
4246
download_project "$repo" "$branch" "$DIR"
4347

@@ -54,7 +58,7 @@ function colony_test
5458
replace_version_pragmas
5559
force_solc_modules "${DIR}/solc"
5660

57-
for level in $(seq "$min_optimizer_level" "$max_optimizer_level"); do
61+
for level in $selected_optimizer_levels; do
5862
truffle_run_test "$config_file" "${DIR}/solc" "$level" compile_fn test_fn
5963
done
6064
}

test/externalTests/common.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ set -e
2424

2525
CURRENT_EVM_VERSION=london
2626

27+
function print_optimizer_levels_or_exit
28+
{
29+
local selected_levels="$1"
30+
31+
[[ $selected_levels != "" ]] || { printWarning "No steps to run. Exiting."; exit 0; }
32+
33+
printLog "Selected optimizer levels: ${selected_levels}"
34+
}
35+
2736
function verify_input
2837
{
2938
if [ ! -f "$1" ]; then

test/externalTests/ens.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ function ens_test
3838
local min_optimizer_level=1
3939
local max_optimizer_level=3
4040

41+
local selected_optimizer_levels
42+
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
43+
print_optimizer_levels_or_exit "$selected_optimizer_levels"
44+
4145
setup_solcjs "$DIR" "$SOLJSON"
4246
download_project "$repo" "$branch" "$DIR"
4347

@@ -52,7 +56,7 @@ function ens_test
5256
replace_version_pragmas
5357
force_solc_modules "${DIR}/solc"
5458

55-
for level in $(seq "$min_optimizer_level" "$max_optimizer_level"); do
59+
for level in $selected_optimizer_levels; do
5660
truffle_run_test "$config_file" "${DIR}/solc" "$level" compile_fn test_fn
5761
done
5862
}

test/externalTests/gnosis-v2.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ function gnosis_safe_test
3939
local min_optimizer_level=2
4040
local max_optimizer_level=3
4141

42+
local selected_optimizer_levels
43+
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
44+
print_optimizer_levels_or_exit "$selected_optimizer_levels"
45+
4246
setup_solcjs "$DIR" "$SOLJSON"
4347
download_project "$repo" "$branch" "$DIR"
4448

@@ -53,7 +57,7 @@ function gnosis_safe_test
5357
replace_version_pragmas
5458
force_solc_modules "${DIR}/solc"
5559

56-
for level in $(seq "$min_optimizer_level" "$max_optimizer_level"); do
60+
for level in $selected_optimizer_levels; do
5761
truffle_run_test "$config_file" "${DIR}/solc" "$level" compile_fn test_fn
5862
done
5963
}

test/externalTests/gnosis.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ function gnosis_safe_test
3838
local min_optimizer_level=2
3939
local max_optimizer_level=3
4040

41+
local selected_optimizer_levels
42+
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
43+
print_optimizer_levels_or_exit "$selected_optimizer_levels"
44+
4145
setup_solcjs "$DIR" "$SOLJSON"
4246
download_project "$repo" "$branch" "$DIR"
4347

@@ -51,7 +55,7 @@ function gnosis_safe_test
5155
replace_version_pragmas
5256
force_solc_modules "${DIR}/solc"
5357

54-
for level in $(seq "$min_optimizer_level" "$max_optimizer_level"); do
58+
for level in $selected_optimizer_levels; do
5559
truffle_run_test "$config_file" "${DIR}/solc" "$level" compile_fn test_fn
5660
done
5761
}

test/externalTests/zeppelin.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ function zeppelin_test
3838
local min_optimizer_level=1
3939
local max_optimizer_level=3
4040

41+
local selected_optimizer_levels
42+
selected_optimizer_levels=$(circleci_select_steps "$(seq "$min_optimizer_level" "$max_optimizer_level")")
43+
print_optimizer_levels_or_exit "$selected_optimizer_levels"
44+
4145
setup_solcjs "$DIR" "$SOLJSON"
4246
download_project "$repo" "$branch" "$DIR"
4347

@@ -48,7 +52,7 @@ function zeppelin_test
4852
replace_version_pragmas
4953
force_solc_modules "${DIR}/solc"
5054

51-
for level in $(seq "$min_optimizer_level" "$max_optimizer_level"); do
55+
for level in $selected_optimizer_levels; do
5256
truffle_run_test "$config_file" "${DIR}/solc" "$level" compile_fn test_fn
5357
done
5458
}

0 commit comments

Comments
 (0)