summaryrefslogtreecommitdiff
path: root/scripts/testing/cleanup-tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/testing/cleanup-tests.sh')
-rwxr-xr-xscripts/testing/cleanup-tests.sh125
1 files changed, 63 insertions, 62 deletions
diff --git a/scripts/testing/cleanup-tests.sh b/scripts/testing/cleanup-tests.sh
index e4289a7..fd2f8de 100755
--- a/scripts/testing/cleanup-tests.sh
+++ b/scripts/testing/cleanup-tests.sh
@@ -36,85 +36,86 @@ while [[ $# -gt 0 ]]; do
esac
done
-# Initialize logging
+# Initialize logging and VM paths
LOGFILE="/tmp/cleanup-tests-$(date +'%Y%m%d-%H%M%S').log"
init_logging "$LOGFILE"
+init_vm_paths "$PROJECT_ROOT/vm-images"
section "Cleaning Up Test Artifacts"
-# Find all test VMs
-step "Finding test VMs"
-TEST_VMS=$(virsh --connect qemu:///system list --all | grep "archsetup-test-" | awk '{print $2}' || true)
+# Find and stop running QEMU processes
+step "Checking for running QEMU processes"
-if [ -z "$TEST_VMS" ]; then
- info "No test VMs found"
-else
- VM_COUNT=$(echo "$TEST_VMS" | wc -l)
- info "Found $VM_COUNT test VM(s)"
-
- if ! $FORCE; then
- echo ""
- echo "$TEST_VMS"
- echo ""
- read -p "Destroy these VMs? [y/N] " -n 1 -r
+if vm_is_running; then
+ info "Found running QEMU test VM (PID: $(cat "$PID_FILE"))"
+ if $FORCE; then
+ stop_qemu
+ else
+ read -p "Stop running VM? [y/N] " -n 1 -r
echo ""
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- info "Skipping VM cleanup"
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
+ stop_qemu
else
- for vm in $TEST_VMS; do
- step "Destroying VM: $vm"
- if vm_is_running "$vm"; then
- virsh --connect qemu:///system destroy "$vm" >> "$LOGFILE" 2>&1
- fi
- virsh --connect qemu:///system undefine "$vm" --nvram >> "$LOGFILE" 2>&1 || true
- success "VM destroyed: $vm"
- done
+ info "Skipping VM shutdown"
fi
+ fi
+else
+ info "No running VM found"
+fi
+
+# Check for orphaned QEMU processes
+QEMU_PIDS=$(pgrep -f "qemu-system.*archsetup-test" 2>/dev/null || true)
+if [ -n "$QEMU_PIDS" ]; then
+ info "Found orphaned QEMU processes: $QEMU_PIDS"
+ if $FORCE; then
+ echo "$QEMU_PIDS" | xargs kill -9 2>/dev/null || true
+ success "Orphaned processes killed"
else
- for vm in $TEST_VMS; do
- step "Destroying VM: $vm"
- if vm_is_running "$vm"; then
- virsh --connect qemu:///system destroy "$vm" >> "$LOGFILE" 2>&1
- fi
- virsh --connect qemu:///system undefine "$vm" --nvram >> "$LOGFILE" 2>&1 || true
- success "VM destroyed: $vm"
- done
+ read -p "Kill orphaned QEMU processes? [y/N] " -n 1 -r
+ echo ""
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
+ echo "$QEMU_PIDS" | xargs kill -9 2>/dev/null || true
+ success "Orphaned processes killed"
+ fi
fi
fi
-# Clean up test disk images
+# Clean up QEMU runtime files
+rm -f "$PID_FILE" "$MONITOR_SOCK"
+
+# Clean up debug overlay and test disk images
section "Cleaning Up Disk Images"
-step "Finding test disk images"
+step "Finding temporary disk images"
if [ -d "$PROJECT_ROOT/vm-images" ]; then
- TEST_DISKS=$(find "$PROJECT_ROOT/vm-images" -name "archsetup-test-*.qcow2" 2>/dev/null || true)
+ TEMP_DISKS=$(find "$PROJECT_ROOT/vm-images" -name "debug-overlay-*.qcow2" -o -name "archsetup-test-*.qcow2" 2>/dev/null || true)
- if [ -z "$TEST_DISKS" ]; then
- info "No test disk images found"
+ if [ -z "$TEMP_DISKS" ]; then
+ info "No temporary disk images found"
else
- DISK_COUNT=$(echo "$TEST_DISKS" | wc -l)
- DISK_SIZE=$(du -ch $TEST_DISKS | tail -1 | awk '{print $1}')
- info "Found $DISK_COUNT test disk image(s) totaling $DISK_SIZE"
+ DISK_COUNT=$(echo "$TEMP_DISKS" | wc -l)
+ DISK_SIZE=$(du -ch $TEMP_DISKS 2>/dev/null | tail -1 | awk '{print $1}')
+ info "Found $DISK_COUNT temporary disk image(s) totaling $DISK_SIZE"
- if ! $FORCE; then
+ if $FORCE; then
+ echo "$TEMP_DISKS" | while read disk; do
+ rm -f "$disk"
+ done
+ success "Temporary disk images deleted"
+ else
echo ""
- echo "$TEST_DISKS"
+ echo "$TEMP_DISKS"
echo ""
read -p "Delete these disk images? [y/N] " -n 1 -r
echo ""
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- info "Skipping disk cleanup"
- else
- echo "$TEST_DISKS" | while read disk; do
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
+ echo "$TEMP_DISKS" | while read disk; do
rm -f "$disk"
done
- success "Test disk images deleted"
+ success "Temporary disk images deleted"
+ else
+ info "Skipping disk cleanup"
fi
- else
- echo "$TEST_DISKS" | while read disk; do
- rm -f "$disk"
- done
- success "Test disk images deleted"
fi
fi
fi
@@ -141,26 +142,26 @@ else
DELETE_COUNT=$(echo "$TO_DELETE" | wc -l)
info "Keeping last $KEEP_LAST, deleting $DELETE_COUNT old result(s)"
- if ! $FORCE; then
+ if $FORCE; then
+ echo "$TO_DELETE" | while read dir; do
+ rm -rf "$dir"
+ done
+ success "Old test results deleted"
+ else
echo ""
echo "Will delete:"
echo "$TO_DELETE"
echo ""
read -p "Delete these test results? [y/N] " -n 1 -r
echo ""
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- info "Skipping results cleanup"
- else
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "$TO_DELETE" | while read dir; do
rm -rf "$dir"
done
success "Old test results deleted"
+ else
+ info "Skipping results cleanup"
fi
- else
- echo "$TO_DELETE" | while read dir; do
- rm -rf "$dir"
- done
- success "Old test results deleted"
fi
fi
fi