8031113: TEST_BUG: java/nio/channels/AsynchronousChannelGroup/Basic.java fails intermittently

Reviewed-by: chegar
This commit is contained in:
Alan Bateman 2014-01-03 15:59:54 +00:00
parent b64d8e7b03
commit e21c1ec29b
3 changed files with 15 additions and 23 deletions

View File

@ -24,8 +24,6 @@
/* @test
* @bug 4607272
* @summary Unit test for AsynchronousChannelGroup
* @build Basic
* @run main/othervm -XX:-UseVMInterruptibleIO Basic
*/
import java.nio.ByteBuffer;
@ -37,12 +35,9 @@ import java.io.IOException;
public class Basic {
static final Random rand = new Random();
static final ThreadFactory threadFactory = new ThreadFactory() {
@Override
public Thread newThread(final Runnable r) {
return new Thread(r);
}};
static final ThreadFactory threadFactory = (Runnable r) -> {
return new Thread(r);
};
public static void main(String[] args) throws Exception {
shutdownTests();
@ -51,6 +46,12 @@ public class Basic {
miscTests();
}
static void awaitTermination(AsynchronousChannelGroup group) throws InterruptedException {
boolean terminated = group.awaitTermination(20, TimeUnit.SECONDS);
if (!terminated)
throw new RuntimeException("Group should have terminated");
}
static void testShutdownWithNoChannels(ExecutorService pool,
AsynchronousChannelGroup group)
throws Exception
@ -59,9 +60,7 @@ public class Basic {
if (!group.isShutdown())
throw new RuntimeException("Group should be shutdown");
// group should terminate quickly
boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS);
if (!terminated)
throw new RuntimeException("Group should have terminated");
awaitTermination(group);
if (pool != null && !pool.isTerminated())
throw new RuntimeException("Executor should have terminated");
}
@ -86,9 +85,7 @@ public class Basic {
ch.close();
// group should terminate quickly
boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS);
if (!terminated)
throw new RuntimeException("Group should have terminated");
awaitTermination(group);
if (pool != null && !pool.isTerminated())
throw new RuntimeException("Executor should have terminated");
}
@ -153,9 +150,8 @@ public class Basic {
if (ch.isOpen())
throw new RuntimeException("Channel should be closed");
boolean terminated = group.awaitTermination(3, TimeUnit.SECONDS);
if (!terminated)
throw new RuntimeException("Group should have terminated");
awaitTermination(group);
if (pool != null && !pool.isTerminated())
throw new RuntimeException("Executor should have terminated");
}
@ -260,9 +256,7 @@ public class Basic {
// close channel; group should terminate quickly
ch.close();
listener.close();
terminated = group.awaitTermination(3, TimeUnit.SECONDS);
if (!terminated)
throw new RuntimeException("Group should have terminated");
awaitTermination(group);
}
static void miscTests() throws Exception {

View File

@ -136,7 +136,7 @@ public class GroupOfOne {
// clean-up
group.shutdown();
boolean terminated = group.awaitTermination(5, TimeUnit.SECONDS);
boolean terminated = group.awaitTermination(20, TimeUnit.SECONDS);
if (!terminated)
throw new RuntimeException("Group did not terminate");

View File

@ -24,8 +24,6 @@
/* @test
* @bug 4607272 6842687
* @summary Unit test for AsynchronousChannelGroup
* @build Restart
* @run main/othervm -XX:-UseVMInterruptibleIO Restart
*/
import java.nio.channels.*;