Files
vagrant-libvirt/tests/runtests.bats
Michael Ablassmeier 97ea81d2be Use Github actions for integration tests against Vagrant-libvirt (#1091)
Allows to spin up vagrant boxes via vagrant-libvirt in CI replacing the 
need for vagrant-libvirt-qa to be executed separately before/after 
releases.

* Adds a github integration tests workflow
* Installs the needed toolset in separate groups for easier tracking
* Add Vagrantfile definitions for the first simple test cases in tests/ 
  using tinycore linux, using the installed master version these boxes 
  are spun up and destroyed via a test matrix.

Should help reduce effort for new maintainers to help with #1069
2021-03-21 12:06:52 +00:00

119 lines
2.7 KiB
Bash

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() {
[ -n "${TEMPDIR:-}" ] && [ -d "${TEMPDIR:-}" ] && rm -rf ${TEMPDIR}
}
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 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 "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
}