Files
openstack-ansible/playbooks/roles/os_tempest/templates/openstack_tempest_gate.sh.j2
Jesse Pretorius 63dde7f047 Rename test sets and include more api tests
This patch implements the following changes:

'commit_aio' tests are now called 'scenario' tests
 - this is now set as the default test set

'commit_multinode' tests are now called 'api' tests
 - network, compute, object_storage tests have been added

'nightly_heat_multinode' tests are now called 'smoke' tests

Change-Id: Ic415eab199f647a3a4029c535aeceb86291da162
Implements: blueprint additional-tempest-checks
2015-03-18 16:41:56 +00:00

152 lines
4.4 KiB
Django/Jinja

#!/usr/bin/env bash
# Copyright 2014, Rackspace US, 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.
# Script for running gate tests. Initially very sparse
# additional projects and test types will be added over time.
# -------------------- Shell Options -------------------------
set -x
# -------------------- Parameters -------------------------
# The only parameter this script takes is the name of a test list to use:
# ./$0 <test_list_name>
#
# If a name is not supplied scenario will be used.
test_list_name=${1:-scenario}
testr_ouput_lines=${testr_output_lines:-100}
RUN_TEMPEST_OPTS=${RUN_TEMPEST_OPTS:-''}
TESTR_OPTS=${TESTR_OPTS:-''}
# -------------------- Functions -------------------------
# Test list functions. Each tempest test scenario (eg scenario, api, smoke,
# defcore) should have a function here to generate the list of tests that
# should be run. Each function takes in the full list of tempest tests and
# should output a filtered list.
function gen_test_list_api() {
# filter test list to produce list of tests to use.
egrep 'tempest\.api\.(identity|image|volume|network|compute|object_storage)'\
|grep -vi xml
}
# Run selected scenario tests
function gen_test_list_scenario() {
egrep 'tempest\.scenario\.test_(minimum|swift|server|network)_basic(_ops)?'
}
# Run smoke tests
function gen_test_list_smoke() {
grep smoke
}
# Run all tests
function gen_test_list_all() {
cat
}
# Generate test list from official defcore/refstack spec
# Note that unlike the other test list functions, this one isn't a filter
# it ignores its stdin and pulls the test list from github.
function gen_test_list_defcore(){
branch=${1:-juno}
python <<END
import json
import requests
branch="$branch"
url=("https://raw.githubusercontent.com/stackforge/"
"refstack/master/defcore/%(branch)score.json"
% {'branch': branch}
)
response = requests.get(url)
for capability in response.json()['capabilities'].values():
for test in capability['tests']:
print test
END
}
# defcore tests for juno
function gen_test_list_defcore_juno(){
gen_test_list_defcore juno
}
# defcore tests for icehouse
function gen_test_list_defcore_icehouse(){
gen_test_list_defcore icehouse
}
exit_msg(){
echo $1
exit $2
}
# -------------------- Main -------------------------
available_test_lists=$(compgen -A function|sed -n '/^gen_test_list_/s/gen_test_list_//p')
grep $test_list_name <<<$available_test_lists ||\
exit_msg "$test_list_name is not a valid test list, available test lists: $available_test_lists" 1
# work in tempest directory
pushd {{ tempest_git_dest }}
# read creds into environment
source /root/openrc
# create testr repo - required for testr to do anything
testr init &>/dev/null ||:
# Get list of available tests.
# lines 1-$testr_ouput_lines are output to stdout, all lines are written to
# full_test_list.
set -o pipefail
testr list-tests |tee >(sed -n 1,${testr_ouput_lines}p) >full_test_list ||\
exit_msg "Failed to generate test list" $?
set +o pipefail
# Check the full test list is not empty
[[ -s full_test_list ]] || exit_msg "No tests found" 1
# Write filter test list using selected function. The full test list is
# pre-filtered to only include test lines, this saves adding that filter to
# every test list function.
grep '^tempest\.' < full_test_list \
| gen_test_list_${test_list_name} > test_list \
|| exit_msg "Filter $test_list_name failed. Output: $(cat test_list)" 1
# Check the filtered test list is not empty
[[ -s test_list ]] || exit_msg "No tests remain after filtering" 1
test_list_summary="${test_list_name} ($(wc -l <test_list) tests)"
echo "Using test list $test_list_summary"
# execute chosen tests with pretty output
./run_tempest.sh --no-virtual-env ${RUN_TEMPEST_OPTS} -- --load-list test_list ${TESTR_OPTS};
result=$?
popd
if [[ $result == 0 ]]; then
echo "TEMPEST PASS $test_list_summary"
else
echo "TEMPEST FAIL $test_list_summary"
fi
exit $result