Add a new script for copying logs

post_test_hook is not a good place to collect logs since it
does not get executed when jobs fail. Let's try executing
a script in our gate_hook to copy files over. Also use
a find/exec to copy the files since some files may be gzipped

We also need to copy over the log files for containers that
remain when we finish testing.

Change-Id: I37b50eff7b086b3a29849a292a2171744460da06
This commit is contained in:
Davanum Srinivas 2015-01-05 21:42:33 -05:00
parent c3c7105f9a
commit 797f1fe4ec
3 changed files with 44 additions and 10 deletions

View File

@ -0,0 +1,32 @@
#!/bin/bash
#
# 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.
# This script is executed inside gate_hook.sh
INSTALLDIR=${INSTALLDIR:-/opt/stack}
source $INSTALLDIR/devstack/functions-common
LOGDIR=/opt/stack/logs
if is_ubuntu; then
# Find and collect docker daemon logs
sudo find /var/log/ -name "docker*" -print -exec sudo cp {} $LOGDIR \;
elif is_fedora; then
# fetch the docker logs from the journal
sudo journalctl _SYSTEMD_UNIT=docker.service | sudo tee -a $LOGDIR/docker.service.log > /dev/null
sudo journalctl _SYSTEMD_UNIT=docker.socket | sudo tee -a $LOGDIR/docker.socket.log > /dev/null
fi
# Copy logs from the containers
sudo mkdir -p $LOGDIR/containers/
sudo find /var/lib/docker/containers/ -name "*.log" -print -exec sudo cp {} $LOGDIR/containers/ \;

View File

@ -30,4 +30,16 @@ if is_ubuntu; then
install_package --force-yes linux-image-extra-`uname -r`
fi
trap exit_trap EXIT
function exit_trap {
local r=$?
if [[ "$r" -eq "0" ]]; then
echo "All tests run successfully"
else
echo "ERROR! some tests failed, please see detailed output"
fi
echo "Collecting docker-specific logs"
bash -x $SCRIPTDIR/copy_logs_hook.sh
}
$INSTALLDIR/devstack-gate/devstack-vm-gate.sh

View File

@ -13,13 +13,3 @@
# under the License.
# This script is executed inside post_test_hook function in devstack gate.
# Collect docker daemon logs
sudo ls -altr /var/log/docker*
sudo ls -altr /var/log/upstart/docker*
if [ -f /var/log/docker ]; then
sudo cp /var/log/docker /opt/stack/logs/docker.log
fi
if [ -f /var/log/upstart/docker.log ]; then
sudo cp /var/log/upstart/docker.log /opt/stack/logs
fi