aboutsummaryrefslogtreecommitdiff
path: root/scripts/testing/run-test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/testing/run-test.sh')
-rwxr-xr-xscripts/testing/run-test.sh82
1 files changed, 24 insertions, 58 deletions
diff --git a/scripts/testing/run-test.sh b/scripts/testing/run-test.sh
index a5c3691..0f57678 100755
--- a/scripts/testing/run-test.sh
+++ b/scripts/testing/run-test.sh
@@ -25,6 +25,7 @@ source "$SCRIPT_DIR/lib/vm-utils.sh"
source "$SCRIPT_DIR/lib/network-diagnostics.sh"
source "$SCRIPT_DIR/lib/validation.sh"
source "$SCRIPT_DIR/lib/testinfra.sh"
+source "$SCRIPT_DIR/lib/run-common.sh"
# Parse arguments
KEEP_VM=false
@@ -248,7 +249,11 @@ sshpass -p "$ROOT_PASSWORD" ssh -T -n $SSH_OPTS \
# Verify the process started
sleep 3
-if vm_exec "$ROOT_PASSWORD" "pgrep -f 'bash archsetup'" >> "$LOGFILE" 2>/dev/null; then
+vm_transport() {
+ vm_exec "$ROOT_PASSWORD" "$@"
+}
+
+if archsetup_process_running vm_transport; then
success "ArchSetup started in background on VM"
else
fatal "ArchSetup process not found after launch"
@@ -256,29 +261,14 @@ fi
# Poll for completion
step "Monitoring archsetup progress (polling every 30 seconds)..."
-POLL_COUNT=0
MAX_POLLS=300 # 150 minutes max (300 * 30 seconds); a full install with heavy
# AUR builds (e.g. vagrant) can exceed 90 min on a slow mirror
-while [ $POLL_COUNT -lt $MAX_POLLS ]; do
- # Check if archsetup process is still running
- if vm_exec "$ROOT_PASSWORD" "ps aux | grep '[b]ash archsetup' > /dev/null" 2>/dev/null; then
- # Still running, wait and continue
- sleep 30
- POLL_COUNT=$((POLL_COUNT + 1))
-
- # Show progress every 5 minutes
- if [ $((POLL_COUNT % 10)) -eq 0 ]; then
- ELAPSED_MINS=$((POLL_COUNT / 2))
- info "Still running... ($ELAPSED_MINS minutes elapsed)"
- fi
- else
- # Process finished
- break
- fi
-done
+vm_progress() {
+ info "Still running... ($(("$1" / 2)) minutes elapsed)"
+}
-if [ $POLL_COUNT -ge $MAX_POLLS ]; then
+if ! wait_for_archsetup vm_transport "$MAX_POLLS" 30 10 vm_progress; then
error "ArchSetup timed out after 150 minutes"
ARCHSETUP_COMPLETED=timeout
else
@@ -357,44 +347,20 @@ fi
section "Generating Test Report"
REPORT_FILE="$TEST_RESULTS_DIR/test-report.txt"
-cat > "$REPORT_FILE" << EOFREPORT
-========================================
-ArchSetup Test Report
-========================================
-
-Test ID: $TIMESTAMP
-Date: $(date +'%Y-%m-%d %H:%M:%S')
-Test Method: QEMU snapshot-based
-
-VM Configuration:
- Disk: $DISK_PATH
- Snapshot: $SNAPSHOT_NAME
- SSH: localhost:$SSH_PORT
-
-Results:
- ArchSetup Completed: $ARCHSETUP_COMPLETED (completion marker, not the installer's exit code)
- Validation: $(if $TEST_PASSED; then echo "PASSED"; else echo "FAILED"; fi)
-
-Validation Summary:
- Passed: $VALIDATION_PASSED
- Failed: $VALIDATION_FAILED
- Warnings: $VALIDATION_WARNINGS
-
-Issue Attribution:
- ArchSetup Issues: ${#ARCHSETUP_ISSUES[@]}
- Base Install Issues: ${#BASE_INSTALL_ISSUES[@]}
- Unknown Issues: ${#UNKNOWN_ISSUES[@]}
-
-Artifacts:
- Log file: $LOGFILE
- Report: $REPORT_FILE
- Results: $TEST_RESULTS_DIR/
- Issue Report: $TEST_RESULTS_DIR/issue-report.txt
- Pre-install logs: $TEST_RESULTS_DIR/pre-install/
- Post-install logs: $TEST_RESULTS_DIR/post-install/
- Analysis: $TEST_RESULTS_DIR/analysis/
-
-EOFREPORT
+printf -v RUN_REPORT_CONTEXT \
+ 'VM Configuration:\n Disk: %s\n Snapshot: %s\n SSH: localhost:%s' \
+ "$DISK_PATH" "$SNAPSHOT_NAME" "$SSH_PORT"
+printf -v RUN_REPORT_ARTIFACTS \
+ 'Issue Attribution:\n ArchSetup Issues: %s\n Base Install Issues: %s\n Unknown Issues: %s\n\nArtifacts:\n Log file: %s\n Report: %s\n Results: %s/\n Issue Report: %s/issue-report.txt\n Pre-install logs: %s/pre-install/\n Post-install logs: %s/post-install/\n Analysis: %s/analysis/' \
+ "${#ARCHSETUP_ISSUES[@]}" "${#BASE_INSTALL_ISSUES[@]}" \
+ "${#UNKNOWN_ISSUES[@]}" "$LOGFILE" "$REPORT_FILE" "$TEST_RESULTS_DIR" \
+ "$TEST_RESULTS_DIR" "$TEST_RESULTS_DIR" "$TEST_RESULTS_DIR" \
+ "$TEST_RESULTS_DIR"
+write_archsetup_test_report \
+ "$REPORT_FILE" "ArchSetup Test Report" "$TIMESTAMP" \
+ "QEMU snapshot-based" "$RUN_REPORT_CONTEXT" "$ARCHSETUP_COMPLETED" \
+ "$TEST_PASSED" "$VALIDATION_PASSED" "$VALIDATION_FAILED" \
+ "$VALIDATION_WARNINGS" "$RUN_REPORT_ARTIFACTS"
info "Test report saved: $REPORT_FILE"