On Tue, 27 Sep 2022 11:50:16 GMT, Jaikiran Pai <j...@openjdk.org> wrote:

>> BlockingChannelOps.java and BlockingSocketOps.java test virtual threads 
>> doing blocking I/O on channels and java.net sockets.
>> 
>> BlockingChannelOps has 32 tests at this time and takes nearly 120s to run 
>> due to several tests that sleep to improve the chances that threads are 
>> blocked. These sleeps can be replaced with a poll of the thread state so the 
>> test runs in 3-4s. BlockingSocketOps has be changed to do the same time.
>> 
>> In passing, I updated the tests in BlockingSocketOps that bound a 
>> ServerSocket to the wildcard address so they bind to the loopback address 
>> instead. This helps reduce potential interference in CI environments. I also 
>> put a workaround into BlockingChannelOps for macOS where the kernel appears 
>> to increase the amount of bytes that can be buffered in the socket sender 
>> buffer, it's otherwise too hard to test that socket writes block on that 
>> platform.
>
> test/jdk/java/nio/channels/vthread/BlockingChannelOps.java line 206:
> 
>> 204:                         assertTrue(n > 0);
>> 205:                         bb.clear();
>> 206:                     }
> 
> Hello Alan, since `AsynchronousCloseException` is expected here, should we 
> add a `fail` after this loop if we don't receive that exception

It's an infinite loop as write may need to be called many times before it 
blocks. So you can't put a `fail` after the loop as it will never be executed. 
If another exception is thrown then the test will fail.

-------------

PR: https://git.openjdk.org/jdk/pull/10427

Reply via email to