mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Create a new minimal 'debianbase' definition which is a veewee template that's a lot like the systemvmtemplate, but does not have any systemvm-ness in it. Use it to create a new test.sh which tests a few common invocations of build.sh work as desired. This is mainly useful for debugging whether the appliance build process is working / consistent; in order to test a systemvm itself it should really first be merged with systemvm.iso.
181 lines
4.2 KiB
Bash
181 lines
4.2 KiB
Bash
#!/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
|