Preflight Stress Testing

tools\Run-PreflightStress.ps1 compiles the HotPDFPreflight console tool, runs it over a large PDF directory one file at a time, writes per-file reports and logs, and records a JSON / Markdown performance baseline. Each file is isolated behind a timeout so a single expensive PDF cannot block the whole run. The default timeout is 120 seconds to allow large implementation-limit files to finish while still isolating pathological inputs.

Default run

powershell -NoProfile -ExecutionPolicy Bypass -File tools\Run-PreflightStress.ps1

The default sample root is D:\PDFdoc\PDF-Samples. Run output is written under Tests\PreflightStress\runs\, which is ignored by Git because the reports and logs are machine-specific.

Custom sample root

powershell -NoProfile -ExecutionPolicy Bypass -File tools\Run-PreflightStress.ps1 `
  -SampleRoot D:\PDFdoc\PDF-Samples `
  -OutputRoot D:\Temp\HotPDFPreflightStress `
  -MaxFiles 1000 `
  -MaxBytes 5242880 `
  -MaxSecondsPerFile 120

Metrics

The baseline captures total input file count, selected file count, byte totals, largest and smallest selected input size, processed / passed / failed / timed-out counts, elapsed seconds, files per second, MiB per second, output format, selected preset, per-file CSV path, report root, and log root.

Interpreting failures

A failed or timed-out row means that one PDF could not be processed within the current run limits. The script still writes the baseline and exits successfully so regression jobs can keep the evidence. Treat a sudden increase in failures, timeout rows, or a sharp throughput drop as the signal to inspect the per-file log and report directory.

Related Topics