1fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.logging.tests.java.util.logging; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.beans.PropertyChangeEvent; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.beans.PropertyChangeListener; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileNotFoundException; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.PrintStream; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.ConsoleHandler; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Handler; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Level; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LogManager; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LogRecord; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Logger; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LoggingPermission; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.logging.tests.java.util.logging.HandlerTest.NullOutputStream; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.logging.tests.java.util.logging.util.EnvironmentHelper; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * add/get logger(dot) 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class LogManagerTest extends TestCase { 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private static final String FOO = "LogManagerTestFoo"; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager mockManager; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager manager = LogManager.getLogManager(); 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MockPropertyChangeListener listener; 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties props; 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private static String className = LogManagerTest.class.getName(); 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static Handler handler = null; 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static final String CONFIG_CLASS = "java.util.logging.config.class"; 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static final String CONFIG_FILE = "java.util.logging.config.file"; 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static final String MANAGER_CLASS = "java.util.logging.config.manager"; 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static final String clearPath = System.getProperty("clearpath"); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see TestCase#setUp() 728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath protected void setUp() throws Exception { 748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.setUp(); 758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager = new MockLogManager(); 768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath listener = new MockPropertyChangeListener(); 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath handler = new MockHandler(); 788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props = initProps(); 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static Properties initProps() throws Exception { 828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties props = new Properties(); 838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("handlers", className + "$MockHandler " + className 848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockHandler"); 858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("java.util.logging.FileHandler.pattern", "%h/java%u.log"); 868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("java.util.logging.FileHandler.limit", "50000"); 878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("java.util.logging.FileHandler.count", "5"); 888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("java.util.logging.FileHandler.formatter", 898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.XMLFormatter"); 908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put(".level", "FINE"); 918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("java.util.logging.ConsoleHandler.level", "OFF"); 928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("java.util.logging.ConsoleHandler.formatter", 938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.SimpleFormatter"); 948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("LogManagerTestFoo.handlers", "java.util.logging.ConsoleHandler"); 958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath props.put("LogManagerTestFoo.level", "WARNING"); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return props; 978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see TestCase#tearDown() 1018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath protected void tearDown() throws Exception { 1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.tearDown(); 1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath handler = null; 1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddGetLogger() { 1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger log = new MockLogger(FOO, null); 1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = mockManager.getLogger(FOO); 1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo); 1118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(log)); 1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath foo = mockManager.getLogger(FOO); 1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, log); 1148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getParent()); 1158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 1178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.addLogger(null); 1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail("add null should throw NullPointerException"); 1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NullPointerException e) { 1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.getLogger(null); 1248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail("get null should throw NullPointerException"); 1258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NullPointerException e) { 1268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(mockManager.getLogger("bad name")); 1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Enumeration<String> enumar = mockManager.getLoggerNames(); 1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int i = 0; 1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath while (enumar.hasMoreElements()) { 1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath String name = (String) enumar.nextElement(); 1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath i++; 1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(FOO, name); 1368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(i, 1); 1388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddGetLogger_duplicateName() { 1418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // add logger with duplicate name has no effect 1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger(FOO, null); 1438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo2 = new MockLogger(FOO, null); 1448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(foo)); 1458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, mockManager.getLogger(FOO)); 1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertFalse(mockManager.addLogger(foo2)); 1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, mockManager.getLogger(FOO)); 1488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Enumeration<String> enumar = mockManager.getLoggerNames(); 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int i = 0; 1508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath while (enumar.hasMoreElements()) { 1518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath enumar.nextElement(); 1528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath i++; 1538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(1, i); 1558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddGetLogger_Hierachy() { 1588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger("testAddGetLogger_Hierachy.foo", null); 1598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger child = new MockLogger("testAddGetLogger_Hierachy.foo.child", 1608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null); 1618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fakeChild = new MockLogger( 1628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testAddGetLogger_Hierachy.foo2.child", null); 1638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger grandson = new MockLogger( 1648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testAddGetLogger_Hierachy.foo.child.grandson", null); 1658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger otherChild = new MockLogger( 1668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testAddGetLogger_Hierachy.foo.child", null); 1678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getParent()); 1688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(child.getParent()); 1698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(grandson.getParent()); 1708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(otherChild.getParent()); 1718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // whenever a logger is added to a LogManager, hierarchy will be updated 1738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // accordingly 1748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(child)); 1758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(child.getParent()); 1768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(fakeChild)); 1788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(fakeChild.getParent()); 1798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(grandson)); 1818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(child, grandson.getParent()); 1828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(foo)); 1848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, child.getParent()); 1858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getParent()); 1868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(fakeChild.getParent()); 1878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // but for non-mock LogManager, foo's parent should be root 1898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(manager.addLogger(foo)); 1908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(manager.getLogger(""), manager.getLogger( 1918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testAddGetLogger_Hierachy.foo").getParent()); 1928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // if we add one logger to two LogManager, parent will changed 1948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(manager.addLogger(otherChild)); 1958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(manager.addLogger(grandson)); 1968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, otherChild.getParent()); 1978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(otherChild, grandson.getParent()); 1988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddLoggerReverseOrder() { 2018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = new MockLogger("testAddLoggerReverseOrder", null); 2028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger("testAddLoggerReverseOrder.foo", null); 2038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooChild = new MockLogger("testAddLoggerReverseOrder.foo.child", 2048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null); 2058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooGrandChild = new MockLogger( 2068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testAddLoggerReverseOrder.foo.child.grand", null); 2078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooGrandChild2 = new MockLogger( 2088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testAddLoggerReverseOrder.foo.child.grand2", null); 2098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger realRoot = manager.getLogger(""); 2118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(fooGrandChild); 2138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(realRoot, fooGrandChild.getParent()); 2148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(root); 2168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, fooGrandChild.getParent()); 2178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(realRoot, root.getParent()); 2188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(foo); 2208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, foo.getParent()); 2218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, fooGrandChild.getParent()); 2228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(fooGrandChild2); 2248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, fooGrandChild2.getParent()); 2258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, fooGrandChild.getParent()); 2268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(fooChild); 2288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(fooChild, fooGrandChild2.getParent()); 2298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(fooChild, fooGrandChild.getParent()); 2308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, fooChild.getParent()); 2318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, foo.getParent()); 2328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(realRoot, root.getParent()); 2338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddSimiliarLogger() { 2368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = new MockLogger("testAddSimiliarLogger", null); 2378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger("testAddSimiliarLogger.foo", null); 2388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger similiarFoo = new MockLogger("testAddSimiliarLogger.fop", null); 2398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooo = new MockLogger("testAddSimiliarLogger.fooo", null); 2408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooChild = new MockLogger("testAddSimiliarLogger.foo.child", 2418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null); 2428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger similiarFooChild = new MockLogger( 2438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testAddSimiliarLogger.fop.child", null); 2448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foooChild = new MockLogger("testAddSimiliarLogger.fooo.child", 2458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null); 2468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(root); 2488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(fooChild); 2498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(similiarFooChild); 2508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(foooChild); 2518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, fooChild.getParent()); 2528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, similiarFooChild.getParent()); 2538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, foooChild.getParent()); 2548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(foo); 2568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, fooChild.getParent()); 2578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, similiarFooChild.getParent()); 2588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, foooChild.getParent()); 2598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(similiarFoo); 2618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, fooChild.getParent()); 2628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(similiarFoo, similiarFooChild.getParent()); 2638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, foooChild.getParent()); 2648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(fooo); 2668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(fooo, foooChild.getParent()); 2678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddGetLogger_nameWithSpace() { 2708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger(FOO, null); 2718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooBeforeSpace = new MockLogger(FOO + " ", null); 2728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooAfterSpace = new MockLogger(" " + FOO, null); 2738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooWithBothSpace = new MockLogger(" " + FOO + " ", null); 2748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(foo)); 2758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(fooBeforeSpace)); 2768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(fooAfterSpace)); 2778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(fooWithBothSpace)); 2788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, mockManager.getLogger(FOO)); 2808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(fooBeforeSpace, mockManager.getLogger(FOO + " ")); 2818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(fooAfterSpace, mockManager.getLogger(" " + FOO)); 2828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(fooWithBothSpace, mockManager.getLogger(" " + FOO + " ")); 2838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddGetLogger_addRoot() throws IOException { 2868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger(FOO, null); 2878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fooChild = new MockLogger(FOO + ".child", null); 2888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger other = new MockLogger("other", null); 2898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = new MockLogger("", null); 2908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getParent()); 2918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(root.getParent()); 2928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(other.getParent()); 2938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // add root to mock logmanager and it works as "root" logger 2958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(foo)); 2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(other)); 2978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(fooChild)); 2988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getParent()); 2998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(other.getParent()); 3008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(foo, fooChild.getParent()); 3018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(root)); 3038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, foo.getParent()); 3048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, other.getParent()); 3058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(root.getParent()); 3068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // try to add root logger to non-mock LogManager, no effect 3088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertFalse(manager.addLogger(root)); 3098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotSame(root, manager.getLogger("")); 3108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testDefaultLoggerProperties() throws Exception { 3138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // mock LogManager has no default logger 3148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(mockManager.getLogger("")); 3158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(mockManager.getLogger("global")); 3168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // non-mock LogManager has two default logger 3188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger global = manager.getLogger("global"); 3198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = manager.getLogger(""); 3208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(global, Logger.global); 3228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, global.getParent()); 3238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // root properties 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 3268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(root.getFilter()); 3278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(2, root.getHandlers().length); 3288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.FINE, root.getLevel()); 3298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("", root.getName()); 3308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root.getParent(), null); 3318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(root.getResourceBundle()); 3328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(root.getResourceBundleName()); 3338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(root.getUseParentHandlers()); 3348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testMockGetProperty() throws Exception { 3388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // mock manager doesn't read configuration until you call 3398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // readConfiguration() 3408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = new MockLogger("", null); 3418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(root)); 3428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath root = mockManager.getLogger(""); 3438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(mockManager); 3448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, root.getHandlers().length); 3458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(root.getLevel()); 3468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 3478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.FINE, root.getLevel()); 3488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkProperty(mockManager); 3498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.reset(); 3508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(mockManager); 3518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 3528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, mockManager.getLogger("").getHandlers().length); 3538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testGetProperty() throws SecurityException, IOException { 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// //FIXME: move it to exec 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Logger root = manager.getLogger(""); 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes//// checkProperty(manager); 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertEquals(Level.FINE, root.getLevel()); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertEquals(2, root.getHandlers().length); 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // but non-mock manager DO read it from the very beginning 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Logger root = manager.getLogger(""); 3658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 3668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkProperty(manager); 3678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(2, root.getHandlers().length); 3688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.FINE, root.getLevel()); 3698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.reset(); 3718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 3728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, root.getHandlers().length); 3738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 3748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 3758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testReadConfiguration_null() throws SecurityException, 3788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath IOException { 3798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 3808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(null); 3818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail("should throw null pointer exception"); 3828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NullPointerException e) { 3838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testReadConfiguration() throws SecurityException, 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes IOException { 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockConfigLogManager lm = new MockConfigLogManager(); 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(lm.isCalled); 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes lm.readConfiguration(); 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(lm.isCalled); 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private static void checkPropertyNull(LogManager m) { 3988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertNull(m.getProperty(".level")); 3998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(m.getProperty("java.util.logging.FileHandler.limit")); 4008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(m.getProperty("java.util.logging.ConsoleHandler.formatter")); 4018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertNull(m.getProperty("handlers")); 4028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(m.getProperty("java.util.logging.FileHandler.count")); 4038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(m.getProperty("com.xyz.foo.level")); 4048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(m.getProperty("java.util.logging.FileHandler.formatter")); 4058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(m.getProperty("java.util.logging.ConsoleHandler.level")); 4068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(m.getProperty("java.util.logging.FileHandler.pattern")); 4078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private static void checkProperty(LogManager m) { 4108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals(m.getProperty(".level"), "INFO"); 4118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(m.getProperty("java.util.logging.FileHandler.limit"), 4128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "50000"); 4138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(m 4148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath .getProperty("java.util.logging.ConsoleHandler.formatter"), 4158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.SimpleFormatter"); 4168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals(m.getProperty("handlers"), 4178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // "java.util.logging.ConsoleHandler"); 4188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(m.getProperty("java.util.logging.FileHandler.count"), "5"); 4198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(m.getProperty("LogManagerTestFoo.level"), "WARNING"); 4208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(m.getProperty("java.util.logging.FileHandler.formatter"), 4218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.XMLFormatter"); 4228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(m.getProperty("java.util.logging.ConsoleHandler.level"), 4238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "OFF"); 4248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(m.getProperty("java.util.logging.FileHandler.pattern"), 4258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "%h/java%u.log"); 4268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// public void testReadConfiguration() throws SecurityException, IOException { 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// FIXME: move the support_exec 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Logger foo = new MockLogger("foo", null); 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertNull(foo.getLevel()); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertTrue(mockManager.addLogger(foo)); 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Logger fo = new MockLogger("foo2", null); 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// fo.setLevel(Level.ALL); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertTrue(mockManager.addLogger(fo)); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Handler h = new ConsoleHandler(); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// Level l = h.getLevel(); 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertNotSame(Level.OFF, h.getLevel()); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// // read configuration 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// mockManager.readConfiguration(); 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// // level DO has effect 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertEquals(Level.WARNING, foo.getLevel()); 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// // for non specified logger, level is reset to null 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertNull(fo.getLevel()); 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// // read properties don't affect handler 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertNotSame(Level.OFF, h.getLevel()); 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertSame(l, h.getLevel()); 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// } 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Class under test for void readConfiguration(InputStream) 4578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testReadConfigurationInputStream() throws IOException { 4598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // mock LogManager 4608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath InputStream stream = EnvironmentHelper.PropertiesToInputStream(props); 4618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger(FOO, null); 4638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getLevel()); 4648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(foo)); 4658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger fo = new MockLogger("LogManagerTestFoo2", null); 4678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fo.setLevel(Level.ALL); 4688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(fo)); 4698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Handler h = new ConsoleHandler(); 4718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Level l = h.getLevel(); 4728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotSame(Level.OFF, h.getLevel()); 4738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // read configuration from stream 4758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(stream); 4768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath stream.close(); 4778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // level DO has effect 4798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.WARNING, foo.getLevel()); 4808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // for non specified logger, level is reset to null 4828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(fo.getLevel()); 4838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // read properties don't affect handler 4858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotSame(Level.OFF, h.getLevel()); 4868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(l, h.getLevel()); 4878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testReadConfigurationInputStream_null() 4908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath throws SecurityException, IOException { 4918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 4928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(null); 4938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail("should throw null pointer exception"); 4948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NullPointerException e) { 4958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testReadConfigurationInputStream_root() throws IOException { 5008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath InputStream stream = EnvironmentHelper.PropertiesToInputStream(props); 5018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 5028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger logger = new MockLogger( 5048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testReadConfigurationInputStream_root.foo", null); 5058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = manager.getLogger(""); 5068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger logger2 = Logger 5078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath .getLogger("testReadConfigurationInputStream_root.foo2"); 5088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.addLogger(logger); 5108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(logger.getLevel()); 5118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, logger.getHandlers().length); 5128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, logger.getParent()); 5138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(logger2.getLevel()); 5158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, logger2.getHandlers().length); 5168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(root, logger2.getParent()); 5178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // if (!hasConfigClass) { 5188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.FINE, root.getLevel()); 5198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(2, root.getHandlers().length); 5208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // } 5218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // after read stream 5238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(stream); 5248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.FINE, root.getLevel()); 5258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(2, root.getHandlers().length); 5268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(logger.getLevel()); 5278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, logger.getHandlers().length); 5288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath stream.close(); 5298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testReadConfigurationUpdatesRootLoggersHandlers() 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties properties = new Properties(); 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager.getLogManager().readConfiguration( 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EnvironmentHelper.PropertiesToInputStream(properties)); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Logger root = Logger.getLogger(""); 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, root.getHandlers().length); 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes properties.put("handlers", "java.util.logging.ConsoleHandler"); 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager.getLogManager().readConfiguration( 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EnvironmentHelper.PropertiesToInputStream(properties)); 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, root.getHandlers().length); 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testReadConfigurationDoesNotUpdateOtherLoggers() 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties properties = new Properties(); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager.getLogManager().readConfiguration( 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EnvironmentHelper.PropertiesToInputStream(properties)); 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Logger logger = Logger.getLogger("testReadConfigurationDoesNotUpdateOtherLoggers"); 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, logger.getHandlers().length); 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes properties.put("testReadConfigurationDoesNotUpdateOtherLoggers.handlers", 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.util.logging.ConsoleHandler"); 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager.getLogManager().readConfiguration( 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EnvironmentHelper.PropertiesToInputStream(properties)); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, logger.getHandlers().length); 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddRemovePropertyChangeListener() throws Exception { 5658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MockPropertyChangeListener listener1 = new MockPropertyChangeListener(); 5668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MockPropertyChangeListener listener2 = new MockPropertyChangeListener(); 5678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // add same listener1 two times 5688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.addPropertyChangeListener(listener1); 5698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.addPropertyChangeListener(listener1); 5708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.addPropertyChangeListener(listener2); 5718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(listener1.getEvent()); 5738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(listener2.getEvent()); 5748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 5758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // if (!hasConfigClass) { 5768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotNull(listener1.getEvent()); 5778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotNull(listener2.getEvent()); 5788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // } 5798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath listener1.reset(); 5818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath listener2.reset(); 5828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // remove listener1, no effect 5848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.removePropertyChangeListener(listener1); 5858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(EnvironmentHelper 5868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath .PropertiesToInputStream(props)); 5878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotNull(listener1.getEvent()); 5888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotNull(listener2.getEvent()); 5898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath listener1.reset(); 5908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath listener2.reset(); 5918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // remove listener1 again and it works 5938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.removePropertyChangeListener(listener1); 5948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(EnvironmentHelper 5958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath .PropertiesToInputStream(props)); 5968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(listener1.getEvent()); 5978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotNull(listener2.getEvent()); 5988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath listener2.reset(); 5998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // reset don't produce event 6018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.reset(); 6028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(listener2.getEvent()); 6038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.removePropertyChangeListener(listener2); 6058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 6068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(listener1.getEvent()); 6078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(listener2.getEvent()); 6088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 6098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testAddRemovePropertyChangeListener_null() { 6118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // seems nothing happened 6128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mockManager.addPropertyChangeListener(null); 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NPE"); 6158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NullPointerException e) { 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 6178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.removePropertyChangeListener(null); 6188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 6198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testReset() throws SecurityException, IOException { 6218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // mock LogManager 6228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 6238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNotNull(mockManager.getProperty("handlers")); 6248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger foo = new MockLogger(FOO, null); 6258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getLevel()); 6268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, foo.getHandlers().length); 6278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath foo.setLevel(Level.ALL); 6288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath foo.addHandler(new ConsoleHandler()); 6298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(mockManager.addLogger(foo)); 6308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.WARNING, foo.getLevel()); 6318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(2, foo.getHandlers().length); 6328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // reset 6348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath mockManager.reset(); 6358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // properties is cleared 6378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(mockManager.getProperty("handlers")); 6388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // level is null 6408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(foo.getLevel()); 6418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // handlers are all closed 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, foo.getHandlers().length); 6438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // for root logger 6458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.reset(); 6468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(manager.getProperty("handlers")); 6478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = manager.getLogger(""); 6488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // level reset to info 6498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 6508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // also close root's handler 6518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, root.getHandlers().length); 6528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 6538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 6548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testGlobalPropertyConfig() throws Exception { 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PrintStream err = System.err; 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setErr(new PrintStream(new NullOutputStream())); 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // before add config property, root has two handler 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, manager.getLogger("").getHandlers().length); 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // one valid config class 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className + "$MockValidConfig"); 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, manager.getLogger("").getHandlers().length); 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // two config class take effect orderly 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className + "$MockValidConfig " 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + className + "$MockValidConfig2"); 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, manager.getLogger("").getHandlers().length); 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className + "$MockValidConfig2 " 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + className + "$MockValidConfig"); 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, manager.getLogger("").getHandlers().length); 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // invalid config class which throw exception, just print exception 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // and 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // message 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "$MockInvalidConfigException"); 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // invalid config class without default constructor, just print 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception and message 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "$MockInvalidConfigNoDefaultConstructor"); 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // bad config class name, just print exception and message 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", "badname"); 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // invalid separator, nothing happened 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className + "$MockValidConfig2;" 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + className + "$MockValidConfig"); 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, manager.getLogger("").getHandlers().length); 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className + "$MockValidConfig2;" 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + className + "$MockValidConfig " + className 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "$MockValidConfig"); 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, manager.getLogger("").getHandlers().length); 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // duplicate config class, take effect twice 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className + "$MockValidConfig " 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + className + "$MockValidConfig"); 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, manager.getLogger("").getHandlers().length); 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // invalid config classes mixed with valid config classes, valid 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // config 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // classes take effect 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", "badname " + className 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "$MockValidConfig " + className 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "$MockInvalidConfigNoDefaultConstructor " + className 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "$MockValidConfig"); 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, manager.getLogger("").getHandlers().length); 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // global property take effect before logger specified property 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.setProperty("config", className + "$MockValidConfig"); 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(EnvironmentHelper 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .PropertiesToInputStream(props)); 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Level.FINE, manager.getLogger("").getLevel()); 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setErr(err); 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testValidConfigClass() throws Exception { 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String oldPropertyValue = System.getProperty(CONFIG_CLASS); 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty(CONFIG_CLASS, this.getClass().getName() 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "$ConfigClass"); 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(manager.getLogger("testConfigClass.foo")); 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes manager.readConfiguration(); 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(manager.getLogger("testConfigClass.foo")); 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Logger l = Logger.getLogger("testConfigClass.foo.child"); 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(Level.FINEST, manager.getLogger("").getLevel()); 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, manager.getLogger("").getHandlers().length); 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("testConfigClass.foo", l.getParent().getName()); 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties systemProperties = System.getProperties(); 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (oldPropertyValue != null) { 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes systemProperties.setProperty(CONFIG_CLASS, oldPropertyValue); 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes systemProperties.remove(CONFIG_CLASS); 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testNotExistConfigFile() throws Exception { 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String oldPropertyValue = System.getProperty(CONFIG_FILE); 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.setProperty(CONFIG_FILE, "not.exist.config.file"); 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager.getLogManager().readConfiguration(); 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw FileNotFoundException"); 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (FileNotFoundException e) { 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties systemProperties = System.getProperties(); 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (oldPropertyValue != null) { 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes systemProperties.setProperty(CONFIG_FILE, oldPropertyValue); 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes systemProperties.remove(CONFIG_FILE); 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // regression for HARMONY-3075 7868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testGetLoggingMXBean() throws Exception { 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(LogManager.getLoggingMXBean()); 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 789fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 7908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 7918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * ---------------------------------------------------- 7928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * mock classes 7938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * ---------------------------------------------------- 7948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class ConfigClass { 7968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public ConfigClass() throws Exception { 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager man = LogManager.getLogManager(); 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Properties props = LogManagerTest.initProps(); 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.put("testConfigClass.foo.level", "OFF"); 800fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes props.put("testConfigClass.foo.handlers", "java.util.logging.ConsoleHandler"); 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.put(".level", "FINEST"); 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes props.remove("handlers"); 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes InputStream in = EnvironmentHelper.PropertiesToInputStream(props); 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes man.readConfiguration(in); 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 807fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 8088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockInvalidInitClass { 8098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockInvalidInitClass() { 8108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath throw new RuntimeException(); 8118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class TestInvalidConfigFile { 8158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static void main(String[] args) { 8168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager manager = LogManager.getLogManager(); 8178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = manager.getLogger(""); 8188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 8198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, root.getHandlers().length); 8208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 8218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 8238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(); 8248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 8258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 8268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkProperty(manager); 8288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(root.getHandlers()[0].getLevel()); 8298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(1, root.getHandlers().length); 8308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 8318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.reset(); 8338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkProperty(manager); 8348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, root.getHandlers().length); 8358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 8368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 8378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(); 8388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 8398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 8408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class TestValidConfigFile { 8458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static void main(String[] args) { 8468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager manager = LogManager.getLogManager(); 8478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = manager.getLogger(""); 8488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 8498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(2, root.getHandlers().length); 8508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(root.getHandlers()[0].getLevel(), Level.OFF); 8518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.ALL, root.getLevel()); 8528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 8548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(); 8558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 8568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 8578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 8598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(root.getHandlers()[0].getLevel(), Level.OFF); 8608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(2, root.getHandlers().length); 8618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.ALL, root.getLevel()); 8628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.reset(); 8648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 8658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, root.getHandlers().length); 8668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 8678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 8688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(); 8698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 8708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 8718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class TestMockLogManager { 8768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static void main(String[] args) { 8778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager manager = LogManager.getLogManager(); 8788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(manager instanceof MockLogManager); 8798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class TestValidConfigClass { 8838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static void main(String[] args) { 8848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager manager = LogManager.getLogManager(); 8858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = manager.getLogger(""); 8868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 8878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(1, root.getHandlers().length); 8888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.OFF, root.getLevel()); 8898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 8918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(); 8928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 8938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 8948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 8958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 8968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(1, root.getHandlers().length); 8978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.OFF, root.getLevel()); 8988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 8998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 9008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(); 9018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 9028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 9038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 9058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(1, root.getHandlers().length); 9068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.OFF, root.getLevel()); 9078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.reset(); 9098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath checkPropertyNull(manager); 9108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(0, root.getHandlers().length); 9118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(Level.INFO, root.getLevel()); 9128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 9138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(); 9148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 9158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 9168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockLogger extends Logger { 9218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockLogger(String name, String rbName) { 9228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super(name, rbName); 9238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockLogManager extends LogManager { 9278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockConfigLogManager extends LogManager { 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean isCalled = false; 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void readConfiguration(InputStream ins) throws IOException { 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes isCalled = true; 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.readConfiguration(ins); 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 9388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockHandler extends Handler { 9398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static int number = 0; 9408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockHandler() { 9428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath addNumber(); 9438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // System.out.println(this + ":start:" + number); 9448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private synchronized void addNumber() { 9478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath number++; 9488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void close() { 9518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath minusNumber(); 9528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // System.out.println(this + ":close:" + number); 9538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private synchronized void minusNumber() { 9568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath number--; 9578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void flush() { 9608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // System.out.println(this + ":flush"); 9618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void publish(LogRecord record) { 9648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockValidInitClass { 9698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockValidInitClass() { 9708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 9718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("handlers", className + "$MockHandler"); 9728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put(".level", "OFF"); 9738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath InputStream in = null; 9748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 9758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath in = EnvironmentHelper.PropertiesToInputStream(p); 9768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager manager = LogManager.getLogManager(); 9778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath manager.readConfiguration(in); 9788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 9798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 9808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } finally { 9818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 9828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath in.close(); 9838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 9848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 9898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockValidConfig { 9908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockValidConfig() { 9918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath handler = new MockHandler(); 9928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager manager = LogManager.getLogManager(); 9938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Logger root = null; 9948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath if (null != manager) { 9958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath root = manager.getLogger(""); 9968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } else { 9978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath System.out.println("null manager"); 9988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 9998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath if (null != root) { 10008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath root.addHandler(handler); 10018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath root.setLevel(Level.OFF); 10028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockValidConfig2 { 10078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static Logger root = null; 10098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockValidConfig2() { 10118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath root = LogManager.getLogManager().getLogger(""); 10128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath root.removeHandler(handler); 10138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockInvalidConfigException { 10178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockInvalidConfigException() { 10188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath throw new RuntimeException("invalid config class - throw exception"); 10198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockInvalidConfigNoDefaultConstructor { 10238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockInvalidConfigNoDefaultConstructor(int i) { 10248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath throw new RuntimeException( 10258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "invalid config class - no default constructor"); 10268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockPropertyChangeListener implements 10308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath PropertyChangeListener { 10318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath PropertyChangeEvent event = null; 10338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void propertyChange(PropertyChangeEvent event) { 10358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.event = event; 10368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public PropertyChangeEvent getEvent() { 10398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return event; 10408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void reset() { 10438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath event = null; 10448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 10458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test config class loading 1050fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * java -Djava.util.logging.config.class=badConfigClassName ClassLoadingTest 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 10528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class ClassLoadingTest { 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static void main(String[] args) { 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.currentThread().setContextClassLoader(new MockErrorClassLoader()); 10558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes LogManager.getLogManager(); 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw mock error"); 10588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (MockError e) { 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 10618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static class MockErrorClassLoader extends ClassLoader { 10638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public Class<?> loadClass(String name) { 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new MockError(); 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 10678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 10688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static class MockError extends Error { 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1070fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes } 1071fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 1073