puppet-openstack-integration/run_tests.sh
Emilien Macchi 78d7bf2502 integration tests: use dstat to monitor system
Dstat is a tool used to monitor system in real-time. It's used by
Devstack in OpenStack gate to monitor system during jobs.
This tool would be useful for Puppet OpenStack Integration jobs so we
would be able to monitor the system during Puppet & Tempest runs, and
help us to debug eventual failures.

Change-Id: I5b6d6c662f1c23478ba0e0fb4f3d861a060abce7
Depends-On: I79c5b9521265e97595d3323149ba6e7d1e8e972b
2015-09-04 17:39:34 -04:00

88 lines
2.6 KiB
Bash
Executable File

#!/bin/bash -ex
# Copyright 2015 Red Hat, Inc.
#
# 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.
if [ $(id -u) != 0 ]; then
# preserve environment so we can have ZUUL_* params
SUDO='sudo -E'
fi
$SUDO ./install_modules.sh
# TODO(pabelanger): Move this into tools/install_tempest.sh and add logic so we
# can clone tempest outside of the gate. Also, tempest should be sandboxed into
# the local directory but works needs to be added into puppet to properly find
# the path.
if [ -e /usr/zuul-env/bin/zuul-cloner ] ; then
/usr/zuul-env/bin/zuul-cloner --workspace /tmp --cache-dir /opt/git \
git://git.openstack.org openstack/tempest
fi
PUPPET_ARGS="--detailed-exitcodes --verbose --color=false --debug"
function run_puppet() {
local manifest=$1
$SUDO puppet apply $PUPPET_ARGS fixtures/${manifest}.pp
local res=$?
return $res
}
function is_fedora {
# note we consider CentOS 7 as fedora for now
lsb_release -i 2>/dev/null | grep -iq "fedora" || \
lsb_release -i 2>/dev/null | grep -iq "CentOS"
}
function uses_debs {
# check if apt-get is installed, valid for debian based
type "apt-get" 2>/dev/null
}
if uses_debs; then
sudo apt-get install -y dstat
elif is_fedora; then
sudo yum install -y dstat
fi
# use dstat to monitor system activity during integration testing
if type "dstat" 2>/dev/null; then
$SUDO dstat -tcmndrylpg --top-cpu-adv --top-io-adv --nocolor | sudo tee --append /var/log/dstat.log > /dev/null &
fi
$SUDO ./install_modules.sh
# Run puppet and assert something changes.
set +e
run_puppet scenario001
RESULT=$?
set -e
if [ $RESULT -ne 2 ]; then
exit 1
fi
# Run puppet a second time and assert nothing changes.
set +e
run_puppet scenario001
RESULT=$?
set -e
if [ $RESULT -ne 0 ]; then
exit 1
fi
# TODO(emilien) the checkout thing is temporary, while test_list_projects_returns_only_authorized_projects is
# failing for us we checkout the most recent commit without this test.
# https://bugs.launchpad.net/tempest/+bug/1492419
cd /tmp/openstack/tempest; git checkout b6369eaa58f2c9ce334863cb3ba54c5656cf64c4; tox -eall -- identity image