32a4b11f15
This commit removes vitrage-tempest-plugin from the BLACKLIST since the patch[0] was already merged. NOTE: The patch on the comment[1] was duplicated of [0]. So it was abandoned. [0] https://review.opendev.org/#/c/638931/ Change-Id: I5539159bad10b3359981fab88b3be5e4e997fcb9
159 lines
5.2 KiB
Bash
159 lines
5.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright 2017 Red Hat, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# 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 intended to check the sanity of tempest plugins against
|
|
# tempest master.
|
|
# What it does:
|
|
# * Retrieve the project lists having tempest plugin if project name is
|
|
# given.
|
|
# * For each project in a list, it does:
|
|
# * Create virtualenv and install tempest in it
|
|
# * Clone the Project
|
|
# * Install the Project and also installs dependencies from
|
|
# test-requirements.txt.
|
|
# * Create Tempest workspace
|
|
# * List tempest plugins
|
|
# * List tempest plugins tests
|
|
# * Delete virtualenv and project repo
|
|
#
|
|
# If one of the step fails, The script will exit with failure.
|
|
|
|
if [ "$1" == "-h" ]; then
|
|
echo -e "This script performs the sanity of tempest plugins to find
|
|
configuration and dependency issues with the tempest.\n
|
|
Usage: sh ./tools/tempest-plugin-sanity.sh [Run sanity on tempest plugins]"
|
|
exit 0
|
|
fi
|
|
|
|
set -ex
|
|
|
|
# retrieve a list of projects having tempest plugins
|
|
PROJECT_LIST="$(python tools/generate-tempest-plugins-list.py)"
|
|
# List of projects having tempest plugin stale or unmaintained for a long time
|
|
# (6 months or more)
|
|
# TODO(masayukig): Some of these can be removed from BLACKLIST in the future.
|
|
# barbican-tempest-plugin: https://review.opendev.org/#/c/634631/
|
|
# cyborg-tempest-plugin: https://review.opendev.org/659687
|
|
# intel-nfv-ci-tests: https://review.opendev.org/#/c/634640/
|
|
# networking-ansible: https://review.opendev.org/#/c/634647/
|
|
# networking-generic-switch: https://review.opendev.org/#/c/634846/
|
|
# networking-l2gw-tempest-plugin: https://review.opendev.org/#/c/635093/
|
|
# networking-midonet: https://review.opendev.org/#/c/635096/
|
|
# networking-plumgrid: https://review.opendev.org/#/c/635096/
|
|
# networking-spp: https://review.opendev.org/#/c/635098/
|
|
# neutron-dynamic-routing: https://review.opendev.org/#/c/637718/
|
|
# neutron-vpnaas: https://review.opendev.org/#/c/637719/
|
|
# nova-lxd: https://review.opendev.org/#/c/638334/
|
|
# valet: https://review.opendev.org/#/c/638339/
|
|
|
|
BLACKLIST="
|
|
barbican-tempest-plugin
|
|
cyborg-tempest-plugin
|
|
intel-nfv-ci-tests
|
|
networking-ansible
|
|
networking-generic-switch
|
|
networking-l2gw-tempest-plugin
|
|
networking-midonet
|
|
networking-plumgrid
|
|
networking-spp
|
|
neutron-dynamic-routing
|
|
neutron-vpnaas
|
|
nova-lxd
|
|
valet
|
|
"
|
|
|
|
# Function to clone project using zuul-cloner or from git
|
|
function clone_project() {
|
|
if [ -e /usr/zuul-env/bin/zuul-cloner ]; then
|
|
/usr/zuul-env/bin/zuul-cloner --cache-dir /opt/git \
|
|
https://opendev.org \
|
|
openstack/"$1"
|
|
|
|
elif [ -e /usr/bin/git ]; then
|
|
/usr/bin/git clone https://opendev.org/openstack/"$1" \
|
|
openstack/"$1"
|
|
|
|
fi
|
|
}
|
|
|
|
# function to create virtualenv to perform sanity operation
|
|
function prepare_workspace() {
|
|
SANITY_DIR=$(pwd)
|
|
virtualenv -p python3 --clear "$SANITY_DIR"/.venv
|
|
export TVENV="$SANITY_DIR/tools/with_venv.sh"
|
|
cd "$SANITY_DIR"
|
|
|
|
# Install tempest with test dependencies in a venv
|
|
"$TVENV" pip install -e . -r test-requirements.txt
|
|
}
|
|
|
|
# Function to install project
|
|
function install_project() {
|
|
"$TVENV" pip install "$SANITY_DIR"/openstack/"$1"
|
|
# Check for test-requirements.txt file in a project then install it.
|
|
if [ -e "$SANITY_DIR"/openstack/"$1"/test-requirements.txt ]; then
|
|
"$TVENV" pip install -r "$SANITY_DIR"/openstack/"$1"/test-requirements.txt
|
|
fi
|
|
}
|
|
|
|
# Function to perform sanity checking on Tempest plugin
|
|
function tempest_sanity() {
|
|
"$TVENV" tempest init "$SANITY_DIR"/tempest_sanity && \
|
|
cd "$SANITY_DIR"/tempest_sanity && \
|
|
"$TVENV" tempest list-plugins && \
|
|
"$TVENV" tempest run -l
|
|
retval=$?
|
|
# Delete tempest workspace
|
|
# NOTE: Cleaning should be done even if an error occurs.
|
|
"$TVENV" tempest workspace remove --name tempest_sanity --rmdir
|
|
cd "$SANITY_DIR"
|
|
# Remove the sanity workspace in case of remaining
|
|
rm -fr "$SANITY_DIR"/tempest_sanity
|
|
# Remove the project directory after sanity run
|
|
rm -fr "$SANITY_DIR"/openstack/"$1"
|
|
|
|
return $retval
|
|
}
|
|
|
|
# Function to run sanity check on each project
|
|
function plugin_sanity_check() {
|
|
prepare_workspace && \
|
|
clone_project "$1" && \
|
|
install_project "$1" && \
|
|
tempest_sanity "$1"
|
|
|
|
return $?
|
|
}
|
|
|
|
# Log status
|
|
passed_plugin=''
|
|
failed_plugin=''
|
|
# Perform sanity on all tempest plugin projects
|
|
for project in $PROJECT_LIST; do
|
|
# Remove blacklisted tempest plugins
|
|
if ! [[ `echo $BLACKLIST | grep -c $project ` -gt 0 ]]; then
|
|
plugin_sanity_check $project && passed_plugin+=", $project" || \
|
|
failed_plugin+="$project, " > $SANITY_DIR/$project.txt
|
|
fi
|
|
done
|
|
|
|
# Check for failed status
|
|
if [[ -n $failed_plugin ]]; then
|
|
echo "Failed Plugins: $failed_plugin"
|
|
exit 1
|
|
fi
|