| /* |
| * Copyright (c) 2003, 2016, 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 |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| /* |
| * @test |
| * @bug 5007165 |
| * |
| * @summary Basic Test for LoggingMXBean via MBeanServer |
| * @author Ron Mann |
| * @modules java.logging |
| * java.management |
| * @build LoggingMXBeanTest |
| * @run main LoggingMXBeanTest |
| */ |
| |
| import javax.management.*; |
| import java.util.logging.*; |
| |
| |
| public class LoggingMXBeanTest |
| { |
| |
| LoggingMXBean mBean; |
| ObjectName objectName = null; |
| static String LOGGER_NAME_1 = "com.sun.management.Logger1"; |
| static String LOGGER_NAME_2 = "com.sun.management.Logger2"; |
| static Logger logger1; |
| static Logger logger2; |
| |
| public LoggingMXBeanTest() throws Exception { |
| |
| /* |
| * Create the MBeanServeri, register the LoggingMXBean |
| */ |
| System.out.println( "***************************************************" ); |
| System.out.println( "********** LoggingMXBean Unit Test **********" ); |
| System.out.println( "***************************************************" ); |
| System.out.println( "" ); |
| System.out.println( "*******************************" ); |
| System.out.println( "*********** Phase 1 ***********" ); |
| System.out.println( "*******************************" ); |
| System.out.println( " Creating MBeanServer " ); |
| System.out.print( " Register LoggingMXBean: " ); |
| MBeanServer mbs = MBeanServerFactory.createMBeanServer(); |
| String[] list = new String[0]; |
| |
| try { |
| objectName = new ObjectName(LogManager.LOGGING_MXBEAN_NAME); |
| mBean = LogManager.getLoggingMXBean(); |
| mbs.registerMBean( mBean, objectName ); |
| } |
| catch ( Exception e ) { |
| System.out.println( "FAILED" ); |
| throw e; |
| } |
| System.out.println( "PASSED" ); |
| System.out.println(""); |
| |
| /* |
| * Access our MBean to get the current list of Loggers |
| */ |
| System.out.println( "*******************************" ); |
| System.out.println( "*********** Phase 2 ***********" ); |
| System.out.println( "*******************************" ); |
| System.out.println( " Test Logger Name retrieval (getLoggerNames) " ); |
| // check that Level object are returned properly |
| try { |
| list = (String[]) mbs.getAttribute( objectName, "LoggerNames" ); |
| } |
| catch ( Exception e ) { |
| System.out.println(" : FAILED" ); |
| throw e; |
| } |
| |
| /* |
| * Dump the list of Loggers already present, if any |
| */ |
| Object[] params = new Object[1]; |
| String[] signature = new String[1]; |
| Level l; |
| |
| if ( list == null ) { |
| System.out.println(" : PASSED. No Standard Loggers Present" ); |
| System.out.println(""); |
| } |
| else { |
| System.out.println(" : PASSED. There are " + list.length + " Loggers Present" ); |
| System.out.println(""); |
| System.out.println( "*******************************" ); |
| System.out.println( "*********** Phase 2B **********" ); |
| System.out.println( "*******************************" ); |
| System.out.println( " Examine Existing Loggers" ); |
| for ( int i = 0; i < list.length; i++ ) { |
| try { |
| params[0] = list[i]; |
| signature[0] = "java.lang.String"; |
| String levelName = (String) mbs.invoke( objectName, "getLoggerLevel", params, signature ); |
| System.out.println(" : Logger #" + i + " = " + list[i] ); |
| System.out.println(" : Level = " + levelName ); |
| } |
| catch ( Exception e ) { |
| System.out.println(" : FAILED" ); |
| throw e; |
| } |
| } |
| System.out.println(" : PASSED" ); |
| } |
| |
| /* |
| * Create two new loggers to the list of Loggers already present |
| */ |
| System.out.println(""); |
| System.out.println( "*******************************" ); |
| System.out.println( "*********** Phase 3 ***********" ); |
| System.out.println( "*******************************" ); |
| System.out.println( " Create and test new Loggers" ); |
| logger1 = Logger.getLogger( LOGGER_NAME_1 ); |
| logger2 = Logger.getLogger( LOGGER_NAME_2 ); |
| |
| // check that Level object are returned properly |
| try { |
| list = (String[]) mbs.getAttribute( objectName, "LoggerNames" ); |
| } |
| catch ( Exception e ) { |
| System.out.println(" : FAILED" ); |
| throw e; |
| } |
| |
| /* |
| * Check for the existence of our new Loggers |
| */ |
| boolean log1 = false, log2 = false; |
| |
| if ( list == null || list.length < 2 ) { |
| System.out.println(" : FAILED. Could not Detect the presense of the new Loggers" ); |
| throw new RuntimeException( |
| "Could not Detect the presense of the new Loggers"); |
| } |
| else { |
| for ( int i = 0; i < list.length; i++ ) { |
| if ( list[i].equals( LOGGER_NAME_1 ) ) { |
| log1 = true; |
| System.out.println( " : Found new Logger : " + list[i] ); |
| } |
| if ( list[i].equals( LOGGER_NAME_2 ) ) { |
| log2 = true; |
| System.out.println( " : Found new Logger : " + list[i] ); |
| } |
| } |
| if ( log1 && log2 ) |
| System.out.println( " : PASSED." ); |
| else { |
| System.out.println( " : FAILED. Could not Detect the new Loggers." ); |
| throw new RuntimeException( |
| "Could not Detect the presense of the new Loggers"); |
| } |
| } |
| |
| /* |
| * Set a new Logging levels and check that it succeeded |
| */ |
| System.out.println(""); |
| System.out.println( "*******************************" ); |
| System.out.println( "*********** Phase 4 ***********" ); |
| System.out.println( "*******************************" ); |
| System.out.println( " Set and Check the Logger Level" ); |
| log1 = false; |
| log2 = false; |
| try { |
| // Set the level of logger1 to ALL |
| params = new Object[2]; |
| signature = new String[2]; |
| params[0] = LOGGER_NAME_1; |
| params[1] = Level.ALL.getName(); |
| signature[0] = "java.lang.String"; |
| signature[1] = "java.lang.String"; |
| mbs.invoke( objectName, "setLoggerLevel", params, signature ); |
| |
| // Set the level of logger2 to FINER |
| params[0] = LOGGER_NAME_2; |
| params[1] = Level.FINER.getName(); |
| mbs.invoke( objectName, "setLoggerLevel", params, signature ); |
| |
| // Okay read back the Level from Logger1. Should be ALL |
| params = new Object[1]; |
| signature = new String[1]; |
| params[0] = LOGGER_NAME_1; |
| signature[0] = "java.lang.String"; |
| String levelName = (String) mbs.invoke( objectName, "getLoggerLevel", params, signature ); |
| l = Level.parse(levelName); |
| System.out.print(" Logger1: " ); |
| if ( l.equals( Level.ALL ) ) { |
| System.out.println("Level Set to ALL: PASSED" ); |
| log1 = true; |
| } |
| else { |
| System.out.println("Level Set to ALL: FAILED" ); |
| throw new RuntimeException( |
| "Level Set to ALL but returned " + l.toString()); |
| } |
| |
| // Okay read back the Level from Logger2. Should be FINER |
| params = new Object[1]; |
| signature = new String[1]; |
| params[0] = LOGGER_NAME_2; |
| signature[0] = "java.lang.String"; |
| levelName = (String) mbs.invoke( objectName, "getLoggerLevel", params, signature ); |
| l = Level.parse(levelName); |
| System.out.print(" Logger2: " ); |
| if ( l.equals( Level.FINER ) ) { |
| System.out.println("Level Set to FINER: PASSED" ); |
| log2 = true; |
| } |
| else { |
| System.out.println("Level Set to FINER: FAILED" ); |
| throw new RuntimeException( |
| "Level Set to FINER but returned " + l.toString()); |
| } |
| } |
| catch ( Exception e ) { |
| throw e; |
| } |
| |
| System.out.println( "" ); |
| System.out.println( "***************************************************" ); |
| System.out.println( "***************** All Tests Passed ****************" ); |
| System.out.println( "***************************************************" ); |
| } |
| |
| public static void main(String[] argv) throws Exception { |
| new LoggingMXBeanTest(); |
| } |
| } |