windows ci speedup#249
Merged
Merged
Conversation
aidankeefe2022
force-pushed
the
windows-ci-speedup
branch
from
June 10, 2026 20:09
7a09931 to
fffebb0
Compare
wolfSSL-Fenrir-bot
left a comment
There was a problem hiding this comment.
Fenrir Automated Review — PR #249
No scan targets match the changed files in this PR. Review skipped.
aidankeefe2022
force-pushed
the
windows-ci-speedup
branch
from
June 10, 2026 20:10
fffebb0 to
6d53256
Compare
aidankeefe2022
force-pushed
the
windows-ci-speedup
branch
from
June 10, 2026 20:55
6d53256 to
33674af
Compare
aidankeefe2022
force-pushed
the
windows-ci-speedup
branch
from
June 10, 2026 21:12
33674af to
a40e401
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
This PR speeds up Windows CI for wolfCLU by avoiding physical writes for multi‑GB large-file tests (via sparse files on Windows), running Python test modules in parallel, and reducing port-collision issues by selecting ports at runtime.
Changes:
- Add Windows sparse-file helpers and use them for large-file hash/dgst tests.
- Replace the serial Windows Python test runner with a parallel per-file runner.
- Switch server/OCSP tests away from hard-coded ports to OS-assigned free ports.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/wolfclu_test.py | Adds find_free_port() plus Windows sparse-file helpers (make_sparse, truncate_sparse). |
| tests/server/server-test.py | Uses find_free_port() for s_server/s_client instead of a hard-coded port. |
| tests/ocsp/ocsp-test.py | Reuses shared find_free_port() helper (removes local implementation). |
| tests/hash/hash-test.py | Uses truncate_sparse() when creating large test files. |
| tests/dgst/dgst-test.py | Uses truncate_sparse() when creating large test files. |
| tests/run_tests.py | Removes the old serial Windows test runner. |
| tests/run_tests_parallel.py | Adds a parallel per-test-file runner (spawns each *-test.py in its own process). |
| .github/workflows/windows-check.yml | Uses the new parallel test runner and increases CI timeout. |
Comments suppressed due to low confidence (1)
tests/server/server-test.py:41
- When s_server fails to bind (e.g., port race due to find_free_port() under parallel runs), the current readiness loop will still wait the full timeout and then report a generic "did not become ready". Checking server.poll() lets the test fail fast with a more actionable error (and avoids hiding immediate bind failures).
[WOLFSSL_BIN, "s_server", "-port", str(port),
"-key", os.path.join(CERTS_DIR, "server-key.pem"),
"-cert", os.path.join(CERTS_DIR, "server-cert.pem"),
"-noVerify", "-readyFile", readyfile],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
written and read from disk but "mocked"
aidankeefe2022
force-pushed
the
windows-ci-speedup
branch
from
June 10, 2026 21:21
a40e401 to
e4801ac
Compare
cconlon
approved these changes
Jun 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The largest gain was from causing the large files that are created for large file tests to be sparse. This means they are not written to disk and read from disk but effectively mocked. Posix does this automatically it took some windows Syscalls to get the same behavior on windows. We also now run the files in parallel thanks to not actually writing the files to disk this is no problem. we now have test run times down from ~5 mins to ~1:30 mins. There is also a change to make sure there are no issues with hard coded ports so we have out tests choose free ports at run time.