Add a test for an issue which I believe is caused by failure to identify

an asynchronous method.

Unfortunately I am unable to actually produce a failing test; instead an
exception message is generated during test execution. This seems to be an
issue with the test runner mechanism.
This commit is contained in:
Davin McCall 2017-02-23 16:03:14 +00:00 committed by Alexey Andreev
parent 651532c203
commit 95f07d80a7

View File

@ -167,6 +167,13 @@ public class VMTest {
assertEquals("ok", acl.instanceState);
}
@Test
public void asyncWait() {
AsyncClinitClass acl = new AsyncClinitClass();
acl.doWait();
assertEquals("ok", acl.instanceState);
}
@Test
@SkipJVM
public void loopAndExceptionPhi() {
@ -244,13 +251,28 @@ public class VMTest {
public static String bar() {
return "bar";
}
public AsyncClinitClass() {
instanceState += "ok";
try {
Thread.sleep(1);
} catch (InterruptedException ie) {
throw new RuntimeException(ie);
}
catch (InterruptedException ie) {
}
public synchronized void doWait() {
new Thread(() -> {
synchronized (AsyncClinitClass.this) {
notify();
}
}).start();
try {
Thread.sleep(1);
wait();
} catch (InterruptedException ie) {
instanceState = "error";
throw new RuntimeException(ie);
}
}
@ -294,4 +316,4 @@ public class VMTest {
super(ONE);
}
}
}
}