Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Commit

Permalink
Merge pull request #9658 from EOSIO/zach-1.8-test
Browse files Browse the repository at this point in the history
CI: Fix Serial Test Bug + Simplification + UX
  • Loading branch information
kj4ezj authored Nov 13, 2020
2 parents 1755db0 + 088154e commit f771102
Show file tree
Hide file tree
Showing 12 changed files with 114 additions and 89 deletions.
42 changes: 29 additions & 13 deletions .cicd/build.sh
Original file line number Diff line number Diff line change
@@ -1,40 +1,47 @@
#!/bin/bash
set -eo pipefail
[[ "$ENABLE_INSTALL" == 'true' ]] || echo '--- :evergreen_tree: Configuring Environment'
. ./.cicd/helpers/general.sh
mkdir -p "$BUILD_DIR"
CMAKE_EXTRAS="-DCMAKE_BUILD_TYPE='Release' -DENABLE_MULTIVERSION_PROTOCOL_TEST=true -DBUILD_MONGO_DB_PLUGIN=true"
CMAKE_EXTRAS="-DCMAKE_BUILD_TYPE=\"Release\" -DENABLE_MULTIVERSION_PROTOCOL_TEST=\"true\" -DBUILD_MONGO_DB_PLUGIN=\"true\""
if [[ "$(uname)" == 'Darwin' && "$FORCE_LINUX" != 'true' ]]; then
# You can't use chained commands in execute
if [[ "$GITHUB_ACTIONS" == 'true' ]]; then
export PINNED=false
export PINNED='false'
fi
[[ ! "$PINNED" == 'false' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE=$HELPERS_DIR/clang.make"
[[ ! "$PINNED" == 'false' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE=\"$HELPERS_DIR/clang.make\""
cd "$BUILD_DIR"
echo '+++ :hammer_and_wrench: Building EOSIO'
CMAKE_COMMAND="cmake $CMAKE_EXTRAS .."
echo "$ $CMAKE_COMMAND"
eval $CMAKE_COMMAND
MAKE_COMMAND="make -j '$JOBS'"
echo "$ $MAKE_COMMAND"
eval $MAKE_COMMAND
cd ..
else # Linux
ARGS=${ARGS:-"--rm --init -v $(pwd):$MOUNTED_DIR"}
PRE_COMMANDS="cd '$MOUNTED_DIR/build'"
ARGS=${ARGS:-"--rm --init -v \"\$(pwd):$MOUNTED_DIR\""}
PRE_COMMANDS="cd \"$MOUNTED_DIR/build\""
# PRE_COMMANDS: Executed pre-cmake
# CMAKE_EXTRAS: Executed within and right before the cmake path (cmake CMAKE_EXTRAS ..)
[[ ! "$IMAGE_TAG" =~ 'unpinned' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE='$MOUNTED_DIR/.cicd/helpers/clang.make'"
[[ ! "$IMAGE_TAG" =~ 'unpinned' ]] && CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_TOOLCHAIN_FILE=\"$MOUNTED_DIR/.cicd/helpers/clang.make\""
if [[ "$IMAGE_TAG" == 'amazon_linux-2-unpinned' ]]; then
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER='clang++' -DCMAKE_C_COMPILER='clang'"
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER=\"clang++\" -DCMAKE_C_COMPILER=\"clang\""
elif [[ "$IMAGE_TAG" == 'centos-7.7-unpinned' ]]; then
PRE_COMMANDS="$PRE_COMMANDS && source /opt/rh/devtoolset-8/enable && source /opt/rh/rh-python36/enable"
PRE_COMMANDS="$PRE_COMMANDS && source \"/opt/rh/devtoolset-8/enable\" && source \"/opt/rh/rh-python36/enable\""
elif [[ "$IMAGE_TAG" == 'ubuntu-18.04-unpinned' ]]; then
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER='clang++' -DCMAKE_C_COMPILER='clang'"
CMAKE_EXTRAS="$CMAKE_EXTRAS -DCMAKE_CXX_COMPILER=\"clang++\" -DCMAKE_C_COMPILER=\"clang\""
fi
BUILD_COMMANDS="cmake $CMAKE_EXTRAS .. && make -j '$JOBS'"
CMAKE_COMMAND="cmake \$CMAKE_EXTRAS .."
MAKE_COMMAND="make -j $JOBS"
BUILD_COMMANDS="echo \"+++ :hammer_and_wrench: Building EOSIO\" && echo \"$ $CMAKE_COMMAND\" && eval $CMAKE_COMMAND && echo \"$ $MAKE_COMMAND\" && eval $MAKE_COMMAND"
# Docker Commands
if [[ "$BUILDKITE" == 'true' ]]; then
# Generate Base Images
"$CICD_DIR/generate-base-images.sh"
[[ "$ENABLE_INSTALL" == 'true' ]] && COMMANDS="cp -r $MOUNTED_DIR /root/eosio && cd /root/eosio/build &&"
BASE_IMAGE_COMMAND="\"$CICD_DIR/generate-base-images.sh\""
echo "$ $BASE_IMAGE_COMMAND"
eval $BASE_IMAGE_COMMAND
[[ "$ENABLE_INSTALL" == 'true' ]] && COMMANDS="cp -r \"$MOUNTED_DIR\" \"/root/eosio\" && cd \"/root/eosio/build\" &&"
COMMANDS="$COMMANDS $BUILD_COMMANDS"
[[ "$ENABLE_INSTALL" == 'true' ]] && COMMANDS="$COMMANDS && make install"
elif [[ "$GITHUB_ACTIONS" == 'true' ]]; then
Expand All @@ -43,7 +50,16 @@ else # Linux
fi
. "$HELPERS_DIR/file-hash.sh" "$CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile"
COMMANDS="$PRE_COMMANDS && $COMMANDS"
DOCKER_RUN="docker run $ARGS $(buildkite-intrinsics) '$FULL_TAG' bash -c '$COMMANDS'"
DOCKER_RUN="docker run $ARGS $(buildkite-intrinsics) --env CMAKE_EXTRAS='$CMAKE_EXTRAS' '$FULL_TAG' bash -c '$COMMANDS'"
echo "$ $DOCKER_RUN"
eval $DOCKER_RUN
fi
if [[ "$BUILDKITE" == 'true' && "$ENABLE_INSTALL" != 'true' ]]; then
echo '--- :arrow_up: Uploading Artifacts'
echo 'Compressing build directory.'
tar -pczf 'build.tar.gz' build
echo 'Uploading build directory.'
buildkite-agent artifact upload 'build.tar.gz'
echo 'Done uploading artifacts.'
fi
[[ "$ENABLE_INSTALL" == 'true' ]] || echo '--- :white_check_mark: Done!'
4 changes: 2 additions & 2 deletions .cicd/docker-tag.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
set -eo pipefail
echo '+++ :evergreen_tree: Configuring Environment'
echo '--- :evergreen_tree: Configuring Environment'
. ./.cicd/helpers/general.sh
PREFIX='base-ubuntu-18.04'
SANITIZED_BRANCH=$(echo "$BUILDKITE_BRANCH" | sed 's.^/..' | sed 's/[:/]/_/g')
Expand Down Expand Up @@ -52,7 +52,7 @@ for REGISTRY in ${CONTRACT_REGISTRIES[*]}; do
fi
done
# cleanup
echo '+++ :put_litter_in_its_place: Cleaning Up'
echo '--- :put_litter_in_its_place: Cleaning Up'
for REGISTRY in ${CONTRACT_REGISTRIES[*]}; do
if [[ ! -z "$REGISTRY" ]]; then
echo "Cleaning up from $REGISTRY."
Expand Down
3 changes: 2 additions & 1 deletion .cicd/generate-base-images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ set -eo pipefail
. ./.cicd/helpers/general.sh
. "$HELPERS_DIR/file-hash.sh" "$CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile"
# search for base image in docker registries
echo "+++ :mag_right: Looking for $HASHED_IMAGE_TAG"
echo '--- :docker: Build or Pull Base Image :minidisc:'
echo "Looking for '$HASHED_IMAGE_TAG' container in our registries."
EXISTS_ALL='true'
EXISTS_DOCKER_HUB='false'
EXISTS_ECR='false'
Expand Down
5 changes: 1 addition & 4 deletions .cicd/generate-pipeline.sh
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,7 @@ echo $PLATFORMS_JSON_ARRAY | jq -cr '.[]' | while read -r PLATFORM_JSON; do
if [[ ! "$(echo "$PLATFORM_JSON" | jq -r .FILE_NAME)" =~ 'macos' ]]; then
cat <<EOF
- label: "$(echo "$PLATFORM_JSON" | jq -r .ICON) $(echo "$PLATFORM_JSON" | jq -r .PLATFORM_NAME_FULL) - Build"
command:
- "./.cicd/build.sh"
- "tar -pczf build.tar.gz build && buildkite-agent artifact upload build.tar.gz"
command: "./.cicd/build.sh"
env:
IMAGE_TAG: $(echo "$PLATFORM_JSON" | jq -r .FILE_NAME)
PLATFORM_TYPE: $PLATFORM_TYPE
Expand All @@ -115,7 +113,6 @@ EOF
command:
- "git clone \$BUILDKITE_REPO eos && cd eos && $GIT_FETCH git checkout -f \$BUILDKITE_COMMIT && git submodule update --init --recursive"
- "cd eos && ./.cicd/build.sh"
- "cd eos && tar -pczf build.tar.gz build && buildkite-agent artifact upload build.tar.gz"
plugins:
- EOSIO/anka#v0.6.1:
no-volume: true
Expand Down
2 changes: 1 addition & 1 deletion .cicd/helpers/general.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ export BUILD_DIR="$ROOT_DIR/build"
export CICD_DIR="$ROOT_DIR/.cicd"
export HELPERS_DIR="$CICD_DIR/helpers"
export JOBS=${JOBS:-"$(getconf _NPROCESSORS_ONLN)"}
export MOUNTED_DIR='/workdir'
export MOUNTED_DIR='/eos'
export DOCKER_CLI_EXPERIMENTAL='enabled'
export DOCKERHUB_CI_REGISTRY="docker.io/eosio/ci"
export DOCKERHUB_CONTRACTS_REGISTRY="docker.io/eosio/ci-contracts-builder"
Expand Down
14 changes: 10 additions & 4 deletions .cicd/installation-build.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
#!/bin/bash
set -eo pipefail
echo '--- :evergreen_tree: Configuring Environment'
. ./.cicd/helpers/general.sh
export ENABLE_INSTALL=true
export ENABLE_INSTALL='true'
export BRANCH=$(echo $BUILDKITE_BRANCH | sed 's.^/..' | tr '/' '_')
export CONTRACTS_BUILDER_TAG="eosio/ci-contracts-builder:base-ubuntu-18.04"
export ARGS="--name ci-contracts-builder-$BUILDKITE_PIPELINE_SLUG-$BUILDKITE_BUILD_NUMBER --init -v $(pwd):$MOUNTED_DIR"
"$CICD_DIR/build.sh"
export ARGS="--name ci-contracts-builder-$BUILDKITE_PIPELINE_SLUG-$BUILDKITE_BUILD_NUMBER --init -v \"\$(pwd):$MOUNTED_DIR\""
BUILD_COMMAND="'$CICD_DIR/build.sh'"
echo "$ $BUILD_COMMAND"
eval $BUILD_COMMAND
echo '+++ :arrow_up: Pushing Container'
for REGISTRY in "${CONTRACT_REGISTRIES[@]}"; do
if [[ ! -z $REGISTRY ]]; then
if [[ ! -z "$REGISTRY" ]]; then
COMMITS=("$REGISTRY:base-ubuntu-18.04-$BUILDKITE_COMMIT" "$REGISTRY:base-ubuntu-18.04-$BUILDKITE_COMMIT-$PLATFORM_TYPE" "$REGISTRY:base-ubuntu-18.04-$BRANCH-$BUILDKITE_COMMIT")
for COMMIT in "${COMMITS[@]}"; do
COMMIT_COMMAND="docker commit 'ci-contracts-builder-$BUILDKITE_PIPELINE_SLUG-$BUILDKITE_BUILD_NUMBER' '$COMMIT'"
Expand All @@ -19,9 +23,11 @@ for REGISTRY in "${CONTRACT_REGISTRIES[@]}"; do
done
fi
done
echo '--- :put_litter_in_its_place: Cleaning Up'
DOCKER_STOP_COMMAND="docker stop 'ci-contracts-builder-$BUILDKITE_PIPELINE_SLUG-$BUILDKITE_BUILD_NUMBER'"
echo "$ $DOCKER_STOP_COMMAND"
eval $DOCKER_STOP_COMMAND
DOCKER_RM_COMMAND="docker rm 'ci-contracts-builder-$BUILDKITE_PIPELINE_SLUG-$BUILDKITE_BUILD_NUMBER'"
echo "$ $DOCKER_RM_COMMAND"
eval $DOCKER_RM_COMMAND
echo '--- :white_check_mark: Done!'
2 changes: 1 addition & 1 deletion .cicd/multiversion.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -eo pipefail # exit on failure of any "simple" command (excludes &&, ||, or
# variables
GIT_ROOT="$(dirname $BASH_SOURCE[0])/.."
cd "$GIT_ROOT"
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':evergreen_tree: ')Configuring Environment"
echo "--- $([[ "$BUILDKITE" == 'true' ]] && echo ':evergreen_tree: ')Configuring Environment"
[[ "$PIPELINE_CONFIG" == '' ]] && export PIPELINE_CONFIG='pipeline.json'
[[ "$RAW_PIPELINE_CONFIG" == '' ]] && export RAW_PIPELINE_CONFIG='pipeline.jsonc'
[[ ! -d "$GIT_ROOT/eos_multiversion_builder" ]] && mkdir "$GIT_ROOT/eos_multiversion_builder"
Expand Down
48 changes: 22 additions & 26 deletions .cicd/package.sh
Original file line number Diff line number Diff line change
@@ -1,49 +1,45 @@
#!/bin/bash
set -eo pipefail
echo '--- :evergreen_tree: Configuring Environment'
. ./.cicd/helpers/general.sh
mkdir -p "$BUILD_DIR"
if [[ $(uname) == 'Darwin' && $FORCE_LINUX != true ]]; then
echo '+++ :package: Packaging EOSIO'
PACKAGE_COMMANDS="bash -c 'cd build/packages && chmod 755 ./*.sh && ./generate_package.sh brew'"
echo "$ $PACKAGE_COMMANDS"
eval $PACKAGE_COMMANDS
ARTIFACT='*.rb;*.tar.gz'
cd build/packages
[[ -d x86_64 ]] && cd 'x86_64' # backwards-compatibility with release/1.6.x
buildkite-agent artifact upload "./$ARTIFACT" --agent-access-token $BUILDKITE_AGENT_ACCESS_TOKEN
for A in $(echo $ARTIFACT | tr ';' ' '); do
if [[ $(ls $A | grep -c '') == 0 ]]; then
echo "+++ :no_entry: ERROR: Expected artifact \"$A\" not found!"
pwd
ls -la
exit 1
fi
done
else # Linux
ARGS="${ARGS:-"--rm --init -v $(pwd):$MOUNTED_DIR"}"
echo '--- :docker: Selecting Container'
ARGS="${ARGS:-"--rm --init -v \"\$(pwd):$MOUNTED_DIR\""}"
. "$HELPERS_DIR/file-hash.sh" "$CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile"
PRE_COMMANDS="cd '$MOUNTED_DIR/build/packages' && chmod 755 ./*.sh"
PRE_COMMANDS="cd \"$MOUNTED_DIR/build/packages\" && chmod 755 ./*.sh"
if [[ "$IMAGE_TAG" =~ "ubuntu" ]]; then
ARTIFACT='*.deb'
PACKAGE_TYPE='deb'
PACKAGE_COMMANDS="./generate_package.sh '$PACKAGE_TYPE'"
PACKAGE_COMMANDS="./generate_package.sh \"$PACKAGE_TYPE\""
elif [[ "$IMAGE_TAG" =~ "centos" ]]; then
ARTIFACT='*.rpm'
PACKAGE_TYPE='rpm'
PACKAGE_COMMANDS="mkdir -p ~/rpmbuild/BUILD && mkdir -p ~/rpmbuild/BUILDROOT && mkdir -p ~/rpmbuild/RPMS && mkdir -p ~/rpmbuild/SOURCES && mkdir -p ~/rpmbuild/SPECS && mkdir -p ~/rpmbuild/SRPMS && yum install -y rpm-build && ./generate_package.sh '$PACKAGE_TYPE'"
PACKAGE_COMMANDS="mkdir -p ~/rpmbuild/BUILD && mkdir -p ~/rpmbuild/BUILDROOT && mkdir -p ~/rpmbuild/RPMS && mkdir -p ~/rpmbuild/SOURCES && mkdir -p ~/rpmbuild/SPECS && mkdir -p ~/rpmbuild/SRPMS && yum install -y rpm-build && ./generate_package.sh \"$PACKAGE_TYPE\""
fi
COMMANDS="$PRE_COMMANDS && $PACKAGE_COMMANDS"
COMMANDS="echo \"+++ :package: Packaging EOSIO\" && $PRE_COMMANDS && $PACKAGE_COMMANDS"
DOCKER_RUN_COMMAND="docker run $ARGS $(buildkite-intrinsics) '$FULL_TAG' bash -c '$COMMANDS'"
echo "$ $DOCKER_RUN_COMMAND"
eval $DOCKER_RUN_COMMAND
cd build/packages
[[ -d x86_64 ]] && cd 'x86_64' # backwards-compatibility with release/1.6.x
fi
cd build/packages
[[ -d x86_64 ]] && cd 'x86_64' # backwards-compatibility with release/1.6.x
if [[ "$BUILDKITE" == 'true' ]]; then
echo '--- :arrow_up: Uploading Artifacts'
buildkite-agent artifact upload "./$ARTIFACT" --agent-access-token $BUILDKITE_AGENT_ACCESS_TOKEN
for A in $(echo $ARTIFACT | tr ';' ' '); do
if [[ $(ls "$A" | grep -c '') == 0 ]]; then
echo "+++ :no_entry: ERROR: Expected artifact \"$A\" not found!"
pwd
ls -la
exit 1
fi
done
fi
for A in $(echo $ARTIFACT | tr ';' ' '); do
if [[ $(ls "$A" | grep -c '') == 0 ]]; then
echo "+++ :no_entry: ERROR: Expected artifact \"$A\" not found!"
pwd
ls -la
exit 1
fi
done
echo '--- :white_check_mark: Done!'
16 changes: 10 additions & 6 deletions .cicd/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ set -eo pipefail
if [[ $(uname) == 'Darwin' ]]; then # macOS
export PATH=$PATH:~/mongodb/bin
set +e # defer error handling to end
"./$@"
TEST_COMMAND="\"./$1\" ${@: 2}"
echo "$ $TEST_COMMAND"
eval $TEST_COMMAND
EXIT_STATUS=$?
else # Linux
COMMANDS="$MOUNTED_DIR/$@"
echo '--- :docker: Selecting Container'
TEST_COMMAND="'\"'$MOUNTED_DIR/$1'\"' ${@: 2}"
COMMANDS="echo \"$ $TEST_COMMAND\" && eval $TEST_COMMAND"
. "$HELPERS_DIR/file-hash.sh" "$CICD_DIR/platforms/$PLATFORM_TYPE/$IMAGE_TAG.dockerfile"
echo "$ docker run --rm --init -v \"$(pwd):$MOUNTED_DIR\" $(buildkite-intrinsics) -e JOBS -e BUILDKITE_API_KEY \"$FULL_TAG\" bash -c \"$COMMANDS\""
DOCKER_RUN_COMMAND="docker run --rm --init -v '$(pwd):$MOUNTED_DIR' $(buildkite-intrinsics) -e JOBS -e BUILDKITE_API_KEY '$FULL_TAG' bash -c '$COMMANDS'"
DOCKER_RUN_COMMAND="docker run --rm --init -v \"\$(pwd):$MOUNTED_DIR\" $(buildkite-intrinsics) -e JOBS -e BUILDKITE_API_KEY '$FULL_TAG' bash -c '$COMMANDS'"
set +e # defer error handling to end
echo "$ $DOCKER_RUN_COMMAND"
eval $DOCKER_RUN_COMMAND
Expand All @@ -22,7 +25,7 @@ fi
if [[ "$BUILDKITE" == 'true' ]]; then
cd build
# upload artifacts
echo '+++ :arrow_up: Uploading Artifacts'
echo '--- :arrow_up: Uploading Artifacts'
echo 'Compressing core dumps...'
[[ $((`ls -1 core.* 2>/dev/null | wc -l`)) != 0 ]] && tar czf core.tar.gz core.* || : # collect core dumps
echo 'Exporting xUnit XML'
Expand All @@ -36,7 +39,8 @@ if [[ "$BUILDKITE" == 'true' ]]; then
echo 'Done uploading artifacts.'
fi
# re-throw
if [[ "$EXIT_STATUS" != 0 ]]; then
if [[ "$EXIT_STATUS" != '0' ]]; then
echo "Failing due to non-zero exit status from ctest: $EXIT_STATUS"
exit $EXIT_STATUS
fi
echo '--- :white_check_mark: Done!'
26 changes: 14 additions & 12 deletions scripts/long-running-test.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
#!/bin/bash
set -eo pipefail
# variables
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':evergreen_tree: ')Configuring Environment"
echo "--- $([[ "$BUILDKITE" == 'true' ]] && echo ':evergreen_tree: ')Configuring Environment"
GIT_ROOT="$(dirname $BASH_SOURCE[0])/.."
[[ -z "$TEST" ]] && export TEST=$1
[[ -z "$TEST" ]] && export TEST="$1"
if [[ "$(uname)" == 'Linux' ]]; then
. /etc/os-release
if [[ "$ID" == 'centos' ]]; then
[[ -f /opt/rh/rh-python36/enable ]] && source /opt/rh/rh-python36/enable
fi
fi
cd $GIT_ROOT/build
cd "$GIT_ROOT/build"
# mongoDB
if [[ ! -z "$(pgrep mongod)" ]]; then
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':leaves: ')Killing old MongoDB"
Expand All @@ -26,13 +26,14 @@ fi
if [[ -z "$TEST" ]]; then # run all serial tests
# count tests
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':microscope: ')Running Long-Running Tests"
TEST_COUNT=$(ctest -N -L long_running_tests | grep -i 'Total Tests: ' | cut -d ':' -f 2 | awk '{print $1}')
if [[ $TEST_COUNT > 0 ]]; then
TEST_COUNT=$(ctest -N -L 'long_running_tests' | grep -i 'Total Tests: ' | cut -d ':' -f '2' | awk '{print $1}')
if [[ "$TEST_COUNT" > '0' ]]; then
echo "$TEST_COUNT tests found."
# run tests
set +e # defer ctest error handling to end
echo '$ ctest -L long_running_tests --output-on-failure -T Test'
ctest -L long_running_tests --output-on-failure -T Test
CTEST_COMMAND="ctest -L 'long_running_tests' --output-on-failure -T 'Test'"
echo "$ $CTEST_COMMAND"
eval $CTEST_COMMAND
EXIT_STATUS=$?
echo 'Done running long-running tests.'
else
Expand All @@ -42,13 +43,14 @@ if [[ -z "$TEST" ]]; then # run all serial tests
else # run specific serial test
# ensure test exists
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':microscope: ')Running $TEST"
TEST_COUNT=$(ctest -N -R ^$TEST$ | grep -i 'Total Tests: ' | cut -d ':' -f 2 | awk '{print $1}')
if [[ $TEST_COUNT > 0 ]]; then
TEST_COUNT=$(ctest -N -R "^$TEST$" | grep -i 'Total Tests: ' | cut -d ':' -f '2' | awk '{print $1}')
if [[ "$TEST_COUNT" > '0' ]]; then
echo "$TEST found."
# run tests
set +e # defer ctest error handling to end
echo "$ ctest -R ^$TEST$ --output-on-failure -T Test"
ctest -R ^$TEST$ --output-on-failure -T Test
CTEST_COMMAND="ctest -R '^$TEST$' --output-on-failure -T 'Test'"
echo "$ $CTEST_COMMAND"
eval $CTEST_COMMAND
EXIT_STATUS=$?
echo "Done running $TEST."
else
Expand All @@ -60,4 +62,4 @@ if [[ ! -z "$(pgrep mongod)" ]]; then
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':leaves: ')Killing MongoDB"
$(pgrep mongod | xargs kill -9) || :
fi
exit $EXIT_STATUS
exit $EXIT_STATUS
17 changes: 9 additions & 8 deletions scripts/parallel-test.sh
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
#!/bin/bash
set -eo pipefail
# variables
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':evergreen_tree: ')Configuring Environment"
[[ -z "$JOBS" ]] && export JOBS=$(getconf _NPROCESSORS_ONLN)
echo "--- $([[ "$BUILDKITE" == 'true' ]] && echo ':evergreen_tree: ')Configuring Environment"
[[ -z "$JOBS" ]] && export JOBS="$(getconf _NPROCESSORS_ONLN)"
GIT_ROOT="$(dirname $BASH_SOURCE[0])/.."
if [[ "$(uname)" == 'Linux' ]]; then
. /etc/os-release
if [[ "$ID" == 'centos' ]]; then
[[ -f /opt/rh/rh-python36/enable ]] && source /opt/rh/rh-python36/enable
fi
fi
cd $GIT_ROOT/build
cd "$GIT_ROOT/build"
# count tests
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':microscope: ')Running Parallelizable Tests"
TEST_COUNT=$(ctest -N -LE _tests | grep -i 'Total Tests: ' | cut -d ':' -f 2 | awk '{print $1}')
if [[ $TEST_COUNT > 0 ]]; then
TEST_COUNT=$(ctest -N -LE '_tests' | grep -i 'Total Tests: ' | cut -d ':' -f '2' | awk '{print $1}')
if [[ "$TEST_COUNT" > '0' ]]; then
echo "$TEST_COUNT tests found."
else
echo "+++ $([[ "$BUILDKITE" == 'true' ]] && echo ':no_entry: ')ERROR: No tests registered with ctest! Exiting..."
exit 1
fi
# run tests
set +e # defer ctest error handling to end
echo "$ ctest -j $JOBS -LE _tests --output-on-failure -T Test"
ctest -j $JOBS -LE _tests --output-on-failure -T Test
CTEST_COMMAND="ctest -j '$JOBS' -LE '_tests' --output-on-failure -T 'Test'"
echo "$ $CTEST_COMMAND"
eval $CTEST_COMMAND
EXIT_STATUS=$?
echo 'Done running parallelizable tests.'
exit $EXIT_STATUS
exit $EXIT_STATUS
Loading

0 comments on commit f771102

Please sign in to comment.