
The log files created during the Tempest run get scp-d to their final location via Ansible. Some root-owned log files are not readable for the Ansible process and that results in getting an EPERM and thus the gateway job is qualified as UNSTABLE. We don't have a hook in between the gluster invocations creating those log files and the call to the Ansible upload job, so we are not able to chmod the logs as needed. Instead we apply the following hack: we create and mount a VFAT file system onto the log directory where the trouble strikes; and VFAT does not implement POSIX file permissions therefore all files within it qualify as world readable. Change-Id: I9a85888166b5b9c28a049e7c17335e2082a61f92
142 lines
5.5 KiB
Bash
Executable File
142 lines
5.5 KiB
Bash
Executable File
#!/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.
|
|
|
|
TEMPEST_CONFIG=$BASE/new/tempest/etc/tempest.conf
|
|
|
|
sudo chown -R jenkins:stack $BASE/new/tempest
|
|
sudo chown -R jenkins:stack $BASE/data/tempest
|
|
sudo chmod -R o+rx $BASE/new/devstack/files
|
|
|
|
# Import devstack functions 'iniset'
|
|
source $BASE/new/devstack/functions
|
|
|
|
|
|
|
|
if [[ "$JOB_NAME" =~ "glusterfs-native" ]]; then
|
|
local BACKEND_NAME="GLUSTERNATIVE"
|
|
iniset $TEMPEST_CONFIG share enable_protocols glusterfs
|
|
iniset $TEMPEST_CONFIG share storage_protocol glusterfs
|
|
# Disable tempest config option that enables creation of 'ip' type access
|
|
# rules by default during tempest test runs.
|
|
iniset $TEMPEST_CONFIG share enable_ip_rules_for_protocols
|
|
iniset $TEMPEST_CONFIG share enable_cert_rules_for_protocols glusterfs
|
|
iniset $TEMPEST_CONFIG share capability_snapshot_support True
|
|
# ro access_level is not supported by the driver.
|
|
iniset $TEMPEST_CONFIG share enable_ro_access_level_for_protocols
|
|
else
|
|
if [[ "$JOB_NAME" =~ "glusterfs-heketi" ]]; then
|
|
local BACKEND_NAME="GLUSTERFSHEKETI"
|
|
else
|
|
local BACKEND_NAME="GLUSTERFS"
|
|
fi
|
|
iniset $TEMPEST_CONFIG share enable_protocols nfs
|
|
iniset $TEMPEST_CONFIG share enable_ip_rules_for_protocols nfs
|
|
iniset $TEMPEST_CONFIG share storage_protocol NFS
|
|
# ro access_level is not supported by the driver.
|
|
iniset $TEMPEST_CONFIG share enable_ro_access_level_for_protocols
|
|
fi
|
|
|
|
|
|
iniset $TEMPEST_CONFIG share backend_names $BACKEND_NAME
|
|
|
|
# Set two retries for CI jobs
|
|
iniset $TEMPEST_CONFIG share share_creation_retry_number 2
|
|
|
|
# Suppress errors in cleanup of resources
|
|
SUPPRESS_ERRORS=${SUPPRESS_ERRORS_IN_CLEANUP:-True}
|
|
iniset $TEMPEST_CONFIG share suppress_errors_in_cleanup $SUPPRESS_ERRORS
|
|
|
|
|
|
# Disable multi_backend tests
|
|
RUN_MANILA_MULTI_BACKEND_TESTS=${RUN_MANILA_MULTI_BACKEND_TESTS:-False}
|
|
iniset $TEMPEST_CONFIG share multi_backend $RUN_MANILA_MULTI_BACKEND_TESTS
|
|
|
|
# Disable manage/unmanage tests
|
|
RUN_MANILA_MANAGE_TESTS=${RUN_MANILA_MANAGE_TESTS:-False}
|
|
iniset $TEMPEST_CONFIG share run_manage_unmanage_tests $RUN_MANILA_MANAGE_TESTS
|
|
|
|
# Disable extend tests
|
|
RUN_MANILA_EXTEND_TESTS=${RUN_MANILA_EXTEND_TESTS:-False}
|
|
iniset $TEMPEST_CONFIG share run_extend_tests $RUN_MANILA_EXTEND_TESTS
|
|
|
|
# Disable shrink tests
|
|
RUN_MANILA_SHRINK_TESTS=${RUN_MANILA_SHRINK_TESTS:-False}
|
|
iniset $TEMPEST_CONFIG share run_shrink_tests $RUN_MANILA_SHRINK_TESTS
|
|
|
|
# Disable multi_tenancy tests
|
|
iniset $TEMPEST_CONFIG share multitenancy_enabled False
|
|
|
|
# Disable snapshot tests
|
|
RUN_MANILA_SNAPSHOT_TESTS=${RUN_MANILA_SNAPSHOT_TESTS:-False}
|
|
iniset $TEMPEST_CONFIG share run_snapshot_tests $RUN_MANILA_SNAPSHOT_TESTS
|
|
|
|
# Disable consistency group tests
|
|
RUN_MANILA_CG_TESTS=${RUN_MANILA_CG_TESTS:-False}
|
|
iniset $TEMPEST_CONFIG share run_consistency_group_tests $RUN_MANILA_CG_TESTS
|
|
|
|
# let us control if we die or not
|
|
set +o errexit
|
|
cd $BASE/new/tempest
|
|
|
|
export MANILA_TEMPEST_CONCURRENCY=${MANILA_TEMPEST_CONCURRENCY:-12}
|
|
export MANILA_TESTS=${MANILA_TESTS:-'manila_tempest_tests.tests.api'}
|
|
|
|
if [[ "$JOB_NAME" =~ "scenario" ]]; then
|
|
echo "Set test set to scenario only"
|
|
MANILA_TESTS='manila_tempest_tests.tests.scenario'
|
|
fi
|
|
|
|
# check if tempest plugin was installed correctly
|
|
echo 'import pkg_resources; print list(pkg_resources.iter_entry_points("tempest.test_plugins"))' | python
|
|
|
|
# Workaround for Tempest architectural changes
|
|
# See bugs:
|
|
# 1) https://bugs.launchpad.net/manila/+bug/1531049
|
|
# 2) https://bugs.launchpad.net/tempest/+bug/1524717
|
|
ADMIN_TENANT_NAME=${ADMIN_TENANT_NAME:-"admin"}
|
|
ADMIN_PASSWORD=${ADMIN_PASSWORD:-"secretadmin"}
|
|
iniset $TEMPEST_CONFIG auth admin_username ${ADMIN_USERNAME:-"admin"}
|
|
iniset $TEMPEST_CONFIG auth admin_password $ADMIN_PASSWORD
|
|
iniset $TEMPEST_CONFIG auth admin_tenant_name $ADMIN_TENANT_NAME
|
|
iniset $TEMPEST_CONFIG auth admin_domain_name ${ADMIN_DOMAIN_NAME:-"Default"}
|
|
iniset $TEMPEST_CONFIG identity username ${TEMPEST_USERNAME:-"demo"}
|
|
iniset $TEMPEST_CONFIG identity password $ADMIN_PASSWORD
|
|
iniset $TEMPEST_CONFIG identity tenant_name ${TEMPEST_TENANT_NAME:-"demo"}
|
|
iniset $TEMPEST_CONFIG identity alt_username ${ALT_USERNAME:-"alt_demo"}
|
|
iniset $TEMPEST_CONFIG identity alt_password $ADMIN_PASSWORD
|
|
iniset $TEMPEST_CONFIG identity alt_tenant_name ${ALT_TENANT_NAME:-"alt_demo"}
|
|
iniset $TEMPEST_CONFIG validation ip_version_for_ssh 4
|
|
iniset $TEMPEST_CONFIG validation ssh_timeout $BUILD_TIMEOUT
|
|
iniset $TEMPEST_CONFIG validation network_for_ssh ${PRIVATE_NETWORK_NAME:-"private"}
|
|
|
|
echo "Running tempest manila test suites"
|
|
sudo -H -u jenkins tox -eall-plugin $MANILA_TESTS -- --concurrency=$MANILA_TEMPEST_CONCURRENCY
|
|
|
|
_retval=$?
|
|
|
|
# This is a hack to work around EPERM issue upon
|
|
# uploading log files: we ensure that the logs
|
|
# shall land in a VFAT mount, whereby POSIX file
|
|
# permissions are not implemented (everything is
|
|
# world readable).
|
|
install_package dosfstools
|
|
truncate -s 3g /tmp/fat.img
|
|
mkdosfs /tmp/fat.img
|
|
sudo mkdir "$WORKSPACE/logs/glusterfs"
|
|
sudo mount /tmp/fat.img "$WORKSPACE/logs/glusterfs"
|
|
|
|
(exit $_retval)
|