system-config/modules/jenkins/files/slave_scripts/run-tox.sh
Jeremy Stanley a798af1228 Check for out-of-memory condition during tox runs.
* modules/jenkins/files/slave_scripts/jenkins-oom-grep.sh: Script to
compare "pre" and "post" snapshots of dmesg output, looking for any
oom-killer kernel messages which occurred between. If it finds at least
one, all kernel messages which arrived during the test are printed to
stdout and the script subsequently ends with an exit code of 1. If none
are found, no output is generated and the script exits normally.

* modules/jenkins/files/slave_scripts/run-tox.sh: Add "pre" and "post"
calls to jenkins-oom-grep.sh, printing a notice about out-of-memory
conditions if the "post" invocation exits nonzero.

Change-Id: Ib28f528fe1c4b3ccc2b3669e1f602609d7560e2e
Reviewed-on: https://review.openstack.org/13477
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: Monty Taylor <mordred@inaugust.com>
Reviewed-by: Monty Taylor <mordred@inaugust.com>
Tested-by: Jenkins
2012-09-21 20:48:04 +00:00

67 lines
1.7 KiB
Bash
Executable File

#!/bin/bash -x
# If a bundle file is present, call tox with the jenkins version of
# the test environment so it is used. Otherwise, use the normal
# (non-bundle) test environment. Also, run pip freeze on the
# resulting environment at the end so that we have a record of exactly
# what packages we ended up testing.
#
# Usage: run-tox.sh PYTHONVERSION
#
# Where PYTHONVERSION is the numeric version identifier used as a suffix
# in the tox.ini file. E.g., "26" or "27" for "py26"/"jenkins26" or
# "py27"/"jenkins27" respectively.
version=$1
if [ -z "$version" ]
then
echo "The tox environment python version (eg '27') must be the first argument."
exit 1
fi
venv=py$version
export NOSE_WITH_XUNIT=1
export NOSE_WITH_HTML_OUTPUT=1
export NOSE_HTML_OUT_FILE='nose_results.html'
/usr/local/jenkins/slave_scripts/jenkins-oom-grep.sh pre
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-grep.sh pre
tox -e$venv
result=$?
echo "Begin pip freeze output from test virtualenv:"
echo "======================================================================"
.tox/$venv/bin/pip freeze
echo "======================================================================"
sudo /usr/local/jenkins/slave_scripts/jenkins-sudo-grep.sh post
sudoresult=$?
if [ $sudoresult -ne "0" ]
then
echo
echo "This test has failed because it attempted to execute commands"
echo "with sudo. See above for the exact commands used."
echo
exit 1
fi
/usr/local/jenkins/slave_scripts/jenkins-oom-grep.sh post
oomresult=$?
if [ $oomresult -ne "0" ]
then
echo
echo "This test has failed because it attempted to exceed configured"
echo "memory limits and was killed prior to completion. See above"
echo "for related kernel messages."
echo
exit 1
fi
exit $result