8003253: TEST_BUG: java/nio/channels/AsynchronousChannelGroup/Unbounded.java hang intermittently [win]

Reviewed-by: chegar
This commit is contained in:
Alan Bateman 2012-11-11 10:05:37 +00:00
parent d0e329751f
commit 86d36e5d55

View File

@ -36,6 +36,9 @@ public class Unbounded {
// number of concurrent completion handlers
static final int CONCURRENCY_COUNT = 256;
// set to true if an I/O operation fails
static volatile boolean failed;
public static void main(String[] args) throws Exception {
// all accepted connections are added to a queue
final ArrayBlockingQueue<AsynchronousSocketChannel> queue =
@ -51,6 +54,8 @@ public class Unbounded {
listener.accept((Void)null, this);
}
public void failed(Throwable exc, Void att) {
failed = true;
System.err.println("accept failed: " + exc);
}
});
System.out.println("Listener created.");
@ -94,6 +99,9 @@ public class Unbounded {
}
}
public void failed(Throwable exc, AsynchronousSocketChannel ch) {
failed = true;
System.err.println("read failed: " + exc);
completed(0, ch);
}
});
}
@ -104,6 +112,7 @@ public class Unbounded {
while (remaining > 0) {
AsynchronousSocketChannel ch = queue.take();
ch.write(ByteBuffer.wrap("welcome".getBytes())).get();
ch.shutdownOutput();
ch.close();
remaining--;
}
@ -112,5 +121,7 @@ public class Unbounded {
System.out.println("Waiting for all threads to reach barrier");
barrier.await();
listener.close();
if (failed)
throw new RuntimeException("I/O failed failed, see log for details");
}
}