Path: blob/master/test/jdk/java/nio/channels/SocketChannel/Shutdown.java
41154 views
/*1* Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/* @test24* @bug 4618960 451676025* @summary Test shutdownXXX and isInputShutdown26*/2728import java.io.IOException;29import java.net.*;30import java.nio.ByteBuffer;31import java.nio.channels.*;3233public class Shutdown {3435/**36* Accept a connection, and close it immediately causing a hard reset.37*/38static void acceptAndReset(ServerSocketChannel ssc) throws IOException {39SocketChannel peer = ssc.accept();40try {41peer.setOption(StandardSocketOptions.SO_LINGER, 0);42peer.configureBlocking(false);43peer.write(ByteBuffer.wrap(new byte[128*1024]));44} finally {45peer.close();46}47}4849public static void main(String[] args) throws Exception {50ServerSocketChannel ssc = ServerSocketChannel.open()51.bind(new InetSocketAddress(0));52try {53InetAddress lh = InetAddress.getLocalHost();54int port = ((InetSocketAddress)(ssc.getLocalAddress())).getPort();55SocketAddress remote = new InetSocketAddress(lh, port);5657// Test SocketChannel shutdownXXX58SocketChannel sc;59sc = SocketChannel.open(remote);60try {61acceptAndReset(ssc);62sc.shutdownInput();63sc.shutdownOutput();64} finally {65sc.close();66}6768// Test Socket adapter shutdownXXX and isShutdownInput69sc = SocketChannel.open(remote);70try {71acceptAndReset(ssc);72boolean before = sc.socket().isInputShutdown();73sc.socket().shutdownInput();74boolean after = sc.socket().isInputShutdown();75if (before || !after)76throw new RuntimeException("Before and after test failed");77sc.socket().shutdownOutput();78} finally {79sc.close();80}81} finally {82ssc.close();83}84}85}868788