From ab15e5cf14aeac37726b030fb2eec7a67bce6a22 Mon Sep 17 00:00:00 2001 From: Chandan Kumar Date: Tue, 7 Feb 2017 18:07:57 +0000 Subject: [PATCH] Enable using tempest rpm in a configurable mode * TEMPEST_FROM_SOURCE is set to true to install tempest from source. * Added capability to use tempest rpm * change the cirros image directory to /tmp/openstack/image if the image gets firstly downloaded in tempest workspace, Tempest init will fail to create tempest workspace. * Create image_dir if not exists. Change-Id: I349783ace314a3575e93e6c853a7756f0f9b85ac --- manifests/provision.pp | 4 +-- manifests/tempest.pp | 3 ++- run_tests.sh | 61 +++++++++++++++++++++++++++++++----------- 3 files changed, 50 insertions(+), 18 deletions(-) diff --git a/manifests/provision.pp b/manifests/provision.pp index d35377154..224228f6b 100644 --- a/manifests/provision.pp +++ b/manifests/provision.pp @@ -45,14 +45,14 @@ class openstack_integration::provision { container_format => 'bare', disk_format => 'qcow2', is_public => 'yes', - source => '/tmp/openstack/tempest/cirros-0.3.4-x86_64-disk.img' + source => '/tmp/openstack/image/cirros-0.3.4-x86_64-disk.img' } glance_image { 'cirros_alt': ensure => present, container_format => 'bare', disk_format => 'qcow2', is_public => 'yes', - source => '/tmp/openstack/tempest/cirros-0.3.4-x86_64-disk.img' + source => '/tmp/openstack/image/cirros-0.3.4-x86_64-disk.img' } Keystone_user_role <||>-> Glance_image<||> Keystone_endpoint <||>-> Glance_image<||> diff --git a/manifests/tempest.pp b/manifests/tempest.pp index 2c6898db0..ccb50882d 100644 --- a/manifests/tempest.pp +++ b/manifests/tempest.pp @@ -182,10 +182,11 @@ class openstack_integration::tempest ( manage_tests_packages => true, attach_encrypted_volume => $attach_encrypted_volume, murano_available => $murano, + tempest_workspace => '/tmp/openstack/tempest', # TODO(emilien) optimization by 1/ using Hiera to configure Glance image source # and 2/ if running in the gate, use /home/jenkins/cache/files/ cirros image. # img_dir => '/home/jenkins/cache/files', - img_dir => '/tmp/openstack/tempest', + img_dir => '/tmp/openstack/image', } } diff --git a/run_tests.sh b/run_tests.sh index 1f61999e3..9bc3cd9fb 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -29,6 +29,10 @@ export DISTRO=$(lsb_release -c -s) # by using the following line: # export TEMPEST_VERSION=${TEMPEST_VERSION:-'382a2065f3364a36c110bfcc6275a0f8f6894773'} export TEMPEST_VERSION=${TEMPEST_VERSION:-'origin/master'} +# For installing Tempest from RPM keep TEMPEST_FROM_SOURCE to false +export TEMPEST_FROM_SOURCE=${TEMPEST_FROM_SOURCE:-true} +# Cirros Image directory +export IMG_DIR=${IMG_DIR:-'/tmp/openstack/image'} # NOTE(pabelanger): Setup facter to know about AFS mirror. if [ -f /etc/nodepool/provider ]; then @@ -84,7 +88,8 @@ print_header 'Clone Tempest, plugins & pre-cache CirrOS' # can clone tempest outside of the gate. Also, tempest should be sandboxed into # the local directory but works needs to be added into puppet to properly find # the path. -if [ -e /usr/zuul-env/bin/zuul-cloner ] ; then + +if [ -e /usr/zuul-env/bin/zuul-cloner ] && [ "${TEMPEST_FROM_SOURCE}" = true ] ; then /usr/zuul-env/bin/zuul-cloner --workspace /tmp --cache-dir /opt/git \ git://git.openstack.org openstack/tempest if uses_debs; then @@ -99,7 +104,7 @@ if [ -e /usr/zuul-env/bin/zuul-cloner ] ; then git reset --hard $TEMPEST_VERSION popd fi -else +elif [ "${TEMPEST_FROM_SOURCE}" = true ]; then # remove existed checkout before clone $SUDO rm -rf /tmp/openstack/tempest $SUDO rm -rf /tmp/openstack/tempest-horizon @@ -116,11 +121,16 @@ fi # NOTE(pabelanger): We cache cirros images on our jenkins slaves, check if it # exists. + +if [[ ! -e $IMG_DIR ]]; then + mkdir -p $IMG_DIR +fi + if [ -f ~/cache/files/cirros-0.3.4-x86_64-disk.img ]; then # Create a symlink for tempest. - ln -s ~/cache/files/cirros-0.3.4-x86_64-disk.img /tmp/openstack/tempest + ln -s ~/cache/files/cirros-0.3.4-x86_64-disk.img $IMG_DIR else - wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img -P /tmp/openstack/tempest + wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img -P $IMG_DIR fi install_puppet @@ -148,6 +158,11 @@ if [ "${MANAGE_PUPPET_MODULES}" = true ]; then $SUDO ./install_modules.sh fi +# Added tempest specific values to common.yaml +if [ "${TEMPEST_FROM_SOURCE}" = false ]; then + echo "tempest::install_from_source: false" >> ${SCRIPT_DIR}/hiera/common.yaml +fi + # Run puppet and assert something changes. set +e if [ "${MANAGE_REPOS}" = true ]; then @@ -197,11 +212,19 @@ fi timestamp_puppet_log print_header 'Prepare Tempest' -# Tempest plugin tests require tempest-lib to be installed -$SUDO pip install tempest-lib +if [ "${TEMPEST_FROM_SOURCE}" = true ]; then + # Tempest plugin tests require tempest-lib to be installed + $SUDO pip install tempest-lib -# We need latest testrepository to run stackviz correctly -$SUDO pip install -U testrepository + # We need latest testrepository to run stackviz correctly + $SUDO pip install -U testrepository +else + # FIXME: Since tempest create tempest workspace which is owned by root user. + # We need to fix it in puppet-tempest, as a workaround we are changing the mode + # of tempest workspace and run tempest command using root. + $SUDO touch /tmp/openstack/tempest/test-whitelist.txt + $SUDO chown -R "$(id -u):$(id -g)" /tmp/openstack/tempest/test-whitelist.txt +fi # install from source now on ubuntu until packaged if uses_debs; then @@ -258,13 +281,21 @@ fi print_header 'Running Tempest' cd /tmp/openstack/tempest -virtualenv --system-site-packages run_tempest -run_tempest/bin/pip install -U . -run_tempest/bin/tempest run --whitelist_file=/tmp/openstack/tempest/test-whitelist.txt --concurrency=2 $EXCLUDES -RESULT=$? -set -e -testr last --subunit > /tmp/openstack/tempest/testrepository.subunit -run_tempest/bin/tempest list-plugins +if [ "${TEMPEST_FROM_SOURCE}" = true ]; then + virtualenv --system-site-packages run_tempest + run_tempest/bin/pip install -U . + run_tempest/bin/tempest run --whitelist_file=/tmp/openstack/tempest/test-whitelist.txt --concurrency=2 $EXCLUDES + RESULT=$? + set -e + testr last --subunit > /tmp/openstack/tempest/testrepository.subunit + run_tempest/bin/tempest list-plugins +else + /usr/bin/tempest run --whitelist_file=/tmp/openstack/tempest/test-whitelist.txt --concurrency=2 $EXCLUDES + RESULT=$? + set -e + /usr/bin/testr last --subunit > /tmp/openstack/tempest/testrepository.subunit + /usr/bin/tempest list-plugins +fi print_header 'SELinux Alerts (Tempest)' catch_selinux_alerts