< prev index next >

test/jdk/java/nio/channels/Selector/SelectWithConsumer.java

Print this page




 531                 assertTrue(Thread.holdsLock(sel.selectedKeys()));
 532             });
 533         } finally {
 534             closePipe(p);
 535         }
 536     }
 537 
 538     /**
 539      * Test that selection operations remove cancelled keys from the selector's
 540      * key and selected-key sets.
 541      */
 542     public void testCancel() throws Exception {
 543         Pipe p = Pipe.open();
 544         try (Selector sel = Selector.open()) {
 545             Pipe.SinkChannel sink = p.sink();
 546             Pipe.SourceChannel source = p.source();
 547 
 548             // write to sink to ensure that the source is readable
 549             sink.write(messageBuffer());
 550 
 551             sink.configureBlocking(false);
 552             source.configureBlocking(false);
 553             SelectionKey key1 = sink.register(sel, SelectionKey.OP_WRITE);
 554             SelectionKey key2 = source.register(sel, SelectionKey.OP_READ);




 555 


 556             sel.selectNow();

 557             assertTrue(sel.keys().contains(key1));
 558             assertTrue(sel.keys().contains(key2));
 559             assertTrue(sel.selectedKeys().contains(key1));
 560             assertTrue(sel.selectedKeys().contains(key2));
 561 
 562             // cancel key1
 563             key1.cancel();
 564             int n = sel.selectNow(k -> assertTrue(k == key2));
 565             assertTrue(n == 1);
 566             assertFalse(sel.keys().contains(key1));
 567             assertTrue(sel.keys().contains(key2));
 568             assertFalse(sel.selectedKeys().contains(key1));
 569             assertTrue(sel.selectedKeys().contains(key2));
 570 
 571             // cancel key2
 572             key2.cancel();
 573             n = sel.selectNow(k -> assertTrue(false));
 574             assertTrue(n == 0);
 575             assertFalse(sel.keys().contains(key1));
 576             assertFalse(sel.keys().contains(key2));




 531                 assertTrue(Thread.holdsLock(sel.selectedKeys()));
 532             });
 533         } finally {
 534             closePipe(p);
 535         }
 536     }
 537 
 538     /**
 539      * Test that selection operations remove cancelled keys from the selector's
 540      * key and selected-key sets.
 541      */
 542     public void testCancel() throws Exception {
 543         Pipe p = Pipe.open();
 544         try (Selector sel = Selector.open()) {
 545             Pipe.SinkChannel sink = p.sink();
 546             Pipe.SourceChannel source = p.source();
 547 
 548             // write to sink to ensure that the source is readable
 549             sink.write(messageBuffer());
 550 

 551             source.configureBlocking(false);
 552             SelectionKey key1 = source.register(sel, SelectionKey.OP_READ);
 553             // make sure pipe source is readable before we do following checks.
 554             // this is sometime necessary on windows where pipe is implemented
 555             // as a pair of connected socket, so there is no guarantee that written
 556             // bytes on sink side is immediately available on source side.
 557             sel.select();
 558 
 559             sink.configureBlocking(false);
 560             SelectionKey key2 = sink.register(sel, SelectionKey.OP_WRITE);
 561             sel.selectNow();
 562 
 563             assertTrue(sel.keys().contains(key1));
 564             assertTrue(sel.keys().contains(key2));
 565             assertTrue(sel.selectedKeys().contains(key1));
 566             assertTrue(sel.selectedKeys().contains(key2));
 567 
 568             // cancel key1
 569             key1.cancel();
 570             int n = sel.selectNow(k -> assertTrue(k == key2));
 571             assertTrue(n == 1);
 572             assertFalse(sel.keys().contains(key1));
 573             assertTrue(sel.keys().contains(key2));
 574             assertFalse(sel.selectedKeys().contains(key1));
 575             assertTrue(sel.selectedKeys().contains(key2));
 576 
 577             // cancel key2
 578             key2.cancel();
 579             n = sel.selectNow(k -> assertTrue(false));
 580             assertTrue(n == 0);
 581             assertFalse(sel.keys().contains(key1));
 582             assertFalse(sel.keys().contains(key2));


< prev index next >