diff -r 08102295011d -r 18659e040c64 test/jdk/java/nio/channels/DatagramChannel/AdaptDatagramSocket.java --- a/test/jdk/java/nio/channels/DatagramChannel/AdaptDatagramSocket.java Fri Nov 01 14:18:40 2019 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2001, 2018, 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. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* @test - * @bug 4313882 4981129 8143610 - * @summary Unit test for datagram-socket-channel adaptors - * @library .. /test/lib - * @build jdk.test.lib.Utils TestServers - * @run main AdaptDatagramSocket - * @key randomness - */ - -import java.net.*; -import java.nio.channels.*; -import java.util.*; - - -public class AdaptDatagramSocket { - - static java.io.PrintStream out = System.out; - static Random rand = new Random(); - - static String toString(DatagramPacket dp) { - return ("DatagramPacket[off=" + dp.getOffset() - + ", len=" + dp.getLength() - + "]"); - } - - static void test(DatagramSocket ds, InetSocketAddress dst, - boolean shouldTimeout) - throws Exception - { - DatagramPacket op = new DatagramPacket(new byte[100], 13, 42, dst); - rand.nextBytes(op.getData()); - DatagramPacket ip = new DatagramPacket(new byte[100], 19, 100 - 19); - out.println("pre op: " + toString(op) + " ip: " + toString(ip)); - - long start = System.currentTimeMillis(); - ds.send(op); - - for (;;) { - try { - ds.receive(ip); - if (ip.getLength() == 0) { // ## Not sure why this happens - ip.setLength(100 - 19); - continue; - } - } catch (SocketTimeoutException x) { - if (shouldTimeout) { - out.println("Receive timed out, as expected"); - return; - } - throw x; - } - break; - } - - out.println("rtt: " + (System.currentTimeMillis() - start)); - out.println("post op: " + toString(op) + " ip: " + toString(ip)); - - for (int i = 0; i < ip.getLength(); i++) { - if (ip.getData()[ip.getOffset() + i] - != op.getData()[op.getOffset() + i]) - throw new Exception("Incorrect data received"); - } - - if (!(ip.getSocketAddress().equals(dst))) { - throw new Exception("Incorrect sender address, expected: " + dst - + " actual: " + ip.getSocketAddress()); - } - } - - static void test(InetSocketAddress dst, - int timeout, boolean shouldTimeout, - boolean connect) - throws Exception - { - out.println(); - out.println("dst: " + dst); - - DatagramSocket ds; - if (false) { - // Original - ds = new DatagramSocket(); - } else { - DatagramChannel dc = DatagramChannel.open(); - ds = dc.socket(); - ds.bind(new InetSocketAddress(0)); - } - - out.println("socket: " + ds); - if (connect) { - ds.connect(dst); - out.println("connect: " + ds); - } - InetSocketAddress src = new InetSocketAddress(ds.getLocalAddress(), - ds.getLocalPort()); - out.println("src: " + src); - - if (timeout > 0) - ds.setSoTimeout(timeout); - out.println("timeout: " + ds.getSoTimeout()); - - for (int i = 0; i < 5; i++) { - test(ds, dst, shouldTimeout); - } - - // Leave the socket open so that we don't reuse the old src address - //ds.close(); - - } - - public static void main(String[] args) throws Exception { - // need an UDP echo server - try (TestServers.UdpEchoServer echoServer - = TestServers.UdpEchoServer.startNewServer(100)) { - final InetSocketAddress address - = new InetSocketAddress(echoServer.getAddress(), - echoServer.getPort()); - test(address, 0, false, false); - test(address, 0, false, true); - test(address, Integer.MAX_VALUE, false, false); - } - try (TestServers.UdpDiscardServer discardServer - = TestServers.UdpDiscardServer.startNewServer()) { - final InetSocketAddress address - = new InetSocketAddress(discardServer.getAddress(), - discardServer.getPort()); - test(address, 10, true, false); - } - } - -}