| /* | |
| * 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(); | |
| } | |
| } |