neutron/neutron/tests/contrib/post_test_hook.sh
Ihar Hrachyshka 3e341a9941 Fix post gate hook to accommodate for new os-testr
New os-testr uses stestr under the hood, which creates .stestr but not
.testrepository directory in the current dir. Other than that, it
doesn't seem like there is any difference in the format or names of
files generated in the directory.

Change-Id: I82d52bf0ad885bd36d2f0782a7c86ac61df532f2
Closes-Bug: #1716746
2017-09-12 14:20:12 -06:00

75 lines
2.1 KiB
Bash

#!/usr/bin/env bash
set -xe
NEUTRON_DIR="$BASE/new/neutron"
SCRIPTS_DIR="/usr/os-testr-env/bin/"
venv=${1:-"dsvm-functional"}
function generate_testr_results {
# Give job user rights to access tox logs
sudo -H -u $owner chmod o+rw .
sudo -H -u $owner chmod o+rw -R .stestr
if [ -f ".stestr/0" ] ; then
.tox/$venv/bin/subunit-1to2 < .stestr/0 > ./stestr.subunit
$SCRIPTS_DIR/subunit2html ./stestr.subunit testr_results.html
gzip -9 ./stestr.subunit
gzip -9 ./testr_results.html
sudo mv ./*.gz /opt/stack/logs/
fi
}
function generate_log_index {
local xtrace
xtrace=$(set +o | grep xtrace)
set +o xtrace
# honor job flavors like -python35
case $venv in
*"dsvm-fullstack"*)
venv="dsvm-fullstack"
;;
*"dsvm-functional"*)
venv="dsvm-functional"
;;
*)
echo "Unrecognized environment $venv".
exit 1
esac
virtualenv /tmp/os-log-merger
/tmp/os-log-merger/bin/pip install -U os-log-merger==1.1.0
files=$(find /opt/stack/logs/$venv-logs -name '*.txt' -o -name '*.log')
# -a3 to truncate common path prefix
# || true to avoid the whole run failure because of os-log-merger crashes and such
# TODO(ihrachys) remove || true when we have more trust in os-log-merger
contents=$(/tmp/os-log-merger/bin/os-log-merger -a3 $files || true)
# don't store DEBUG level messages because they are not very useful,
# and are not indexed by logstash anyway
echo "$contents" | grep -v DEBUG | sudo tee /opt/stack/logs/$venv-index.txt > /dev/null
$xtrace
}
if [[ "$venv" == dsvm-functional* ]] || [[ "$venv" == dsvm-fullstack* ]]; then
owner=stack
sudo_env=
# Set owner permissions according to job's requirements.
cd $NEUTRON_DIR
sudo chown -R $owner:stack $NEUTRON_DIR
# Run tests
echo "Running neutron $venv test suite"
set +e
sudo -H -u $owner $sudo_env tox -e $venv
testr_exit_code=$?
set -e
# Collect and parse results
generate_testr_results
generate_log_index
exit $testr_exit_code
fi