#!/bin/bash -xl # note: the -l is needed here for bash to always make a login shell and load rvm if it hasn't been loaded # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. # test script for build.sh which tries a variety of options/configs to make different vms set -e DEBUG="${DEBUG:-}" TRACE="${TRACE:-0}" ### ### Configuration ### if [[ "${DEBUG}" == "1" ]]; then set -x fi # which test to run test_to_run=${1:-} # build.sh settings for running the tests appliance=debianbase version=`date "+%Y%m%d%H%M%S"` branch=`git status | grep '# On branch' | awk '{print $4}'` BUILD_NUMBER="${BUILD_NUMBER:-}" ssh_key= # where we are running the tests from CURR_DIR=${PWD} # where this script is SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # ensure we are running in isolation if [ ${CURR_DIR} == ${SCRIPT_DIR} ]; then mkdir -p ../appliance-work cd ../appliance-work CURR_DIR=${PWD} fi ### ### testing 'framework' ### function test_result() { log INFO "$@" add_on_exit log INFO "$@" } function run_test() { set +e cleanup fixture log INFO running test: "$@" eval $@ result=$? if ${result}; then test_result "$@" FAIL else test_result "$@" OK fi cleanup set -e } function cleanup() { ( cd ${CURR_DIR}; rm -rf iso definitions Gemfile shar_cloud_scripts convert_ovf_vbox_to_esx.xslt .rvmrc; ) } function fixture() { ( cd ${CURR_DIR}; mkdir -p ${SCRIPT_DIR}/iso; ln -s ${SCRIPT_DIR}/iso; mkdir definitions; ln -s ${SCRIPT_DIR}/definitions/${appliance} definitions/${appliance}; ln -s ${SCRIPT_DIR}/Gemfile; ln -s ${SCRIPT_DIR}/shar_cloud_scripts.sh; ln -s ${SCRIPT_DIR}/convert_ovf_vbox_to_esx.xslt; ln -s ${SCRIPT_DIR}/.rvmrc; ) } ### ### Test definitions ### function do_test_vm() { prepare create_definition veewee_build retry 10 check_appliance_shutdown retry 10 remove_shares veewee_destroy } function do_test_export() { prepare create_definition veewee_build retry 10 check_appliance_shutdown retry 10 remove_shares # Get appliance uuids local vm_info=`vboxmanage showvminfo "${appliance_build_name}"` local machine_uuid=`echo "${vm_info}" | grep UUID | head -1 | awk '{print $2}'` local hdd_uuid=`echo "${vm_info}" | grep vdi | head -1 | awk '{print $8}' | cut -d ')' -f 1` local hdd_path=`vboxmanage list hdds | grep "${appliance_build_name}\/" | grep vdi | \ cut -c 14- | sed ${sed_regex_option} 's/^ *//'` compact_hdd "${hdd_uuid}" xen_server_export "${hdd_path}" kvm_export "${hdd_path}" vmware_export "${machine_uuid}" "${hdd_uuid}" hyperv_export "${hdd_uuid}" veewee_destroy } function test_basic_veewee_invocation() { appliance=debianbase appliance_build_name=${appliance}${branch_tag}${version_tag} do_test_vm } function test_export() { appliance=debianbase appliance_build_name=${appliance}${branch_tag}${version_tag} do_test_export } function test_systemvm() { appliance=systemvmtemplate appliance_build_name=${appliance}${branch_tag}${version_tag} do_test_vm } function test_systemvm64() { appliance=systemvm64template appliance_build_name=${appliance}${branch_tag}${version_tag} do_test_vm } function test_suite() { if [ "${test_to_run}" == "" ]; then # list of all tests goes here run_test test_basic_veewee_invocation run_test test_systemvm run_test test_systemvm64 run_test test_export else run_test "${test_to_run}" fi } ### ### Main invocation ### source ${SCRIPT_DIR}/build.sh return 2>/dev/null || test_suite