提交 eb332e67 编写于 作者: M mseledtsov

8217744: [TESTBUG] JFR TestShutdownEvent fails on some systems due to process surviving SIGINT

Summary: changed handling of cases when child process suvives the signal
Reviewed-by: egahlin
上级 47c85a0b
......@@ -57,10 +57,9 @@ public class TestShutdownEvent {
new TestVMCrash(),
new TestUnhandledException(),
new TestRuntimeHalt(),
// exclude until JDK-8217744 is fixed
// new TestSig("TERM"),
// new TestSig("HUP"),
// new TestSig("INT")
new TestSig("TERM"),
new TestSig("HUP"),
new TestSig("INT")
};
public static void main(String[] args) throws Throwable {
......@@ -82,7 +81,8 @@ public class TestShutdownEvent {
String.valueOf(subTestIndex));
OutputAnalyzer output = ProcessTools.executeProcess(pb);
System.out.println(output.getOutput());
System.out.println("Exit code: " + output.getExitValue());
int exitCode = output.getExitValue();
System.out.println("Exit code: " + exitCode);
String recordingName = output.firstMatch("emergency jfr file: (.*.jfr)", 1);
if (recordingName == null) {
......@@ -97,7 +97,7 @@ public class TestShutdownEvent {
Asserts.assertEquals(filteredEvents.size(), 1);
RecordedEvent event = filteredEvents.get(0);
subTests[subTestIndex].verifyEvents(event);
subTests[subTestIndex].verifyEvents(event, exitCode);
}
@SuppressWarnings("unused")
......@@ -114,7 +114,7 @@ public class TestShutdownEvent {
return true;
}
void runTest();
void verifyEvents(RecordedEvent event);
void verifyEvents(RecordedEvent event, int exitCode);
}
public static Unsafe getUnsafe() {
......@@ -145,7 +145,7 @@ public class TestShutdownEvent {
}
@Override
public void verifyEvents(RecordedEvent event) {
public void verifyEvents(RecordedEvent event, int exitCode) {
Events.assertField(event, "reason").equal("No remaining non-daemon Java threads");
}
}
......@@ -158,7 +158,7 @@ public class TestShutdownEvent {
}
@Override
public void verifyEvents(RecordedEvent event) {
public void verifyEvents(RecordedEvent event, int exitCode) {
Events.assertField(event, "reason").equal("Shutdown requested from Java");
validateStackTrace(event.getStackTrace());
}
......@@ -173,7 +173,7 @@ public class TestShutdownEvent {
}
@Override
public void verifyEvents(RecordedEvent event) {
public void verifyEvents(RecordedEvent event, int exitCode) {
Events.assertField(event, "reason").equal("VM Error");
validateStackTrace(event.getStackTrace());
}
......@@ -186,7 +186,7 @@ public class TestShutdownEvent {
}
@Override
public void verifyEvents(RecordedEvent event) {
public void verifyEvents(RecordedEvent event, int exitCode) {
Events.assertField(event, "reason").equal("No remaining non-daemon Java threads");
}
}
......@@ -199,7 +199,7 @@ public class TestShutdownEvent {
}
@Override
public void verifyEvents(RecordedEvent event) {
public void verifyEvents(RecordedEvent event, int exitCode) {
Events.assertField(event, "reason").equal("Shutdown requested from Java");
validateStackTrace(event.getStackTrace());
}
......@@ -236,11 +236,15 @@ public class TestShutdownEvent {
} catch (Exception e) {
e.printStackTrace();
}
Asserts.fail("Process survived the SIG" + signalName + " signal!");
System.out.println("Process survived the SIG" + signalName + " signal!");
}
@Override
public void verifyEvents(RecordedEvent event) {
public void verifyEvents(RecordedEvent event, int exitCode) {
if (exitCode == 0) {
System.out.println("Process exited normally with exit code 0, skipping the verification");
return;
}
Events.assertField(event, "reason").equal("Shutdown requested from Java");
Events.assertEventThread(event);
Asserts.assertEquals(event.getThread().getJavaName(), "SIG" + signalName + " handler");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册