# HG changeset patch # User bpb # Date 1436974944 25200 # Node ID 8c4b63e942fb7858583b8eb50e45f8b052b17efd # Parent c10ac6f1e391b7cdd42dbfc4fd356245f0d9632d 8130394: DatagramChannel tests need to be hardended to ignore stray datagrams Summary: The patch updates tests to ignore stray datagrams, or at least print more information to ease troubleshooting. Reviewed-by: rriggs Contributed-by: Felix Yang diff -r c10ac6f1e391 -r 8c4b63e942fb jdk/test/java/nio/channels/DatagramChannel/ReceiveISA.java --- a/jdk/test/java/nio/channels/DatagramChannel/ReceiveISA.java Wed Jul 15 15:07:58 2015 +0100 +++ b/jdk/test/java/nio/channels/DatagramChannel/ReceiveISA.java Wed Jul 15 08:42:24 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2015, 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 @@ -23,7 +23,7 @@ /* * @test - * @bug 4503641 + * @bug 4503641 8130394 * @summary Check that DatagramChannel.receive returns a new SocketAddress * when it receives a packet from the same source address but * different endpoint. @@ -63,6 +63,7 @@ SocketAddress sa[] = new SocketAddress[3]; for (int i=0; i<3; i++) { sa[i] = dc3.receive(rb); + System.out.println("received "+ sa[i] ); rb.clear(); } diff -r c10ac6f1e391 -r 8c4b63e942fb jdk/test/java/nio/channels/DatagramChannel/Sender.java --- a/jdk/test/java/nio/channels/DatagramChannel/Sender.java Wed Jul 15 15:07:58 2015 +0100 +++ b/jdk/test/java/nio/channels/DatagramChannel/Sender.java Wed Jul 15 08:42:24 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2015, 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 @@ -22,20 +22,24 @@ */ /* @test - * @bug 4669040 + * @bug 4669040 8130394 * @summary Test DatagramChannel subsequent receives with no datagram ready * @author Mike McCloskey */ -import java.io.*; -import java.net.*; -import java.nio.*; -import java.nio.channels.*; -import java.nio.charset.*; +import java.io.IOException; +import java.io.PrintStream; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.channels.DatagramChannel; public class Sender { static PrintStream log = System.err; + static volatile SocketAddress clientISA = null; public static void main(String[] args) throws Exception { test(); @@ -81,6 +85,7 @@ InetAddress address = InetAddress.getLocalHost(); InetSocketAddress isa = new InetSocketAddress(address, port); dc.connect(isa); + clientISA = dc.getLocalAddress(); dc.write(bb); } catch (Exception ex) { e = ex; @@ -118,13 +123,20 @@ public void run() { SocketAddress sa = null; + try { ByteBuffer bb = ByteBuffer.allocateDirect(12); bb.clear(); // Get the one valid datagram dc.configureBlocking(false); - while (sa == null) + while (sa == null) { sa = dc.receive(bb); + if (sa != null && clientISA != null && !clientISA.equals(sa)) { + log.println("Ignore a possible stray diagram from " + sa); + sa = null; + } + } + showBuffer("Received:", bb); sa = null; for (int i=0; i<100; i++) { bb.clear();