8177059: [TESTBUG] gc/g1/TestGCLogMessages.java fails on 32bit arm after changes for JDK-8155094

Provide a way in the test to check log messages on arbitrary conditions and implement this for this case.

Reviewed-by: mchernov, sjohanss
This commit is contained in:
Thomas Schatzl 2017-03-31 13:22:43 +02:00
parent 94035de947
commit 5fdddaf351

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -23,7 +23,7 @@
/*
* @test TestGCLogMessages
* @bug 8035406 8027295 8035398 8019342 8027959 8048179 8027962 8069330 8076463 8150630 8160055
* @bug 8035406 8027295 8035398 8019342 8027959 8048179 8027962 8069330 8076463 8150630 8160055 8177059
* @summary Ensure the output for a minor GC with G1
* includes the expected necessary messages.
* @key gc
@ -38,6 +38,7 @@
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.Platform;
public class TestGCLogMessages {
@ -70,8 +71,22 @@ public class TestGCLogMessages {
this.message = message;
this.level = level;
}
public boolean isAvailable() {
return true;
}
};
private class LogMessageWithLevelC2OrJVMCIOnly extends LogMessageWithLevel {
public LogMessageWithLevelC2OrJVMCIOnly(String message, Level level) {
super(message, level);
}
public boolean isAvailable() {
return Platform.isGraal() || Platform.isServer();
}
}
private LogMessageWithLevel allLogMessages[] = new LogMessageWithLevel[] {
new LogMessageWithLevel("Pre Evacuate Collection Set", Level.INFO),
new LogMessageWithLevel("Evacuate Collection Set", Level.INFO),
@ -119,13 +134,13 @@ public class TestGCLogMessages {
new LogMessageWithLevel("Prepare TLABs", Level.DEBUG),
new LogMessageWithLevel("Resize TLABs", Level.DEBUG),
new LogMessageWithLevel("DerivedPointerTable Update", Level.DEBUG),
new LogMessageWithLevelC2OrJVMCIOnly("DerivedPointerTable Update", Level.DEBUG),
new LogMessageWithLevel("Start New Collection Set", Level.DEBUG),
};
void checkMessagesAtLevel(OutputAnalyzer output, LogMessageWithLevel messages[], Level level) throws Exception {
for (LogMessageWithLevel l : messages) {
if (level.lessThan(l.level)) {
if (level.lessThan(l.level) || !l.isAvailable()) {
output.shouldNotContain(l.message);
} else {
output.shouldMatch("\\[" + l.level + ".*" + l.message);