test/java/lang/management/PlatformLoggingMXBean/LoggingMXBeanTest.java

Print this page




  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @bug 7024172 7067691
  27  * @summary Test if proxy for PlatformLoggingMXBean is equivalent
  28  *          to proxy for LoggingMXBean
  29  *
  30  * @build LoggingMXBeanTest
  31  * @run main LoggingMXBeanTest
  32  */
  33 
  34 import java.lang.management.*;
  35 import javax.management.MBeanServer;
  36 import java.util.logging.*;
  37 import java.util.ArrayList;
  38 import java.util.List;


  39 
  40 public class LoggingMXBeanTest
  41 {
  42     static String LOGGER_NAME_1 = "com.sun.management.Logger";
  43     static String LOGGER_NAME_2 = "com.sun.management.Logger.Logger2";
  44     static String UNKNOWN_LOGGER_NAME = "com.sun.management.Unknown";
  45 
  46     // These instance variables prevent premature logger garbage collection
  47     // See getLogger() weak reference warnings.
  48     Logger logger1;
  49     Logger logger2;
  50 
  51     static LoggingMXBeanTest test;
  52 
  53     public static void main(String[] argv) throws Exception {
  54         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
  55         LoggingMXBean proxy =
  56             ManagementFactory.newPlatformMXBeanProxy(mbs,
  57                 LogManager.LOGGING_MXBEAN_NAME,
  58                 LoggingMXBean.class);
  59 
  60         // test LoggingMXBean proxy
  61         test = new LoggingMXBeanTest(proxy);
  62 
  63         // check if the attributes implemented by PlatformLoggingMXBean
  64         // and LoggingMXBean return the same value


 196         String p2 = mbean.getParentLoggerName("");
 197         System.out.println("  : Parent Logger for \"\" : " + p2);
 198         if (!p2.equals("")) {
 199             throw new RuntimeException(
 200                 "Expected parent for root logger \"\" = \"\"" +
 201                 " but got " + p2);
 202         }
 203         String p3 = mbean.getParentLoggerName(UNKNOWN_LOGGER_NAME);
 204         System.out.println("  : Parent Logger for unknown logger : " + p3);
 205         if (p3 != null) {
 206             throw new RuntimeException(
 207                 "Expected level for " + UNKNOWN_LOGGER_NAME + " = null" +
 208                  " but got " + p3);
 209         }
 210     }
 211 
 212     private static void checkAttributes(LoggingMXBean mxbean1,
 213                                         PlatformLoggingMXBean mxbean2) {
 214         // verify logger names
 215         List<String> loggers1 = mxbean1.getLoggerNames();









 216         List<String> loggers2 = mxbean2.getLoggerNames();
 217 



 218         if (loggers1.size() != loggers2.size())
 219             throw new RuntimeException("LoggerNames: unmatched number of entries");
 220         List<String> loggers3 = new ArrayList<>(loggers1);
 221         loggers3.removeAll(loggers2);
 222         if (loggers3.size() != 0)
 223             throw new RuntimeException("LoggerNames: unmatched loggers");
 224 

 225         // verify logger's level  and parent
 226         for (String logger : loggers1) {
 227             if (!mxbean1.getLoggerLevel(logger)
 228                     .equals(mxbean2.getLoggerLevel(logger)))

 229                 throw new RuntimeException(
 230                     "LoggerLevel: unmatched level for " + logger
 231                     + ", " + mxbean1.getLoggerLevel(logger)
 232                     + ", " + mxbean2.getLoggerLevel(logger));
 233 
 234             if (!mxbean1.getParentLoggerName(logger)
 235                     .equals(mxbean2.getParentLoggerName(logger)))
 236                 throw new RuntimeException(
 237                     "ParentLoggerName: unmatched parent logger's name for " + logger);
 238         }
 239     }
 240 }


  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @bug 7024172 7067691
  27  * @summary Test if proxy for PlatformLoggingMXBean is equivalent
  28  *          to proxy for LoggingMXBean
  29  *
  30  * @build LoggingMXBeanTest
  31  * @run main LoggingMXBeanTest
  32  */
  33 
  34 import java.lang.management.*;
  35 import javax.management.MBeanServer;
  36 import java.util.logging.*;
  37 import java.util.ArrayList;
  38 import java.util.List;
  39 import java.util.Map;
  40 import java.util.HashMap;
  41 
  42 public class LoggingMXBeanTest
  43 {
  44     static final String LOGGER_NAME_1 = "com.sun.management.Logger";
  45     static final String LOGGER_NAME_2 = "com.sun.management.Logger.Logger2";
  46     static final String UNKNOWN_LOGGER_NAME = "com.sun.management.Unknown";
  47 
  48     // These instance variables prevent premature logger garbage collection
  49     // See getLogger() weak reference warnings.
  50     Logger logger1;
  51     Logger logger2;
  52 
  53     static LoggingMXBeanTest test;
  54 
  55     public static void main(String[] argv) throws Exception {
  56         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
  57         LoggingMXBean proxy =
  58             ManagementFactory.newPlatformMXBeanProxy(mbs,
  59                 LogManager.LOGGING_MXBEAN_NAME,
  60                 LoggingMXBean.class);
  61 
  62         // test LoggingMXBean proxy
  63         test = new LoggingMXBeanTest(proxy);
  64 
  65         // check if the attributes implemented by PlatformLoggingMXBean
  66         // and LoggingMXBean return the same value


 198         String p2 = mbean.getParentLoggerName("");
 199         System.out.println("  : Parent Logger for \"\" : " + p2);
 200         if (!p2.equals("")) {
 201             throw new RuntimeException(
 202                 "Expected parent for root logger \"\" = \"\"" +
 203                 " but got " + p2);
 204         }
 205         String p3 = mbean.getParentLoggerName(UNKNOWN_LOGGER_NAME);
 206         System.out.println("  : Parent Logger for unknown logger : " + p3);
 207         if (p3 != null) {
 208             throw new RuntimeException(
 209                 "Expected level for " + UNKNOWN_LOGGER_NAME + " = null" +
 210                  " but got " + p3);
 211         }
 212     }
 213 
 214     private static void checkAttributes(LoggingMXBean mxbean1,
 215                                         PlatformLoggingMXBean mxbean2) {
 216         // verify logger names
 217         List<String> loggers1 = mxbean1.getLoggerNames();
 218         System.out.println("Loggers: " + loggers1);
 219 
 220         // Retrieve the named loggers to prevent them from being
 221         // spontaneously gc'ed.
 222         Map<String, Logger> loggersMap = new HashMap<>();
 223         for (String n : loggers1) {
 224             loggersMap.put(n, Logger.getLogger(n));
 225         }
 226 
 227         List<String> loggers2 = mxbean2.getLoggerNames();
 228 
 229         // loggers1 and loggers2 should be identical - no new logger should
 230         // have been created in between (at least no new logger name)
 231         //
 232         if (loggers1.size() != loggers2.size())
 233             throw new RuntimeException("LoggerNames: unmatched number of entries");
 234         if (!loggers2.containsAll(loggersMap.keySet()))


 235             throw new RuntimeException("LoggerNames: unmatched loggers");
 236 
 237 
 238         // verify logger's level  and parent
 239         for (String logger : loggers1) {
 240             String level1 = mxbean1.getLoggerLevel(logger);
 241             String level2 = mxbean2.getLoggerLevel(logger);
 242             if (!java.util.Objects.equals(level1, level2)) {
 243                 throw new RuntimeException(
 244                         "LoggerLevel: unmatched level for " + logger
 245                         + ", " + level1 + ", " + level2);
 246             }
 247 
 248             if (!mxbean1.getParentLoggerName(logger)
 249                     .equals(mxbean2.getParentLoggerName(logger)))
 250                 throw new RuntimeException(
 251                     "ParentLoggerName: unmatched parent logger's name for " + logger);
 252         }
 253     }
 254 }