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
152 lines
4.4 KiB
Django/Jinja
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
|