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 } |