A deep investigation into why Nette Tester's parallel test execution performs dramatically worse on Windows (21.6 seconds) compared to Linux (3 seconds). The root cause is Windows' lack of non-blocking I/O support for anonymous pipes, causing the test runner to freeze when reading from empty pipes. Multiple solutions were attempted—stream_set_blocking(), stream_select(), file-based output, and delayed reading—but each introduced new problems like deadlocks when test output exceeded the 4KB pipe buffer. The only viable solution would require rewriting the entire system to use TCP sockets instead of pipes.

8m read timeFrom blog.nette.org
Post cover image
Table of contents
Chapter 1: The Perfect CrimeChapter 2: The SuspectsChapter 3: The BlockadeChapter 4: FilesChapter 5: The GambleChapter 6: Last AttemptsChapter 7: The TruthEpilogue: The Bitter End

Sort: