system-config/modules/jenkins/files/slave_scripts/jenkins-oom-grep.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

40 lines
1.2 KiB
Bash
Executable File

#!/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