You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
65 lines
1.9 KiB
#!/bin/bash |
|
|
|
# Suite-level setup and teardown for kvm-install-vm tests |
|
# This runs once before all tests and once after all tests complete |
|
|
|
# Load shared test configuration |
|
VMPREFIX=batstestvm |
|
TIMEOUT=60 |
|
|
|
# VM directory configuration (from vmdir.bash) |
|
VMDIR=${HOME}/virt/vms |
|
|
|
# Load configuration if available |
|
if [[ -f .kivrc ]]; then |
|
source .kivrc |
|
fi |
|
|
|
function cleanup_all_test_vms { |
|
echo "Cleaning up all test VMs..." >&2 |
|
|
|
# Get all domains that start with our test prefix, filter empty lines |
|
local test_vms |
|
test_vms=$(virsh list --all --name 2>/dev/null | grep "^${VMPREFIX}" 2>/dev/null | grep -v "^$" || true) |
|
|
|
if [[ -n "$test_vms" ]]; then |
|
while IFS= read -r vm; do |
|
if [[ -n "$vm" && "$vm" =~ ^${VMPREFIX} ]]; then |
|
echo "Removing test VM: $vm" >&2 |
|
# Use virsh directly to avoid potential DHCP release hangs in cleanup |
|
virsh destroy "$vm" >/dev/null 2>&1 || true |
|
virsh undefine "$vm" --managed-save --snapshots-metadata --nvram >/dev/null 2>&1 || true |
|
# Remove VM files |
|
rm -rf "$HOME/virt/vms/$vm" 2>/dev/null || true |
|
rm -rf "$HOME/virt/images/$vm" 2>/dev/null || true |
|
fi |
|
done <<< "$test_vms" |
|
fi |
|
|
|
# Clean up test directories and files |
|
rm -rf "$HOME/virt/.tests" 2>/dev/null || true |
|
rm -f "$HOME/virt/images/Rocky-8-GenericCloud-Base.latest.x86_64.qcow2" 2>/dev/null || true |
|
} |
|
|
|
setup_suite() { |
|
cleanup_all_test_vms |
|
|
|
# Generate unique VM name if not set |
|
if [ -z "${VMNAME}" ]; then |
|
TIMESTAMP=$(date '+%Y%m%d%H%M%S') |
|
VMNAME="batstestvm-${TIMESTAMP}" |
|
fi |
|
|
|
# Export variables for all test files |
|
export VMPREFIX |
|
export TIMEOUT |
|
export VMDIR |
|
export VMNAME |
|
|
|
# Create fresh test directory |
|
mkdir -p "$HOME/virt/.tests" |
|
} |
|
|
|
teardown_suite() { |
|
cleanup_all_test_vms |
|
}
|
|
|