7044870: java/nio/channels/DatagramChannel/SelectWhenRefused.java failed on SUSE Linux 10
Reviewed-by: alanb, chegar
This commit is contained in:
parent
f31cad1b9e
commit
72c1f57f87
@ -22,7 +22,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* @test
|
/* @test
|
||||||
* @bug 6935563
|
* @bug 6935563 7044870
|
||||||
* @summary Test that Selector does not select an unconnected DatagramChannel when
|
* @summary Test that Selector does not select an unconnected DatagramChannel when
|
||||||
* ICMP port unreachable received
|
* ICMP port unreachable received
|
||||||
*/
|
*/
|
||||||
@ -35,14 +35,15 @@ import java.io.IOException;
|
|||||||
public class SelectWhenRefused {
|
public class SelectWhenRefused {
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
DatagramChannel dc = DatagramChannel.open().bind(new InetSocketAddress(0));
|
DatagramChannel dc1 = DatagramChannel.open().bind(new InetSocketAddress(0));
|
||||||
int port = dc.socket().getLocalPort();
|
int port = dc1.socket().getLocalPort();
|
||||||
dc.close();
|
|
||||||
|
|
||||||
// datagram sent to this address should be refused
|
// datagram sent to this address should be refused
|
||||||
SocketAddress refuser = new InetSocketAddress(InetAddress.getLocalHost(), port);
|
SocketAddress refuser = new InetSocketAddress(InetAddress.getLocalHost(), port);
|
||||||
|
|
||||||
dc = DatagramChannel.open().bind(new InetSocketAddress(0));
|
DatagramChannel dc = DatagramChannel.open().bind(new InetSocketAddress(0));
|
||||||
|
dc1.close();
|
||||||
|
|
||||||
Selector sel = Selector.open();
|
Selector sel = Selector.open();
|
||||||
try {
|
try {
|
||||||
dc.configureBlocking(false);
|
dc.configureBlocking(false);
|
||||||
@ -52,6 +53,10 @@ public class SelectWhenRefused {
|
|||||||
sendDatagram(dc, refuser);
|
sendDatagram(dc, refuser);
|
||||||
int n = sel.select(2000);
|
int n = sel.select(2000);
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
|
sel.selectedKeys().clear();
|
||||||
|
// BindException will be thrown if another service is using
|
||||||
|
// our expected refuser port, cannot run just exit.
|
||||||
|
DatagramChannel.open().bind(refuser).close();
|
||||||
throw new RuntimeException("Unexpected wakeup");
|
throw new RuntimeException("Unexpected wakeup");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +85,8 @@ public class SelectWhenRefused {
|
|||||||
throw new RuntimeException("Unexpected wakeup after disconnect");
|
throw new RuntimeException("Unexpected wakeup after disconnect");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} catch(BindException e) {
|
||||||
|
// Do nothing, some other test has used this port
|
||||||
} finally {
|
} finally {
|
||||||
sel.close();
|
sel.close();
|
||||||
dc.close();
|
dc.close();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user