manila/contrib/ci/common.sh
Tom Barron 7fded233f3 Update to tempest 12.2.0
Tempest 12.2.0 was recently released and manila tempest plugin runs
just fine with it.

Update tempest in our CI to use tempest at the commit corresponding to
this tag.

Change-Id: Ia00670a5cf0b52a41fa0d3cd9a82cd81f7802155
2016-09-06 22:27:03 +00:00

136 lines
4.3 KiB
Bash
Executable File

# Environment variables
export MANILA_TEMPEST_COMMIT="c592707" # 2 Sept, 2016 - tempest 12.2.0
# ----------------------------------------------
# Functions
# Import devstack functions
source $BASE/new/devstack/functions
function manila_check_service_vm_availability {
# First argument is expected to be IP address of a service VM
wait_step=10
wait_timeout=300
available='false'
while (( wait_timeout > 0 )) ; do
if ping -w 1 $1; then
available='true'
break
fi
((wait_timeout-=$wait_step))
sleep $wait_step
done
if [[ $available == 'true' ]]; then
echo "SUCCESS! Service VM $1 is available."
else
echo "FAILURE! Service VM $1 is not available."
exit 1
fi
}
function manila_wait_for_generic_driver_init {
# First argument is expected to be file path to Manila config
MANILA_CONF=$1
DRIVER_GROUPS=$(iniget $MANILA_CONF DEFAULT enabled_share_backends)
for driver_group in ${DRIVER_GROUPS//,/ }; do
SHARE_DRIVER=$(iniget $MANILA_CONF $driver_group share_driver)
GENERIC_DRIVER='manila.share.drivers.generic.GenericShareDriver'
DHSS=$(iniget $MANILA_CONF $driver_group driver_handles_share_servers)
if [[ $SHARE_DRIVER == $GENERIC_DRIVER && $(trueorfalse False DHSS) == False ]]; then
# Wait for availability
source /opt/stack/new/devstack/openrc admin demo
vm_id=$(iniget $MANILA_CONF $driver_group service_instance_name_or_id)
vm_ips=$(nova show $vm_id | grep "private network")
attempts=0
for vm_ip in ${vm_ips//,/ }; do
# Get IPv4 address
if [[ $vm_ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
# Check availability
((attempts++))
manila_check_service_vm_availability $vm_ip
break
fi
done
if [[ (( attempts < 1 )) ]]; then
echo "No IPv4 addresses found among private IPs of '$vm_id' for '$GENERIC_DRIVER'. "\
"Reported IPs: '$vm_ips'."
exit 1
fi
fi
done
}
function manila_wait_for_drivers_init {
# First argument is expected to be file path to Manila config
manila_wait_for_generic_driver_init $1
# Sleep to make manila-share service notify manila-scheduler about
# its capabilities on time.
sleep 10
}
function archive_file {
# First argument is expected to be filename
local filename=$1
sudo gzip -9 $filename
sudo chown jenkins:jenkins $filename.gz
sudo chmod a+r $filename.gz
}
function save_tempest_results {
# First argument is expected to be number or tempest run
local src_dirname
local dst_dirname
src_dirname="$BASE/new/tempest"
dst_dirname="$BASE/logs/tempest_$1"
# 1. Create destination directory
sudo mkdir $dst_dirname
sudo chown jenkins:jenkins $dst_dirname
sudo chmod 755 $dst_dirname
# 2. Save tempest configuration file
sudo cp $src_dirname/etc/tempest.conf $dst_dirname/tempest_conf.txt
# 3. Save tempest log file
cp $src_dirname/tempest.log $src_dirname/tempest.txt
echo '' > $src_dirname/tempest.log
archive_file $src_dirname/tempest.txt
sudo mv $src_dirname/tempest.txt.gz $dst_dirname/tempest.txt.gz
# 4. Save tempest testr results
# Check for an interrupted run first
if [ -f $src_dirname/.testrepository/tmp* ]; then
sudo cat $src_dirname/.testrepository/tmp* >> $src_dirname/tempest.subunit
elif [ -f $src_dirname/.testrepository/0 ]; then
pushd $src_dirname
sudo testr last --subunit > $src_dirname/tempest.subunit
popd
fi
if [ -f $src_dirname/tempest.subunit ]; then
sudo /usr/os-testr-env/bin/subunit2html \
$src_dirname/tempest.subunit $src_dirname/testr_results.html
archive_file $src_dirname/tempest.subunit
sudo mv $src_dirname/tempest.subunit.gz $dst_dirname/tempest.subunit.gz
archive_file $src_dirname/testr_results.html
sudo mv $src_dirname/testr_results.html.gz $dst_dirname/testr_results.html.gz
# 5. Cleanup
sudo rm -rf $src_dirname/.testrepository
else
echo "No 'testr' results available for saving. File '$src_dirname/tempest.subunit' is absent."
fi
}