diff --git a/modules/jenkins/files/slave_scripts/jenkins-oom-grep.sh b/modules/jenkins/files/slave_scripts/jenkins-oom-grep.sh new file mode 100755 index 0000000000..b60fa6315c --- /dev/null +++ b/modules/jenkins/files/slave_scripts/jenkins-oom-grep.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Copyright 2012 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Find out if jenkins has triggered the out-of-memory killer by checking +# the output of dmesg before and after a test run. + +PATTERN=" invoked oom-killer: " + +case "$1" in + pre) + rm -fr /tmp/jenkins-oom-log + mkdir /tmp/jenkins-oom-log + dmesg > /tmp/jenkins-oom-log/pre + exit 0 + ;; + post) + dmesg > /tmp/jenkins-oom-log/post + diff /tmp/jenkins-oom-log/{pre,post} \ + | grep "^> " | sed "s/^> //" > /tmp/jenkins-oom-log/diff + if grep -q "$PATTERN" /tmp/jenkins-oom-log/diff + then + cat /tmp/jenkins-oom-log/diff + exit 1 + fi + ;; +esac diff --git a/modules/jenkins/files/slave_scripts/run-tox.sh b/modules/jenkins/files/slave_scripts/run-tox.sh index 8a5a6c3c30..6b0c53c7b2 100755 --- a/modules/jenkins/files/slave_scripts/run-tox.sh +++ b/modules/jenkins/files/slave_scripts/run-tox.sh @@ -26,6 +26,8 @@ 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 @@ -48,4 +50,17 @@ then 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