summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorJonathan Abrahams <jonathan@mongodb.com>2017-05-05 13:47:01 -0400
committerJonathan Abrahams <jonathan@mongodb.com>2017-05-05 13:47:01 -0400
commit3254737dde79507d1f1c075e41e51559e59a426c (patch)
tree1a5f0cfa23323eaa0bb46053b9b3610446024d21 /etc
parent74ad35c14395a56fa77e7ec559a3150870a64699 (diff)
downloadmongo-3254737dde79507d1f1c075e41e51559e59a426c.tar.gz
SERVER-28784 Update "run tests" function to run unreliable tests separately
Diffstat (limited to 'etc')
-rw-r--r--etc/evergreen.yml83
1 files changed, 65 insertions, 18 deletions
diff --git a/etc/evergreen.yml b/etc/evergreen.yml
index c9b90810504..c0d0fbed08c 100644
--- a/etc/evergreen.yml
+++ b/etc/evergreen.yml
@@ -502,25 +502,64 @@ functions:
path_value="$path_value:${task_path_suffix}"
fi
+ preamble="PATH='$path_value' \
+ ${gcov_environment} \
+ ${rlp_environment} \
+ ${san_options} \
+ ${san_symbolizer} \
+ ${snmp_config_path}"
# The "resmoke_wrapper" expansion is used by the 'burn_in_tests' task to wrap the resmoke.py
- # invocation. It doesn't set any environment variables and should therefore come last in
- # this list of expansions.
- PATH="$path_value" \
- ${gcov_environment} \
- ${rlp_environment} \
- ${san_options} \
- ${san_symbolizer} \
- ${snmp_config_path} \
- ${resmoke_wrapper} \
- ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/resmoke.py \
- ${resmoke_args} \
- $extra_args \
- ${test_flags} \
- --log=buildlogger \
- --reportFile=report.json \
- --staggerJobs=on \
- --tagFile=etc/test_lifecycle.yml \
- --taskId=${task_id}
+ # invocation. It must be placed between $preamble and $resmoke.
+ wrapper="${resmoke_wrapper}"
+ resmoke_report_file="--reportFile=report.json"
+ resmoke="${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/resmoke.py \
+ ${resmoke_args} \
+ $extra_args \
+ ${test_flags} \
+ --log=buildlogger \
+ --staggerJobs=on \
+ --tagFile=etc/test_lifecycle.yml \
+ --taskId=${task_id}"
+
+ # For patch builds, we run reliable and then unreliable tests and combine the reports.
+ if [ "${is_patch|}" = "true" ]; then
+ # Disable errexit, until we run combine_reports, so we can execute the reliable and
+ # unreliable tests.
+ set +o errexit
+ # If the "resmoke_wrapper" expansion is used for 'burn_in_tests' then add the reportFile.
+ echo "$wrapper" | grep -q burn_in_tests
+ add_report_file=$?
+ resmoke_tags="unreliable, \
+ unreliable|${task_name}, \
+ unreliable|${task_name}|${build_variant}, \
+ unreliable|${task_name}|${build_variant}|${distro_id}"
+ # Remove spaces from the tags argument.
+ resmoke_tags=$(echo $resmoke_tags| tr -d " ")
+ report_file=report_reliable.json
+ resmoke_base="$resmoke \
+ --excludeWithAnyTags='$resmoke_tags' \
+ --reportFailureStatus=fail \
+ --reportFile=$report_file"
+ wrapper_report_file=""
+ if [ $add_report_file -eq 0 ]; then
+ wrapper_report_file="--reportFile=$report_file"
+ fi
+ eval $preamble $wrapper $wrapper_report_file $resmoke_base
+ report_file=report_unreliable.json
+ resmoke_base="$resmoke \
+ --includeWithAnyTags='$resmoke_tags' \
+ --reportFailureStatus=silentfail \
+ --reportFile=$report_file"
+ if [ $add_report_file -eq 0 ]; then
+ wrapper_report_file="--reportFile=$report_file"
+ fi
+ eval $preamble $wrapper $wrapper_report_file $resmoke_base
+ # Reenable errexit, as the return from combine_reports will return the cumulative error.
+ set -o errexit
+ ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/combine_reports.py -o report.json report_reliable.json report_unreliable.json
+ else
+ eval $preamble $wrapper $resmoke $resmoke_report_file
+ fi
"do jepsen setup" :
@@ -927,9 +966,17 @@ pre:
post:
+ - command: shell.exec
+ params:
+ working_dir: src
+ script: |
+ if [ -f report_reliable.json ]; then
+ ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/combine_reports.py -o report.json report_reliable.json report_unreliable.json
+ fi
- command: attach.results
params:
file_location: src/report.json
+
- func: "kill processes"
# Print out any Out of Memory killed process messages.
- command: shell.exec