2014-05-31 21:50:53 +03:00
|
|
|
#!/bin/bash -xe
|
2014-05-22 20:12:12 +03:00
|
|
|
#
|
|
|
|
# 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.
|
2015-01-22 19:55:03 +02:00
|
|
|
# First argument ($1) expects 'multibackend' as value for setting appropriate
|
|
|
|
# tempest conf opts, all other values will assume singlebackend installation.
|
2014-05-22 20:12:12 +03:00
|
|
|
|
2020-07-21 13:04:58 -07:00
|
|
|
SCRIPT_IS_DEPRECATED="Manila's pre_test_hook and post_test_hook scripts are
|
|
|
|
DEPRECATED. Please use alternate tools to configure devstack's local.conf
|
|
|
|
file or run tempest tests"
|
|
|
|
|
2017-10-13 15:13:16 +01:00
|
|
|
sudo chown -R $USER:stack $BASE/new/tempest
|
|
|
|
sudo chown -R $USER:stack $BASE/data/tempest
|
2014-05-31 21:50:53 +03:00
|
|
|
sudo chmod -R o+rx $BASE/new/devstack/files
|
2014-05-22 20:12:12 +03:00
|
|
|
|
2015-01-22 19:55:03 +02:00
|
|
|
# Import devstack functions 'iniset', 'iniget' and 'trueorfalse'
|
2014-12-31 11:10:04 +02:00
|
|
|
source $BASE/new/devstack/functions
|
|
|
|
|
2016-05-30 18:16:15 +03:00
|
|
|
export TEMPEST_CONFIG=${TEMPEST_CONFIG:-$BASE/new/tempest/etc/tempest.conf}
|
2014-06-26 05:12:08 -04:00
|
|
|
|
2015-12-28 14:23:58 +02:00
|
|
|
# === Handle script arguments ===
|
|
|
|
|
|
|
|
# First argument is expected to contain value equal either to 'singlebackend'
|
|
|
|
# or 'multibackend' that defines how many back-ends are used.
|
|
|
|
BACK_END_TYPE=$1
|
|
|
|
|
|
|
|
# Second argument is expected to have codename of a share driver.
|
|
|
|
DRIVER=$2
|
|
|
|
|
|
|
|
# Third argument is expected to contain either 'api' or 'scenario' values
|
|
|
|
# that define test suites to be run.
|
|
|
|
TEST_TYPE=$3
|
|
|
|
|
|
|
|
# Fourth argument is expected to be boolean-like and it should be 'true'
|
|
|
|
# when PostgreSQL DB back-end is used and 'false' when MySQL.
|
|
|
|
POSTGRES_ENABLED=$4
|
|
|
|
POSTGRES_ENABLED=$(trueorfalse True POSTGRES_ENABLED)
|
|
|
|
|
2020-07-21 13:04:58 -07:00
|
|
|
if [[ "$BACK_END_TYPE" == "multibackend" ]]; then
|
2015-12-28 14:23:58 +02:00
|
|
|
iniset $TEMPEST_CONFIG share multi_backend True
|
2015-01-22 19:55:03 +02:00
|
|
|
# Set share backends names, they are defined within pre_test_hook
|
|
|
|
export BACKENDS_NAMES="LONDON,PARIS"
|
|
|
|
else
|
|
|
|
export BACKENDS_NAMES="LONDON"
|
2014-05-22 20:12:12 +03:00
|
|
|
fi
|
2015-12-28 14:23:58 +02:00
|
|
|
iniset $TEMPEST_CONFIG share backend_names $BACKENDS_NAMES
|
2014-05-22 20:12:12 +03:00
|
|
|
|
2018-07-18 08:43:15 -07:00
|
|
|
# If testing a stable branch, we need to ensure we're testing with supported
|
|
|
|
# API micro-versions; so set the versions from code if we're not testing the
|
|
|
|
# master branch. If we're testing master, we'll allow manila-tempest-plugin
|
|
|
|
# (which is branchless) tell us what versions it wants to test.
|
|
|
|
if [[ $ZUUL_BRANCH != "master" ]]; then
|
|
|
|
# Grab the supported API micro-versions from the code
|
|
|
|
_API_VERSION_REQUEST_PATH=$BASE/new/manila/manila/api/openstack/api_version_request.py
|
|
|
|
_DEFAULT_MIN_VERSION=$(awk '$0 ~ /_MIN_API_VERSION = /{print $3}' $_API_VERSION_REQUEST_PATH)
|
|
|
|
_DEFAULT_MAX_VERSION=$(awk '$0 ~ /_MAX_API_VERSION = /{print $3}' $_API_VERSION_REQUEST_PATH)
|
|
|
|
# Override the *_api_microversion tempest options if present
|
|
|
|
MANILA_TEMPEST_MIN_API_MICROVERSION=${MANILA_TEMPEST_MIN_API_MICROVERSION:-$_DEFAULT_MIN_VERSION}
|
|
|
|
MANILA_TEMPEST_MAX_API_MICROVERSION=${MANILA_TEMPEST_MAX_API_MICROVERSION:-$_DEFAULT_MAX_VERSION}
|
|
|
|
# Set these options in tempest.conf
|
|
|
|
iniset $TEMPEST_CONFIG share min_api_microversion $MANILA_TEMPEST_MIN_API_MICROVERSION
|
|
|
|
iniset $TEMPEST_CONFIG share max_api_microversion $MANILA_TEMPEST_MAX_API_MICROVERSION
|
|
|
|
fi
|
2018-07-13 15:31:46 -07:00
|
|
|
|
2014-12-26 14:34:19 +02:00
|
|
|
# Set two retries for CI jobs
|
2015-12-28 14:23:58 +02:00
|
|
|
iniset $TEMPEST_CONFIG share share_creation_retry_number 2
|
2014-12-26 14:34:19 +02:00
|
|
|
|
2014-12-26 19:45:51 +02:00
|
|
|
# Suppress errors in cleanup of resources
|
2015-03-17 13:49:34 -04:00
|
|
|
SUPPRESS_ERRORS=${SUPPRESS_ERRORS_IN_CLEANUP:-True}
|
2015-12-28 14:23:58 +02:00
|
|
|
iniset $TEMPEST_CONFIG share suppress_errors_in_cleanup $SUPPRESS_ERRORS
|
2014-12-26 19:45:51 +02:00
|
|
|
|
2016-01-14 08:02:34 -05:00
|
|
|
USERNAME_FOR_USER_RULES=${USERNAME_FOR_USER_RULES:-"manila"}
|
|
|
|
PASSWORD_FOR_SAMBA_USER=${PASSWORD_FOR_SAMBA_USER:-$USERNAME_FOR_USER_RULES}
|
2015-07-29 10:39:38 -04:00
|
|
|
|
2016-12-22 09:43:29 -05:00
|
|
|
# Enable feature tests:
|
|
|
|
# Default options are as specified in tempest.
|
|
|
|
RUN_MANILA_QUOTA_TESTS=${RUN_MANILA_QUOTA_TESTS:-True}
|
|
|
|
RUN_MANILA_SHRINK_TESTS=${RUN_MANILA_SHRINK_TESTS:-True}
|
|
|
|
RUN_MANILA_SNAPSHOT_TESTS=${RUN_MANILA_SNAPSHOT_TESTS:-True}
|
2016-06-08 13:46:51 -07:00
|
|
|
RUN_MANILA_REVERT_TO_SNAPSHOT_TESTS=${RUN_MANILA_REVERT_TO_SNAPSHOT_TESTS:-False}
|
2017-02-07 17:08:10 +02:00
|
|
|
RUN_MANILA_SG_TESTS=${RUN_MANILA_SG_TESTS:-${RUN_MANILA_CG_TESTS:-True}}
|
2015-03-17 13:49:34 -04:00
|
|
|
RUN_MANILA_MANAGE_TESTS=${RUN_MANILA_MANAGE_TESTS:-True}
|
2015-11-22 16:10:44 -05:00
|
|
|
RUN_MANILA_MANAGE_SNAPSHOT_TESTS=${RUN_MANILA_MANAGE_SNAPSHOT_TESTS:-False}
|
2016-12-22 09:43:29 -05:00
|
|
|
RUN_MANILA_REPLICATION_TESTS=${RUN_MANILA_REPLICATION_TESTS:-False}
|
|
|
|
RUN_MANILA_HOST_ASSISTED_MIGRATION_TESTS=${RUN_MANILA_HOST_ASSISTED_MIGRATION_TESTS:-False}
|
|
|
|
RUN_MANILA_DRIVER_ASSISTED_MIGRATION_TESTS=${RUN_MANILA_DRIVER_ASSISTED_MIGRATION_TESTS:-False}
|
2016-07-08 14:41:35 -03:00
|
|
|
RUN_MANILA_MOUNT_SNAPSHOT_TESTS=${RUN_MANILA_MOUNT_SNAPSHOT_TESTS:-False}
|
2016-10-25 14:57:11 -04:00
|
|
|
RUN_MANILA_MIGRATION_WITH_PRESERVE_SNAPSHOTS_TESTS=${RUN_MANILA_MIGRATION_WITH_PRESERVE_SNAPSHOTS_TESTS:-False}
|
2017-11-21 11:00:45 -02:00
|
|
|
RUN_MANILA_IPV6_TESTS=${RUN_MANILA_IPV6_TESTS:-False}
|
2015-03-17 13:49:34 -04:00
|
|
|
|
2015-11-09 19:36:56 +02:00
|
|
|
MANILA_CONF=${MANILA_CONF:-/etc/manila/manila.conf}
|
|
|
|
|
2016-12-22 09:43:29 -05:00
|
|
|
# Capabilitities
|
2016-08-16 22:36:13 -04:00
|
|
|
CAPABILITY_CREATE_SHARE_FROM_SNAPSHOT_SUPPORT=${CAPABILITY_CREATE_SHARE_FROM_SNAPSHOT_SUPPORT:-True}
|
2018-07-10 17:23:12 +00:00
|
|
|
MANILA_CONFIGURE_DEFAULT_TYPES=${MANILA_CONFIGURE_DEFAULT_TYPES:-True}
|
2016-08-16 22:36:13 -04:00
|
|
|
|
2015-03-17 13:49:34 -04:00
|
|
|
if [[ -z "$MULTITENANCY_ENABLED" ]]; then
|
|
|
|
# Define whether share drivers handle share servers or not.
|
|
|
|
# Requires defined config option 'driver_handles_share_servers'.
|
|
|
|
NO_SHARE_SERVER_HANDLING_MODES=0
|
|
|
|
WITH_SHARE_SERVER_HANDLING_MODES=0
|
|
|
|
|
|
|
|
# Convert backend names to config groups using lowercase translation
|
|
|
|
CONFIG_GROUPS=${BACKENDS_NAMES,,}
|
|
|
|
|
|
|
|
for CG in ${CONFIG_GROUPS//,/ }; do
|
|
|
|
DRIVER_HANDLES_SHARE_SERVERS=$(iniget $MANILA_CONF $CG driver_handles_share_servers)
|
|
|
|
if [[ $DRIVER_HANDLES_SHARE_SERVERS == False ]]; then
|
|
|
|
NO_SHARE_SERVER_HANDLING_MODES=$((NO_SHARE_SERVER_HANDLING_MODES+1))
|
|
|
|
elif [[ $DRIVER_HANDLES_SHARE_SERVERS == True ]]; then
|
|
|
|
WITH_SHARE_SERVER_HANDLING_MODES=$((WITH_SHARE_SERVER_HANDLING_MODES+1))
|
|
|
|
else
|
|
|
|
echo "Config option 'driver_handles_share_servers' either is not defined or \
|
|
|
|
defined with improper value - '$DRIVER_HANDLES_SHARE_SERVERS'."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if [[ $NO_SHARE_SERVER_HANDLING_MODES -ge 1 && $WITH_SHARE_SERVER_HANDLING_MODES -ge 1 || \
|
|
|
|
$NO_SHARE_SERVER_HANDLING_MODES -eq 0 && $WITH_SHARE_SERVER_HANDLING_MODES -eq 0 ]]; then
|
|
|
|
echo 'Allowed only same driver modes for all backends to be run with Tempest job.'
|
|
|
|
exit 1
|
|
|
|
elif [[ $NO_SHARE_SERVER_HANDLING_MODES -ge 1 ]]; then
|
2015-12-28 14:23:58 +02:00
|
|
|
MULTITENANCY_ENABLED='False'
|
2015-03-17 13:49:34 -04:00
|
|
|
elif [[ $WITH_SHARE_SERVER_HANDLING_MODES -ge 1 ]]; then
|
2015-12-28 14:23:58 +02:00
|
|
|
MULTITENANCY_ENABLED='True'
|
2015-01-22 19:55:03 +02:00
|
|
|
else
|
2015-09-23 20:50:26 +08:00
|
|
|
echo 'Should never get here unless an error occurred.'
|
2015-01-22 19:55:03 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
else
|
2015-12-28 14:23:58 +02:00
|
|
|
MULTITENANCY_ENABLED=$(trueorfalse True MULTITENANCY_ENABLED)
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Set multitenancy configuration for Tempest
|
|
|
|
iniset $TEMPEST_CONFIG share multitenancy_enabled $MULTITENANCY_ENABLED
|
|
|
|
if [[ "$MULTITENANCY_ENABLED" == "False" ]]; then
|
|
|
|
# Using approach without handling of share servers we have bigger load for
|
|
|
|
# volume creation in Cinder using Generic driver. So, reduce amount of
|
|
|
|
# threads to avoid errors for Cinder volume creations that appear
|
|
|
|
# because of lack of free space.
|
2016-02-16 10:38:35 -05:00
|
|
|
MANILA_TEMPEST_CONCURRENCY=${MANILA_TEMPEST_CONCURRENCY:-8}
|
2016-05-30 18:16:15 +03:00
|
|
|
iniset $TEMPEST_CONFIG auth create_isolated_networks False
|
2015-01-22 19:55:03 +02:00
|
|
|
fi
|
|
|
|
|
2014-05-31 21:50:53 +03:00
|
|
|
# let us control if we die or not
|
|
|
|
set +o errexit
|
|
|
|
cd $BASE/new/tempest
|
2014-06-04 10:31:40 +03:00
|
|
|
|
2016-05-30 18:16:15 +03:00
|
|
|
export MANILA_TEMPEST_CONCURRENCY=${MANILA_TEMPEST_CONCURRENCY:-6}
|
2015-07-15 09:18:35 +02:00
|
|
|
export MANILA_TESTS=${MANILA_TESTS:-'manila_tempest_tests.tests.api'}
|
2014-06-04 10:31:40 +03:00
|
|
|
|
2016-12-22 09:43:29 -05:00
|
|
|
# Enable quota tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_quota_tests $RUN_MANILA_QUOTA_TESTS
|
|
|
|
|
|
|
|
# Enable shrink tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_shrink_tests $RUN_MANILA_SHRINK_TESTS
|
|
|
|
|
|
|
|
# Enable snapshot tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_snapshot_tests $RUN_MANILA_SNAPSHOT_TESTS
|
|
|
|
|
2016-06-08 13:46:51 -07:00
|
|
|
# Enable revert to snapshot tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_revert_to_snapshot_tests $RUN_MANILA_REVERT_TO_SNAPSHOT_TESTS
|
|
|
|
|
2016-06-01 15:32:43 -04:00
|
|
|
# Enable share group tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_share_group_tests $RUN_MANILA_SG_TESTS
|
2016-01-14 08:02:34 -05:00
|
|
|
|
|
|
|
# Enable manage/unmanage tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_manage_unmanage_tests $RUN_MANILA_MANAGE_TESTS
|
|
|
|
|
2015-11-22 16:10:44 -05:00
|
|
|
# Enable manage/unmanage snapshot tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_manage_unmanage_snapshot_tests $RUN_MANILA_MANAGE_SNAPSHOT_TESTS
|
|
|
|
|
2016-12-22 09:43:29 -05:00
|
|
|
# Enable replication tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_replication_tests $RUN_MANILA_REPLICATION_TESTS
|
|
|
|
|
|
|
|
# Enable migration tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_host_assisted_migration_tests $RUN_MANILA_HOST_ASSISTED_MIGRATION_TESTS
|
|
|
|
iniset $TEMPEST_CONFIG share run_driver_assisted_migration_tests $RUN_MANILA_DRIVER_ASSISTED_MIGRATION_TESTS
|
2016-10-25 14:57:11 -04:00
|
|
|
iniset $TEMPEST_CONFIG share run_migration_with_preserve_snapshots_tests $RUN_MANILA_MIGRATION_WITH_PRESERVE_SNAPSHOTS_TESTS
|
2016-12-22 09:43:29 -05:00
|
|
|
|
2016-07-08 14:41:35 -03:00
|
|
|
# Enable mountable snapshots tests
|
|
|
|
iniset $TEMPEST_CONFIG share run_mount_snapshot_tests $RUN_MANILA_MOUNT_SNAPSHOT_TESTS
|
|
|
|
|
2016-12-22 09:43:29 -05:00
|
|
|
# Create share from snapshot support
|
|
|
|
iniset $TEMPEST_CONFIG share capability_create_share_from_snapshot_support $CAPABILITY_CREATE_SHARE_FROM_SNAPSHOT_SUPPORT
|
|
|
|
|
2016-05-30 18:16:15 +03:00
|
|
|
iniset $TEMPEST_CONFIG validation ip_version_for_ssh 4
|
|
|
|
iniset $TEMPEST_CONFIG validation network_for_ssh ${PRIVATE_NETWORK_NAME:-"private"}
|
|
|
|
|
2018-07-10 17:23:12 +00:00
|
|
|
if [ $(trueorfalse False MANILA_CONFIGURE_DEFAULT_TYPES) == True ]; then
|
|
|
|
iniset $TEMPEST_CONFIG share default_share_type_name ${MANILA_DEFAULT_SHARE_TYPE:-default}
|
|
|
|
fi
|
2016-12-16 19:45:10 -02:00
|
|
|
|
2016-03-19 16:40:58 +02:00
|
|
|
ADMIN_DOMAIN_NAME=${ADMIN_DOMAIN_NAME:-"Default"}
|
|
|
|
export OS_PROJECT_DOMAIN_NAME=$ADMIN_DOMAIN_NAME
|
|
|
|
export OS_USER_DOMAIN_NAME=$ADMIN_DOMAIN_NAME
|
|
|
|
|
2017-11-21 11:00:45 -02:00
|
|
|
source $BASE/new/devstack/openrc admin admin
|
|
|
|
public_net_id=$(openstack network list --name $PUBLIC_NETWORK_NAME -f value -c ID )
|
|
|
|
iniset $TEMPEST_CONFIG network public_network_id $public_net_id
|
|
|
|
|
|
|
|
# Set config to run IPv6 tests according to env var
|
|
|
|
iniset $TEMPEST_CONFIG share run_ipv6_tests $RUN_MANILA_IPV6_TESTS
|
|
|
|
|
|
|
|
if ! [[ -z "$OVERRIDE_IP_FOR_NFS_ACCESS" ]]; then
|
|
|
|
# Set config to use specified IP as access rule on NFS scenario tests
|
|
|
|
# in order to workaround multiple NATs between the VMs and the storage
|
|
|
|
# controller
|
|
|
|
iniset $TEMPEST_CONFIG share override_ip_for_nfs_access $OVERRIDE_IP_FOR_NFS_ACCESS
|
|
|
|
fi
|
|
|
|
|
2019-01-10 23:05:01 -08:00
|
|
|
echo "Manila service details"
|
|
|
|
source $BASE/new/devstack/openrc admin admin
|
|
|
|
manila service-list
|
|
|
|
|
2020-07-21 13:04:58 -07:00
|
|
|
echo $SCRIPT_IS_DEPRECATED
|
|
|
|
|
2014-05-22 20:12:12 +03:00
|
|
|
echo "Running tempest manila test suites"
|
2018-01-30 16:46:34 +05:30
|
|
|
cd $BASE/new/tempest/
|
2019-01-08 05:30:57 -05:00
|
|
|
# List plugins in logs to enable debugging
|
|
|
|
sudo -H -u $USER tempest list-plugins
|
2018-01-30 16:46:34 +05:30
|
|
|
sudo -H -u $USER tempest run -r $MANILA_TESTS --concurrency=$MANILA_TEMPEST_CONCURRENCY
|
2016-06-10 18:29:24 +03:00
|
|
|
RETVAL=$?
|
2018-05-15 10:36:08 -07:00
|
|
|
cd -
|
2016-06-10 18:29:24 +03:00
|
|
|
exit $RETVAL
|