Fix functional tests job

Functional tests job are broken. This change proposes add post
test hook in ironicclient, which will be executed inside
post_test_hook function in devstack gate.

The benefit from this approach is it will immediately pick up
proposed fixes on ironicclient side and runs job. It allows us
to see the change breaks tests or not w/o merging related
changes.

post_test_hook runs functional tests and generate testr results
(original implementation was stolen from novaclient).

Closes-Bug: #1491778
Change-Id: Id476430d01a57a83bd4ee42b2d03e681835dfec3
This commit is contained in:
Anton Arefiev 2015-08-26 14:35:09 +03:00 committed by Jim Rollenhagen
parent b5a720f7a4
commit 156ca47f92
1 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,49 @@
#!/bin/bash -xe
# 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 post_test_hook function in devstack gate.
function generate_testr_results {
if [ -f .testrepository/0 ]; then
sudo .tox/functional/bin/testr last --subunit > $WORKSPACE/testrepository.subunit
sudo mv $WORKSPACE/testrepository.subunit $BASE/logs/testrepository.subunit
sudo /usr/os-testr-env/bin/subunit2html $BASE/logs/testrepository.subunit $BASE/logs/testr_results.html
sudo gzip -9 $BASE/logs/testrepository.subunit
sudo gzip -9 $BASE/logs/testr_results.html
sudo chown jenkins:jenkins $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
sudo chmod a+r $BASE/logs/testrepository.subunit.gz $BASE/logs/testr_results.html.gz
fi
}
export IRONICCLIENT_DIR="$BASE/new/python-ironicclient"
sudo chown -R jenkins:stack $IRONICCLIENT_DIR
cd $IRONICCLIENT_DIR
# Run tests
echo "Running ironicclient functional test suite"
set +e
# Only admin credentials needed for ironic api
source $BASE/new/devstack/openrc admin admin
# Preserve env for OS_ credentials
sudo -E -H -u jenkins ./tools/run_functional.sh
EXIT_CODE=$?
set -e
# Collect and parse result
generate_testr_results
exit $EXIT_CODE