Testing 9.0.0.M26 release candidate on a fast PC, on Windows 10 with Tomcat Native dll in bin/native/. I see the following failure in TEST-org.apache.tomcat.jni.TestSocketServer.APR.txt (The same result for NIO, NIO2 connectors as well, as this is a jni test - regardless of connector). [[[ Testcase: testBlockingReadFromClientWithTimeout took 1,015 sec FAILED Socket.timeoutSet failed (<1s) [985435824] junit.framework.AssertionFailedError: Socket.timeoutSet failed (<1s) [985435824] at org.apache.tomcat.jni.TestSocketServer.testBlockingReadFromClientWithTimeout(TestSocketServer.java:99) ]]] The value [985435824] is marginally smaller than expected 1000000000. I wonder whether timeout is calculated from some earlier moment (that is - move "long start = System.nanoTime();" line earlier), or some arithmetic error is allowed here (introduce an error margin). All other tests completed successfully.
Fixed in trunk for 9.0.0.M27 onwards. It appears the the root cause was that the resolution of System.nanoTime() is usually much greater than 1ns, particularly on Windows.