test/jdk/java/nio/channels/Selector/SelectWithConsumer.java
changeset 51745 90c1dcdebc64
parent 51211 6ed2290ba410
child 58987 3760767a7231
equal deleted inserted replaced
51744:1cb25b6589e9 51745:90c1dcdebc64
    20  * or visit www.oracle.com if you need additional information or have any
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 
    23 
    24 /* @test
    24 /* @test
    25  * @bug 8199433
    25  * @bug 8199433 8208780
    26  * @run testng SelectWithConsumer
    26  * @run testng SelectWithConsumer
    27  * @summary Unit test for Selector select(Consumer), select(Consumer,long) and
    27  * @summary Unit test for Selector select(Consumer), select(Consumer,long) and
    28  *          selectNow(Consumer)
    28  *          selectNow(Consumer)
    29  */
    29  */
    30 
    30 
    60         var callerThread = Thread.currentThread();
    60         var callerThread = Thread.currentThread();
    61         var sel = key.selector();
    61         var sel = key.selector();
    62         var interestOps = key.interestOps();
    62         var interestOps = key.interestOps();
    63         var notifiedOps = new AtomicInteger();
    63         var notifiedOps = new AtomicInteger();
    64 
    64 
       
    65         if (expectedOps == 0) {
       
    66             // ensure select(Consumer) does not block indefinitely
       
    67             sel.wakeup();
       
    68         } else {
       
    69             // ensure that the channel is ready for all expected operations
       
    70             sel.select();
       
    71             while ((key.readyOps() & interestOps) != expectedOps) {
       
    72                 Thread.sleep(100);
       
    73                 sel.select();
       
    74             }
       
    75         }
       
    76 
    65         // select(Consumer)
    77         // select(Consumer)
    66         if (expectedOps == 0)
       
    67             sel.wakeup(); // ensure select does not block
       
    68         notifiedOps.set(0);
    78         notifiedOps.set(0);
    69         int n = sel.select(k -> {
    79         int n = sel.select(k -> {
    70             assertTrue(Thread.currentThread() == callerThread);
    80             assertTrue(Thread.currentThread() == callerThread);
    71             assertTrue(k == key);
    81             assertTrue(k == key);
    72             int readyOps = key.readyOps();
    82             int readyOps = key.readyOps();