diff options
Diffstat (limited to 'scripts/testing/run-test.sh')
| -rwxr-xr-x | scripts/testing/run-test.sh | 82 |
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" |
