Files
vagrant-libvirt/tests/runtests.bats

218 lines
5.4 KiB
Plaintext
Raw Normal View History

SCRIPT_DIR="$( cd "$BATS_TEST_DIRNAME" &> /dev/null && pwd )"
export PATH=$(dirname ${SCRIPT_DIR})/bin:${PATH}
VAGRANT_CMD="vagrant"
VAGRANT_OPT="--provider=libvirt"
TEMPDIR=
setup_file() {
# set VAGRANT_HOME to something else to reuse for tests to avoid clashes with
# user installed plugins when running tests locally.
if [ -z "${VAGRANT_HOME:-}" ]
then
TEMPDIR=$(mktemp -d 2>/dev/null)
export VAGRANT_HOME=${TEMPDIR}/.vagrant.d
echo "# Using ${VAGRANT_HOME} for VAGRANT_HOME" >&3
fi
}
teardown_file() {
if [ -n "${TEMPDIR:-}" ] && [ -d "${TEMPDIR:-}" ]
then
rm -rf ${TEMPDIR:-}
fi
}
cleanup() {
${VAGRANT_CMD} destroy -f
if [ $? == "0" ]; then
return 0
else
return 1
fi
}
@test "destroy simple vm" {
export VAGRANT_LOG=debug
export VAGRANT_CWD=tests/simple
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
cleanup
}
@test "simple vm provision via shell" {
export VAGRANT_CWD=tests/simple_provision_shell
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "status = ${status}"
echo "${output}"
[ "$status" -eq 0 ]
[ $(expr "$output" : ".*Hello.*") -ne 0 ]
echo "${output}"
cleanup
}
@test "bring up with custom default prefix" {
export VAGRANT_CWD=tests/default_prefix
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
[ "$status" -eq 0 ]
echo "${output}"
echo "status = ${status}"
[ $(expr "$output" : ".*changed_default_prefixdefault.*") -ne 0 ]
echo "${output}"
cleanup
}
@test "bring up with second disk" {
export VAGRANT_CWD=tests/second_disk
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
echo "${output}"
[ $(expr "$output" : ".*second_disk_default-vdb.*") -ne 0 ]
cleanup
}
@test "bring up with two disks" {
export VAGRANT_CWD=tests/two_disks
cleanup
tools/create_box_with_two_disks.sh ${VAGRANT_HOME} ${VAGRANT_CMD}
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
echo "${output}"
[ $(expr "$output" : ".*Image.*2G") -ne 0 ]
[ $(expr "$output" : ".*Image.*10G") -ne 0 ]
cleanup
}
@test "bring up with adjusted memory settings" {
export VAGRANT_CWD=tests/memory
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
echo "${output}"
[ $(expr "$output" : ".*Memory.*1000M.*") -ne 0 ]
cleanup
}
@test "bring up with adjusted cpu settings" {
export VAGRANT_CWD=tests/cpus
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
echo "${output}"
[ $(expr "$output" : ".*Cpus.*2.*") -ne 0 ]
cleanup
}
@test "bring up and use qemu agent for connectivity" {
export VAGRANT_CWD=tests/qemu_agent
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
echo "${output}"
cleanup
}
@test "ip is reachable with private network" {
export VAGRANT_CWD=tests/private_network
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
echo "${output}"
[ $(expr "$output" : ".*Cpus.*2.*") -ne 0 ]
run fping 10.20.30.40
[ "$status" -eq 0 ]
echo "${output}"
[ $(expr "$output" : ".*alive.*") -ne 0 ]
cleanup
}
@test "package simple domain" {
export VAGRANT_CWD=tests/package_simple
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
rm -f package.box
run ${VAGRANT_CMD} package
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
run ${VAGRANT_CMD} destroy -f
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
run ${VAGRANT_CMD} box add --force package.box --name test-package-simple-domain
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
VAGRANT_VAGRANTFILE=Vagrantfile.testbox run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
run ${VAGRANT_CMD} box remove --force test-package-simple-domain
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
rm -f package.box
cleanup
}
@test "package complex example" {
export VAGRANT_CWD=tests/package_complex_example
# this will allow the host keys to be removed, and part of the sysprep script
# adds a step to trigger the regeneration.
export VAGRANT_LIBVIRT_VIRT_SYSPREP_OPERATIONS='defaults,-ssh-userdir,customize'
export VAGRANT_LIBVIRT_VIRT_SYSPREP_OPTIONS="--run $(pwd)/tests/package_complex_example/scripts/sysprep.sh"
cleanup
run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
rm -f package.box
run ${VAGRANT_CMD} package
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
run ${VAGRANT_CMD} destroy -f
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
run ${VAGRANT_CMD} box add --force package.box --name test-package-complex-example
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
VAGRANT_VAGRANTFILE=Vagrantfile.testbox run ${VAGRANT_CMD} up ${VAGRANT_OPT}
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
run ${VAGRANT_CMD} box remove --force test-package-complex-example
echo "${output}"
echo "status = ${status}"
[ "$status" -eq 0 ]
rm -f package.box
cleanup
}