< prev index next >

test/java/nio/channels/Selector/SelectAfterRead.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 20,51 **** * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! * @bug 4639943 * @summary Checks that Windows behavior matches Solaris for * various read/select combinations. * @author kladko */ import java.nio.ByteBuffer; import java.nio.channels.Selector; import java.nio.channels.SelectionKey; import java.nio.channels.SocketChannel; public class SelectAfterRead { private static final int TIMEOUT = 1000; public static void main(String[] argv) throws Exception { // server: accept connection and write one byte try (ByteServer server = new ByteServer(); SocketChannel sc = SocketChannel.open(server.address())) { server.acceptConnection(); server.write(1); try (Selector sel = Selector.open()) { sc.read(ByteBuffer.allocate(1)); sc.configureBlocking(false); --- 20,60 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ /* @test ! * @bug 4639943 8085792 * @summary Checks that Windows behavior matches Solaris for * various read/select combinations. * @author kladko */ + import java.net.SocketTimeoutException; import java.nio.ByteBuffer; import java.nio.channels.Selector; import java.nio.channels.SelectionKey; import java.nio.channels.SocketChannel; public class SelectAfterRead { private static final int TIMEOUT = 1000; + private static final int SERVER_ACCEPT_TIMEOUT = 100; public static void main(String[] argv) throws Exception { + while (true) { // server: accept connection and write one byte try (ByteServer server = new ByteServer(); SocketChannel sc = SocketChannel.open(server.address())) { + server.setTimeout(SERVER_ACCEPT_TIMEOUT); + try { server.acceptConnection(); + } catch (SocketTimeoutException ex) { + System.err.println("accept connection(write one byte) timeout..."); + continue; + } server.write(1); try (Selector sel = Selector.open()) { sc.read(ByteBuffer.allocate(1)); sc.configureBlocking(false);
*** 54,70 **** --- 63,89 ---- // nothing to read if (sel.selectNow() != 0) throw new Exception("Select returned nonzero value"); } } + System.out.println("Test(write one byte) successes."); + break; + } + while (true) { // Now we will test a two reads combination // server: accept connection and write two bytes try (ByteServer server = new ByteServer(); SocketChannel sc = SocketChannel.open(server.address())) { + server.setTimeout(SERVER_ACCEPT_TIMEOUT); + try { server.acceptConnection(); + } catch (SocketTimeoutException ex) { + System.err.println("accept connection(write two bytes) timeout..."); + continue; + } server.write(2); try (Selector sel = Selector.open()) { sc.configureBlocking(false); sc.register(sel, SelectionKey.OP_READ);
*** 83,89 **** --- 102,111 ---- throw new Exception("One byte expected"); if (sel.selectNow() != 0) throw new Exception("Select returned nonzero value"); } } + System.out.println("Test(write two bytes) successes."); + break; + } } }
< prev index next >