6934585: TEST_BUG: java/nio/channels/AsynchronousSocketChannel/Basic.java

Reviewed-by: chegar
This commit is contained in:
Alan Bateman 2010-06-11 14:31:26 +01:00
parent b0277a9631
commit 82adf1a224
2 changed files with 65 additions and 61 deletions

View File

@ -737,9 +737,6 @@ sun/net/www/protocol/http/DigestTest.java generic-all
# Suspect many of these tests auffer from using fixed ports, no concrete
# evidence.
# Failing on Solaris x86 and Linux x86, filed 6934585
java/nio/channels/AsynchronousSocketChannel/Basic.java generic-all
# Occasionally Failing with java.lang.AssertionError on Windows X64
# at sun.nio.ch.PendingIoCache.clearPendingIoMap(PendingIoCache.java:144)
#java/nio/channels/FileChannel/ReleaseOnCloseDeadlock.java windows-all
@ -767,10 +764,6 @@ java/nio/channels/Selector/SelectWrite.java generic-all
# Fails on Fedora 9 32bit times out
java/nio/channels/DatagramChannel/EmptyBuffer.java generic-all
# Fails on Windows 2000, ExceptionInInitializerError
# in WindowsAsynchronousServerSocketChannelImpl.java:316
java/nio/channels/AsynchronousChannelGroup/Unbounded.java generic-all
# Fails on Windows 2000, times out
java/nio/channels/FileChannel/Transfer.java generic-all
@ -812,11 +805,12 @@ java/nio/channels/Selector/HelperSlowToDie.java generic-all
# Timeouts etc. on Window
java/nio/channels/AsyncCloseAndInterrupt.java windows-all
# Gets java.lang.ExceptionInInitializerError on windows: (Windows 2000 only?)
# Gets java.lang.ExceptionInInitializerError on Windows 2000 (need XP or newer)
java/nio/channels/AsynchronousChannelGroup/Basic.java windows-5.0
java/nio/channels/AsynchronousChannelGroup/GroupOfOne.java windows-5.0
java/nio/channels/AsynchronousChannelGroup/Identity.java windows-5.0
java/nio/channels/AsynchronousChannelGroup/Restart.java windows-5.0
java/nio/channels/AsynchronousChannelGroup/Unbounded.java windows-5.0
java/nio/channels/AsynchronousDatagramChannel/Basic.java windows-5.0
java/nio/channels/AsynchronousFileChannel/Lock.java windows-5.0
java/nio/channels/AsynchronousServerSocketChannel/Basic.java windows-5.0

View File

@ -196,18 +196,16 @@ public class Basic {
System.out.println("-- connect to non-existent host --");
// test failure
InetAddress badHost = InetAddress.getByName("1.2.3.4");
if (!badHost.isReachable(10*1000)) {
// test that failure to connect closes the channel
ch = AsynchronousSocketChannel.open();
try {
ch.connect(new InetSocketAddress(badHost, 9876)).get();
throw new RuntimeException("Connection should not be established");
ch.connect(genSocketAddress()).get();
} catch (ExecutionException x) {
}
// failed to establish connection
if (ch.isOpen())
throw new RuntimeException("Channel should be closed");
} finally {
ch.close();
}
server.close();
@ -219,12 +217,8 @@ public class Basic {
AsynchronousSocketChannel ch;
// asynchronous close while connecting
InetAddress rh = InetAddress.getByName("1.2.3.4");
if (!rh.isReachable(3000)) {
InetSocketAddress isa = new InetSocketAddress(rh, 1234);
ch = AsynchronousSocketChannel.open();
Future<Void> result = ch.connect(isa);
Future<Void> connectResult = ch.connect(genSocketAddress());
// give time to initiate the connect (SYN)
Thread.sleep(50);
@ -232,14 +226,13 @@ public class Basic {
// close
ch.close();
// check that AsynchronousCloseException is thrown
// check that exception is thrown in timely manner
try {
result.get();
throw new RuntimeException("Should not connect");
connectResult.get(5, TimeUnit.SECONDS);
} catch (TimeoutException x) {
throw new RuntimeException("AsynchronousCloseException not thrown");
} catch (ExecutionException x) {
if (!(x.getCause() instanceof AsynchronousCloseException))
throw new RuntimeException(x);
}
// expected
}
System.out.println("-- asynchronous close when reading --");
@ -811,4 +804,21 @@ public class Basic {
bufs[i] = genBuffer();
return bufs;
}
// return random SocketAddress
static SocketAddress genSocketAddress() {
StringBuilder sb = new StringBuilder("10.");
sb.append(rand.nextInt(256));
sb.append('.');
sb.append(rand.nextInt(256));
sb.append('.');
sb.append(rand.nextInt(256));
InetAddress rh;
try {
rh = InetAddress.getByName(sb.toString());
} catch (UnknownHostException x) {
throw new InternalError("Should not happen");
}
return new InetSocketAddress(rh, rand.nextInt(65535)+1);
}
}