test/java/lang/management/PlatformLoggingMXBean/LoggingMXBeanTest.java
Print this page
*** 37,49 ****
import java.util.ArrayList;
import java.util.List;
public class LoggingMXBeanTest
{
! static String LOGGER_NAME_1 = "com.sun.management.Logger";
! static String LOGGER_NAME_2 = "com.sun.management.Logger.Logger2";
! static String UNKNOWN_LOGGER_NAME = "com.sun.management.Unknown";
// These instance variables prevent premature logger garbage collection
// See getLogger() weak reference warnings.
Logger logger1;
Logger logger2;
--- 37,49 ----
import java.util.ArrayList;
import java.util.List;
public class LoggingMXBeanTest
{
! static final String LOGGER_NAME_1 = "com.sun.management.Logger";
! static final String LOGGER_NAME_2 = "com.sun.management.Logger.Logger2";
! static final String UNKNOWN_LOGGER_NAME = "com.sun.management.Unknown";
// These instance variables prevent premature logger garbage collection
// See getLogger() weak reference warnings.
Logger logger1;
Logger logger2;
*** 222,237 ****
if (loggers3.size() != 0)
throw new RuntimeException("LoggerNames: unmatched loggers");
// verify logger's level and parent
for (String logger : loggers1) {
! if (!mxbean1.getLoggerLevel(logger)
! .equals(mxbean2.getLoggerLevel(logger)))
throw new RuntimeException(
"LoggerLevel: unmatched level for " + logger
! + ", " + mxbean1.getLoggerLevel(logger)
! + ", " + mxbean2.getLoggerLevel(logger));
if (!mxbean1.getParentLoggerName(logger)
.equals(mxbean2.getParentLoggerName(logger)))
throw new RuntimeException(
"ParentLoggerName: unmatched parent logger's name for " + logger);
--- 222,258 ----
if (loggers3.size() != 0)
throw new RuntimeException("LoggerNames: unmatched loggers");
// verify logger's level and parent
for (String logger : loggers1) {
! // it is conceivable that mxbean1.getLoggerLevel(logger) is null
! // if logger has been gc'ed.
! String level1 = mxbean1.getLoggerLevel(logger);
! String level2 = mxbean2.getLoggerLevel(logger);
! if (!java.util.Objects.equals(level1, level2)) {
! boolean mustfail;
! switch(logger) {
! case LOGGER_NAME_1:
! case LOGGER_NAME_2:
! mustfail = true; // we have a ref on those loggers.
! // they should not have been gc'ed.
! break;
! default:
! mustfail = level1 != null && level2 != null;
! }
! if (mustfail) {
throw new RuntimeException(
"LoggerLevel: unmatched level for " + logger
! + ", " + level1 + ", " + level2);
! } else {
! System.err.println("WARNING: level was null for " + logger
! + "; Unmatched level for " + logger
! + ", " + level1 + ", " + level2 );
! continue; // no use to check further - the logger was
! // probably gc'ed
! }
! }
if (!mxbean1.getParentLoggerName(logger)
.equals(mxbean2.getParentLoggerName(logger)))
throw new RuntimeException(
"ParentLoggerName: unmatched parent logger's name for " + logger);