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);