1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.logging.tests.java.util.logging; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Projectimport java.beans.PropertyChangeEvent; 23a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Projectimport java.beans.PropertyChangeListener; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.PrintStream; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Enumeration; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Properties; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.ConsoleHandler; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Handler; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Level; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LogManager; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LogRecord; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Logger; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LoggingPermission; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 382be0c815dda289b09f3bb26f751c124f30eaf612Jesse Wilsonimport dalvik.annotation.KnownFailure; 39fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport junit.framework.TestCase; 40fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 41fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport org.apache.harmony.logging.tests.java.util.logging.HandlerTest.NullOutputStream; 42fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport org.apache.harmony.logging.tests.java.util.logging.util.EnvironmentHelper; 43fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 44fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport dalvik.annotation.SideEffect; 45fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport dalvik.annotation.TestLevel; 46fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport dalvik.annotation.TestTargetClass; 47fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport dalvik.annotation.TestTargetNew; 48fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumannimport dalvik.annotation.TestTargets; 49dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilsonimport tests.util.TestEnvironment; 50fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * add/get logger(dot) 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(LogManager.class) 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class LogManagerTest extends TestCase { 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String FOO = "LogManagerTestFoo"; 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager mockManager; 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project MockPropertyChangeListener listener; 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties props; 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static String className = LogManagerTest.class.getName(); 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static Handler handler = null; 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final String CONFIG_CLASS = "java.util.logging.config.class"; 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final String CONFIG_FILE = "java.util.logging.config.file"; 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final String MANAGER_CLASS = "java.util.logging.config.manager"; 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final SecurityManager securityManager = System.getSecurityManager(); 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final String clearPath = System.getProperty("clearpath"); 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see TestCase#setUp() 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 86a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @Override 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setUp() throws Exception { 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager = new MockLogManager(); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // listener = new MockPropertyChangeListener(); 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new MockHandler(); 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props = new Properties(); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("handlers", className + "$MockHandler " + className + "$MockHandler"); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.pattern", "%h/java%u.log"); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.limit", "50000"); 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.count", "5"); 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.formatter", "java.util.logging.XMLFormatter"); 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put(".level", "FINE"); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.ConsoleHandler.level", "OFF"); 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.ConsoleHandler.formatter","java.util.logging.SimpleFormatter"); 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("LogManagerTestFoo.handlers", "java.util.logging.ConsoleHandler"); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("LogManagerTestFoo.level", "WARNING"); 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see TestCase#tearDown() 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 110a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @Override 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() throws Exception { 112dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson TestEnvironment.reset(); 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.tearDown(); 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = null; 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "LogManager", 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testLogManager() { 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class TestLogManager extends LogManager { 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public TestLogManager() { 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(); 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project TestLogManager tlm = new TestLogManager(); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(tlm.toString()); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testAddGetLogger() { 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger log = new MockLogger(FOO, null); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = mockManager.getLogger(FOO); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo); 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(log)); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project foo = mockManager.getLogger(FOO); 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, log); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getParent()); 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.addLogger(null); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("add null should throw NullPointerException"); 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getLogger(null); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("get null should throw NullPointerException"); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(mockManager.getLogger("bad name")); 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enumeration<String> enumar = mockManager.getLoggerNames(); 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int i = 0; 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (enumar.hasMoreElements()) { 173a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project String name = enumar.nextElement(); 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project i++; 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(FOO, name); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(i, 1); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testAddGetLogger_duplicateName() { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // add logger with duplicate name has no effect 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger(FOO, null); 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo2 = new MockLogger(FOO, null); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(foo)); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, mockManager.getLogger(FOO)); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(mockManager.addLogger(foo2)); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, mockManager.getLogger(FOO)); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enumeration<String> enumar = mockManager.getLoggerNames(); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int i = 0; 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (enumar.hasMoreElements()) { 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enumar.nextElement(); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project i++; 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, i); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testAddGetLogger_Hierachy() { 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger("testAddGetLogger_Hierachy.foo", null); 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger child = new MockLogger("testAddGetLogger_Hierachy.foo.child", null); 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fakeChild = new MockLogger("testAddGetLogger_Hierachy.foo2.child", null); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger grandson = new MockLogger("testAddGetLogger_Hierachy.foo.child.grandson", null); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger otherChild = new MockLogger("testAddGetLogger_Hierachy.foo.child", null); 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getParent()); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(child.getParent()); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(grandson.getParent()); 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(otherChild.getParent()); 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // whenever a logger is added to a LogManager, hierarchy will be updated 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // accordingly 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(child)); 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(child.getParent()); 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fakeChild)); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(fakeChild.getParent()); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(grandson)); 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(child, grandson.getParent()); 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(foo)); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, child.getParent()); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getParent()); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(fakeChild.getParent()); 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // but for non-mock LogManager, foo's parent should be root 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(manager.addLogger(foo)); 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(manager.getLogger(""), manager.getLogger("testAddGetLogger_Hierachy.foo") 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getParent()); 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if we add one logger to two LogManager, parent will changed 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(manager.addLogger(otherChild)); 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(manager.addLogger(grandson)); 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, otherChild.getParent()); 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(otherChild, grandson.getParent()); 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testAddLoggerReverseOrder() { 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = new MockLogger("testAddLoggerReverseOrder", null); 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger("testAddLoggerReverseOrder.foo", null); 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooChild = new MockLogger("testAddLoggerReverseOrder.foo.child", null); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooGrandChild = new MockLogger("testAddLoggerReverseOrder.foo.child.grand", null); 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooGrandChild2 = new MockLogger("testAddLoggerReverseOrder.foo.child.grand2", null); 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger realRoot = manager.getLogger(""); 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(fooGrandChild); 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(realRoot, fooGrandChild.getParent()); 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(root); 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, fooGrandChild.getParent()); 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(realRoot, root.getParent()); 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(foo); 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, foo.getParent()); 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, fooGrandChild.getParent()); 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(fooGrandChild2); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, fooGrandChild2.getParent()); 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, fooGrandChild.getParent()); 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(fooChild); 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooChild, fooGrandChild2.getParent()); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooChild, fooGrandChild.getParent()); 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, fooChild.getParent()); 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, foo.getParent()); 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(realRoot, root.getParent()); 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testAddSimiliarLogger() { 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = new MockLogger("testAddSimiliarLogger", null); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger("testAddSimiliarLogger.foo", null); 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger similiarFoo = new MockLogger("testAddSimiliarLogger.fop", null); 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooo = new MockLogger("testAddSimiliarLogger.fooo", null); 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooChild = new MockLogger("testAddSimiliarLogger.foo.child", null); 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger similiarFooChild = new MockLogger("testAddSimiliarLogger.fop.child", null); 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foooChild = new MockLogger("testAddSimiliarLogger.fooo.child", null); 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(root); 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(fooChild); 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(similiarFooChild); 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(foooChild); 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, fooChild.getParent()); 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, similiarFooChild.getParent()); 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, foooChild.getParent()); 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(foo); 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, fooChild.getParent()); 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, similiarFooChild.getParent()); 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, foooChild.getParent()); 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(similiarFoo); 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, fooChild.getParent()); 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(similiarFoo, similiarFooChild.getParent()); 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, foooChild.getParent()); 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(fooo); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooo, foooChild.getParent()); 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testAddGetLogger_nameWithSpace() { 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger(FOO, null); 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooBeforeSpace = new MockLogger(FOO + " ", null); 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooAfterSpace = new MockLogger(" " + FOO, null); 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooWithBothSpace = new MockLogger(" " + FOO + " ", null); 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(foo)); 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fooBeforeSpace)); 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fooAfterSpace)); 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fooWithBothSpace)); 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, mockManager.getLogger(FOO)); 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooBeforeSpace, mockManager.getLogger(FOO + " ")); 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooAfterSpace, mockManager.getLogger(" " + FOO)); 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooWithBothSpace, mockManager.getLogger(" " + FOO + " ")); 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify NullPointerException", 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 391a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public void testAddGetLogger_addRoot() { 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger(FOO, null); 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooChild = new MockLogger(FOO + ".child", null); 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger other = new MockLogger("other", null); 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = new MockLogger("", null); 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getParent()); 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(root.getParent()); 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(other.getParent()); 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // add root to mock logmanager and it works as "root" logger 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(foo)); 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(other)); 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fooChild)); 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getParent()); 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(other.getParent()); 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, fooChild.getParent()); 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(root)); 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, foo.getParent()); 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, other.getParent()); 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(root.getParent()); 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try to add root logger to non-mock LogManager, no effect 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(manager.addLogger(root)); 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotSame(root, manager.getLogger("")); 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.util.logging.LogManager#addLogger(Logger) 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "addLogger", 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.Logger.class} 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogManager", 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_addLoggerLLogger_Security() throws Exception { 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-1286 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager originalSecurityManager = System.getSecurityManager(); 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new SecurityManager() { 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission perm) { 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }); 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(new MockLogger("mock", null)); 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(new MockLogger("mock.child", null)); 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(originalSecurityManager); 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testDefaultLoggerProperties() throws Exception { 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // mock LogManager has no default logger 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(mockManager.getLogger("")); 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(mockManager.getLogger("global")); 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // non-mock LogManager has two default logger 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger global = manager.getLogger("global"); 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = manager.getLogger(""); 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(global, Logger.global); 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, global.getParent()); 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 471fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann Logger oldGlobal = global; 472fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann Logger oldRoot = root; 473fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // root properties 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 476fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 477fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann global = manager.getLogger("global"); 478fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann root = manager.getLogger(""); 479fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 480fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann assertSame(oldGlobal, global); 481fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann assertSame(oldRoot, root); 482fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(root.getFilter()); 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, root.getHandlers().length); 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.FINE, root.getLevel()); 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", root.getName()); 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root.getParent(), null); 488fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann assertTrue(root.getUseParentHandlers()); 489fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann 490fffac59be4a315be652b9f02f70858171c20c99fJorg Pleumann // The following two fail if other tests are run before this one. 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(root.getResourceBundle()); 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(root.getResourceBundleName()); 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for method public Logger getLogger(String name) 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test covers following usecases: 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * case 1: test default and valid value 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * case 2: test throw NullPointerException 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * case 3: test bad name 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * case 4: check correct tested value 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLoggerNames", 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetLogger() throws Exception { 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // case 1: test default and valid value 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger log = new MockLogger(FOO, null); 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = mockManager.getLogger(FOO); 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("Logger should be null", foo); 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("logger was't registered successfully", mockManager.addLogger(log)); 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project foo = mockManager.getLogger(FOO); 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame("two loggers not refer to the same object", foo, log); 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("logger foo should not haven parent", foo.getParent()); 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // case 2: test throw NullPointerException 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getLogger(null); 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("get null should throw NullPointerException"); 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // case 3: test bad name 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("LogManager should not have logger with unforeseen name", mockManager 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLogger("bad name")); 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // case 4: check correct tested value 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enumeration<String> enumar = mockManager.getLoggerNames(); 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int i = 0; 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (enumar.hasMoreElements()) { 544a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project String name = enumar.nextElement(); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project i++; 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("name logger should be equal to foreseen name", FOO, name); 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("LogManager should contain one element", 1, i); 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for method public Logger getLogger(String name) 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL, 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLoggerNames", 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetLogger_duplicateName() throws Exception { 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test duplicate name 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // add logger with duplicate name has no effect 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.reset(); 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo2 = new MockLogger(FOO, null); 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo3 = new MockLogger(FOO, null); 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.addLogger(foo2); 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo2, mockManager.getLogger(FOO)); 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.addLogger(foo3); 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo2, mockManager.getLogger(FOO)); 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enumeration<String> enumar2 = mockManager.getLoggerNames(); 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int i = 0; 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (enumar2.hasMoreElements()) { 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enumar2.nextElement(); 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project i++; 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, i); 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for method public Logger getLogger(String name) 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetLogger_hierachy() throws Exception { 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test hierachy 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger("testGetLogger_hierachy.foo", null); 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // but for non-mock LogManager, foo's parent should be root 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(manager.addLogger(foo)); 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(manager.getLogger(""), manager.getLogger("testGetLogger_hierachy.foo") 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getParent()); 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for method public Logger getLogger(String name) 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogger", 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetLogger_nameSpace() throws Exception { 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test name with space 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger(FOO, null); 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooBeforeSpace = new MockLogger(FOO + " ", null); 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooAfterSpace = new MockLogger(" " + FOO, null); 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fooWithBothSpace = new MockLogger(" " + FOO + " ", null); 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(foo)); 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fooBeforeSpace)); 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fooAfterSpace)); 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fooWithBothSpace)); 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(foo, mockManager.getLogger(FOO)); 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooBeforeSpace, mockManager.getLogger(FOO + " ")); 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooAfterSpace, mockManager.getLogger(" " + FOO)); 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(fooWithBothSpace, mockManager.getLogger(" " + FOO + " ")); 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for method public void checkAccess() throws SecurityException 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "checkAccess", 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogManager", 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testCheckAccess() { 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.checkAccess(); 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("securityException should not be thrown"); 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManagerLogPermission()); 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.addLogger(new MockLogger("abc", null)); 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getLogger(""); 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getLoggerNames(); 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getProperty(".level"); 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager(); 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.checkAccess(); 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw securityException"); 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(securityManager); 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "checkAccess", 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "reset", 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLogManager", 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 700a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project ), 701a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @TestTargetNew( 702a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 703a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project notes = "Verifies SecurityException.", 704a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project method = "addPropertyChangeListener", 705a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project args = {java.beans.PropertyChangeListener.class} 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testLoggingPermission() throws IOException { 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockSecurityManagerLogPermission()); 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.addLogger(new MockLogger("abc", null)); 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getLogger(""); 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getLoggerNames(); 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.getProperty(".level"); 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager(); 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.checkAccess(); 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw securityException"); 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(); 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(null); 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 735a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project try { 736a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager 737a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project .addPropertyChangeListener(new MockPropertyChangeListener()); 738a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project fail("should throw SecurityException"); 739a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } catch (SecurityException e) { 740a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 741a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project try { 742a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.addPropertyChangeListener(null); 743a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project fail("should throw NPE"); 744a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } catch (NullPointerException e) { 745a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 746a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project try { 747a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.removePropertyChangeListener(null); 748a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project fail("should throw SecurityException"); 749a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } catch (SecurityException e) { 750a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.reset(); 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw SecurityException"); 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(securityManager); 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getProperty", 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMockGetProperty() throws Exception { 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // mock manager doesn't read configuration until you call 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // readConfiguration() 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = new MockLogger("", null); 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(root)); 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project root = mockManager.getLogger(""); 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(mockManager); 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, root.getHandlers().length); 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(root.getLevel()); 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.FINE, root.getLevel()); 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkProperty(mockManager); 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.reset(); 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(mockManager); 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, mockManager.getLogger("").getHandlers().length); 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getProperty", 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetProperty() throws SecurityException, IOException { 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = manager.getLogger(""); 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkProperty(manager); 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, root.getHandlers().length); 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.FINE, root.getLevel()); 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, root.getHandlers().length); 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReadConfiguration_null() throws SecurityException, IOException { 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(null); 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw null pointer exception"); 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static void checkPropertyNull(LogManager m) { 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertNull(m.getProperty(".level")); 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(m.getProperty("java.util.logging.FileHandler.limit")); 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(m.getProperty("java.util.logging.ConsoleHandler.formatter")); 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertNull(m.getProperty("handlers")); 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(m.getProperty("java.util.logging.FileHandler.count")); 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(m.getProperty("com.xyz.foo.level")); 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(m.getProperty("java.util.logging.FileHandler.formatter")); 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(m.getProperty("java.util.logging.ConsoleHandler.level")); 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(m.getProperty("java.util.logging.FileHandler.pattern")); 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 8412be0c815dda289b09f3bb26f751c124f30eaf612Jesse Wilson @KnownFailure("We're ignoring a missing logging.properties. See bug 2487364") 8428d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson public void testReadConfiguration() throws SecurityException, 8438d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson IOException { 8448d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson 8458d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson MockConfigLogManager lm = new MockConfigLogManager(); 8468d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson assertFalse(lm.isCalled); 8478d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson 8488d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson lm.readConfiguration(); 8498d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson assertTrue(lm.isCalled); 8508d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson } 8518d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static void checkProperty(LogManager m) { 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertEquals(m.getProperty(".level"), "INFO"); 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(m.getProperty("java.util.logging.FileHandler.limit"), "50000"); 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(m.getProperty("java.util.logging.ConsoleHandler.formatter"), 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.SimpleFormatter"); 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertEquals(m.getProperty("handlers"), 858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // "java.util.logging.ConsoleHandler"); 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(m.getProperty("java.util.logging.FileHandler.count"), "5"); 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(m.getProperty("LogManagerTestFoo.level"), "WARNING"); 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(m.getProperty("java.util.logging.FileHandler.formatter"), 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "java.util.logging.XMLFormatter"); 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(m.getProperty("java.util.logging.ConsoleHandler.level"), "OFF"); 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(m.getProperty("java.util.logging.FileHandler.pattern"), "%h/java%u.log"); 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // public void testReadConfiguration() throws SecurityException, IOException { 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // FIXME: move the support_exec 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Logger foo = new MockLogger("foo", null); 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertNull(foo.getLevel()); 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertTrue(mockManager.addLogger(foo)); 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Logger fo = new MockLogger("foo2", null); 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // fo.setLevel(Level.ALL); 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertTrue(mockManager.addLogger(fo)); 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Handler h = new ConsoleHandler(); 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Level l = h.getLevel(); 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertNotSame(Level.OFF, h.getLevel()); 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // // read configuration 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // mockManager.readConfiguration(); 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // // level DO has effect 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertEquals(Level.WARNING, foo.getLevel()); 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // // for non specified logger, level is reset to null 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertNull(fo.getLevel()); 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // // read properties don't affect handler 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertNotSame(Level.OFF, h.getLevel()); 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assertSame(l, h.getLevel()); 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Class under test for void readConfiguration(InputStream) 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReadConfigurationInputStream() throws IOException { 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger(FOO, null); 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getLevel()); 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(foo)); 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger fo = new MockLogger(FOO + "2", null); 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fo.setLevel(Level.ALL); 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(fo)); 912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Handler h = new ConsoleHandler(); 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Level l = h.getLevel(); 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // read configuration from stream 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream stream = EnvironmentHelper.PropertiesToInputStream(props); 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(stream); 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project stream.close(); 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // level DOES have an effect on LogManagerTestFoo 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.WARNING, foo.getLevel()); 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // for non specified logger, level is reset to null 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(fo.getLevel()); 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // read properties don't affect handler 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Level.INFO, h.getLevel()); 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(l, h.getLevel()); 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies NullPointerException.", 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReadConfigurationInputStream_null() throws SecurityException, IOException { 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(null); 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw null pointer exception"); 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IOException.", 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReadConfigurationInputStream_IOException_1parm() throws SecurityException { 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(new MockInputStream()); 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IOException"); 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //ignore 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReadConfigurationInputStream_root() throws IOException { 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger logger = new MockLogger("testReadConfigurationInputStream_root.foo", null); 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = manager.getLogger(""); 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger logger2 = Logger.getLogger("testReadConfigurationInputStream_root.foo2"); 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.addLogger(logger); 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(logger.getLevel()); 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, logger.getHandlers().length); 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, logger.getParent()); 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(logger2.getLevel()); 982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, logger2.getHandlers().length); 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(root, logger2.getParent()); 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if (!hasConfigClass) { 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.FINE, root.getLevel()); 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, root.getHandlers().length); 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // after read stream 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream stream = EnvironmentHelper.PropertiesToInputStream(props); 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(stream); 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project stream.close(); 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.FINE, root.getLevel()); 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, root.getHandlers().length); 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(logger.getLevel()); 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, logger.getHandlers().length); 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1000b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson public void testReadConfigurationUpdatesRootLoggersHandlers() 1001b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson throws IOException { 1002b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson Properties properties = new Properties(); 1003b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson LogManager.getLogManager().readConfiguration( 1004b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson EnvironmentHelper.PropertiesToInputStream(properties)); 1005b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1006b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson Logger root = Logger.getLogger(""); 1007b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson assertEquals(0, root.getHandlers().length); 1008b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1009b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson properties.put("handlers", "java.util.logging.ConsoleHandler"); 1010b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson LogManager.getLogManager().readConfiguration( 1011b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson EnvironmentHelper.PropertiesToInputStream(properties)); 1012b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1013b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson assertEquals(1, root.getHandlers().length); 1014b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson } 1015b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1016b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson public void testReadConfigurationDoesNotUpdateOtherLoggers() 1017b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson throws IOException { 1018b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson Properties properties = new Properties(); 1019b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson LogManager.getLogManager().readConfiguration( 1020b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson EnvironmentHelper.PropertiesToInputStream(properties)); 1021b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1022b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson Logger logger = Logger.getLogger("testReadConfigurationDoesNotUpdateOtherLoggers"); 1023b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson assertEquals(0, logger.getHandlers().length); 1024b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1025b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson properties.put("testReadConfigurationDoesNotUpdateOtherLoggers.handlers", 1026b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson "java.util.logging.ConsoleHandler"); 1027b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson LogManager.getLogManager().readConfiguration( 1028b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson EnvironmentHelper.PropertiesToInputStream(properties)); 1029b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1030b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson assertEquals(0, logger.getHandlers().length); 1031b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson } 1032b2721408f3f6a83ffb16f8c3321235bb4415c20eJesse Wilson 1033a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @TestTargets({ 1034a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @TestTargetNew( 1035a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1036a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project notes = "", 1037a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project method = "addPropertyChangeListener", 1038a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project args = {java.beans.PropertyChangeListener.class} 1039a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project ), 1040a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @TestTargetNew( 1041a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1042a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project notes = "", 1043a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project method = "removePropertyChangeListener", 1044a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project args = {java.beans.PropertyChangeListener.class} 1045a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project ) 1046a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project }) 1047a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public void testAddRemovePropertyChangeListener() throws Exception { 1048a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project MockPropertyChangeListener listener1 = new MockPropertyChangeListener(); 1049a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project MockPropertyChangeListener listener2 = new MockPropertyChangeListener(); 1050a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project // add same listener1 two times 1051a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.addPropertyChangeListener(listener1); 1052a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.addPropertyChangeListener(listener1); 1053a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.addPropertyChangeListener(listener2); 1054a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1055a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNull(listener1.getEvent()); 1056a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNull(listener2.getEvent()); 1057a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1058a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project // if (!hasConfigClass) { 1059a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNotNull(listener1.getEvent()); 1060a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNotNull(listener2.getEvent()); 1061a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project // } 1062a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1063a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project listener1.reset(); 1064a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project listener2.reset(); 1065a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1066a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project // remove listener1, no effect 1067a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.removePropertyChangeListener(listener1); 1068a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.readConfiguration(EnvironmentHelper 1069a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project .PropertiesToInputStream(props)); 1070a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNotNull(listener1.getEvent()); 1071a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNotNull(listener2.getEvent()); 1072a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project listener1.reset(); 1073a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project listener2.reset(); 1074a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1075a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project // remove listener1 again and it works 1076a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.removePropertyChangeListener(listener1); 1077a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.readConfiguration(EnvironmentHelper 1078a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project .PropertiesToInputStream(props)); 1079a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNull(listener1.getEvent()); 1080a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNotNull(listener2.getEvent()); 1081a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project listener2.reset(); 1082a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1083a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project // reset don't produce event 1084a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.reset(); 1085a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNull(listener2.getEvent()); 1086a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1087a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.removePropertyChangeListener(listener2); 1088a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1089a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNull(listener1.getEvent()); 1090a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project assertNull(listener2.getEvent()); 1091a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 1092a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1093a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @TestTargets({ 1094a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @TestTargetNew( 1095a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1096a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project notes = "", 1097a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project method = "addPropertyChangeListener", 1098a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project args = {java.beans.PropertyChangeListener.class} 1099a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project ), 1100a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project @TestTargetNew( 1101a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1102a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project notes = "", 1103a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project method = "removePropertyChangeListener", 1104a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project args = {java.beans.PropertyChangeListener.class} 1105a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project ) 1106a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project }) 1107a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public void testAddRemovePropertyChangeListener_null() { 1108a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project // seems nothing happened 1109a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project try{ 1110a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.addPropertyChangeListener(null); 1111a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project fail("Should throw NPE"); 1112a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project }catch(NullPointerException e){ 1113a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 1114a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project mockManager.removePropertyChangeListener(null); 1115a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify SecurityException.", 1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "reset", 1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReset() throws SecurityException, IOException { 1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // mock LogManager 1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(mockManager.getProperty("handlers")); 1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger foo = new MockLogger(FOO, null); 1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getLevel()); 1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, foo.getHandlers().length); 1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project foo.setLevel(Level.ALL); 1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project foo.addHandler(new ConsoleHandler()); 1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(mockManager.addLogger(foo)); 1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.WARNING, foo.getLevel()); 1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, foo.getHandlers().length); 1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // reset 1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mockManager.reset(); 1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // properties is cleared 1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(mockManager.getProperty("handlers")); 1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // level is null 1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(foo.getLevel()); 1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // handlers are all closed 1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, foo.getHandlers().length); 1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // for root logger 1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(manager.getProperty("handlers")); 1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = manager.getLogger(""); 1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // level reset to info 1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // also close root's handler 1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, root.getHandlers().length); 1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify SecurityException.", 1161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 1162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.InputStream.class} 1163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGlobalPropertyConfig() throws Exception { 1165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PrintStream err = System.err; 1166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setErr(new PrintStream(new NullOutputStream())); 1168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // before add config property, root has two handler 1169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, manager.getLogger("").getHandlers().length); 1171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // one valid config class 1173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockValidConfig"); 1174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(3, manager.getLogger("").getHandlers().length); 1176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // two config class take effect orderly 1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockValidConfig " + className 1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockValidConfig2"); 1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, manager.getLogger("").getHandlers().length); 1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockValidConfig2 " + className 1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockValidConfig"); 1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(3, manager.getLogger("").getHandlers().length); 1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // invalid config class which throw exception, just print exception 1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // and 1190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // message 1191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockInvalidConfigException"); 1192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // invalid config class without default constructor, just print 1195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // exception and message 1196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockInvalidConfigNoDefaultConstructor"); 1197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // bad config class name, just print exception and message 1200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", "badname"); 1201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // invalid separator, nothing happened 1204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockValidConfig2;" + className 1205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockValidConfig"); 1206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, manager.getLogger("").getHandlers().length); 1208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockValidConfig2;" + className 1209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockValidConfig " + className + "$MockValidConfig"); 1210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(3, manager.getLogger("").getHandlers().length); 1212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // duplicate config class, take effect twice 1214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockValidConfig " + className 1215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockValidConfig"); 1216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(4, manager.getLogger("").getHandlers().length); 1218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // invalid config classes mixed with valid config classes, valid 1220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // config 1221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // classes take effect 1222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", "badname " + className + "$MockValidConfig " + className 1223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockInvalidConfigNoDefaultConstructor " + className + "$MockValidConfig"); 1224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(4, manager.getLogger("").getHandlers().length); 1226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // global property take effect before logger specified property 1228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.setProperty("config", className + "$MockValidConfig"); 1229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper.PropertiesToInputStream(props)); 1230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.FINE, manager.getLogger("").getLevel()); 1231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setErr(err); 1233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "readConfiguration", 1241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testValidConfigClass() throws Exception { 1244dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson // System.setProperty("java.util.logging.config.class", "org.apache.harmony.logging.tests.java.util.logging.LogManagerTest$ConfigClass"); 1245dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson System.setProperty("java.util.logging.config.class", this.getClass().getName() 1246dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson + "$ConfigClass"); 1247dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson assertNull(manager.getLogger("testConfigClass.foo")); 1248dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson 1249dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson manager.readConfiguration(); 1250dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson assertNull(manager.getLogger("testConfigClass.foo")); 1251dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson Logger l = Logger.getLogger("testConfigClass.foo.child"); 1252dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson assertSame(Level.FINEST, manager.getLogger("").getLevel()); 1253dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson assertEquals(0, manager.getLogger("").getHandlers().length); 1254dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson assertEquals("testConfigClass.foo", l.getParent().getName()); 1255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * ---------------------------------------------------- 1259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * mock classes 1260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * ---------------------------------------------------- 1261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class ConfigClass { 1265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ConfigClass() throws Exception { 1266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager man = LogManager.getLogManager(); 1267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties props = new Properties(); 1268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("handlers", className + "$MockHandler " + className + "$MockHandler"); 1269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.pattern", "%h/java%u.log"); 1270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.limit", "50000"); 1271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.count", "5"); 1272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.formatter", "java.util.logging.XMLFormatter"); 1273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put(".level", "FINE"); 1274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.ConsoleHandler.level", "OFF"); 1275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.ConsoleHandler.formatter","java.util.logging.SimpleFormatter"); 1276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("LogManagerTestFoo.handlers", "java.util.logging.ConsoleHandler"); 1277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("LogManagerTestFoo.level", "WARNING"); 1278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("testConfigClass.foo.level", "OFF"); 1279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("testConfigClass.foo.handlers", "java.util.logging.ConsoleHandler"); 1280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put(".level", "FINEST"); 1281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.remove("handlers"); 1282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream in = EnvironmentHelper.PropertiesToInputStream(props); 1283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project man.readConfiguration(in); 1284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockInvalidInitClass { 1288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockInvalidInitClass() { 1289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new RuntimeException(); 1290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class TestInvalidConfigFile { 1294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void main(String[] args) { 1295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 1296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = manager.getLogger(""); 1297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, root.getHandlers().length); 1299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 1300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(); 1303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkProperty(manager); 1307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(root.getHandlers()[0].getLevel()); 1308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, root.getHandlers().length); 1309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 1310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkProperty(manager); 1313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, root.getHandlers().length); 1314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 1315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(); 1317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class TestValidConfigFile { 1325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void main(String[] args) { 1326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 1327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = manager.getLogger(""); 1328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, root.getHandlers().length); 1330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(root.getHandlers()[0].getLevel(), Level.OFF); 1331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.ALL, root.getLevel()); 1332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(); 1335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(root.getHandlers()[0].getLevel(), Level.OFF); 1340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, root.getHandlers().length); 1341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.ALL, root.getLevel()); 1342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, root.getHandlers().length); 1346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 1347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(); 1349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class TestMockLogManager { 1357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void main(String[] args) { 1358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 1359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(manager instanceof MockLogManager); 1360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class TestValidConfigClass { 1364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void main(String[] args) { 1365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 1366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = manager.getLogger(""); 1367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, root.getHandlers().length); 1369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.OFF, root.getLevel()); 1370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(); 1373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, root.getHandlers().length); 1378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.OFF, root.getLevel()); 1379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(); 1382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, root.getHandlers().length); 1387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.OFF, root.getLevel()); 1388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project checkPropertyNull(manager); 1391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, root.getHandlers().length); 1392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.INFO, root.getLevel()); 1393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(); 1395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 1399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockLogger extends Logger { 1403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockLogger(String name, String rbName) { 1404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(name, rbName); 1405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockLogManager extends LogManager { 1409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 14118d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson public static class MockConfigLogManager extends LogManager { 14128d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson public boolean isCalled = false; 14138d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson 14148d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson public void readConfiguration(InputStream ins) throws IOException { 14158d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson isCalled = true; 14168d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson super.readConfiguration(ins); 14178d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson } 14188d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson } 14198d17411a0bf88b323dea8b87508779f100b5e334Jesse Wilson 1420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockHandler extends Handler { 1421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static int number = 0; 1422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockHandler() { 1424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project addNumber(); 1425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // System.out.println(this + ":start:" + number); 1426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private synchronized void addNumber() { 1429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project number++; 1430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void close() { 1433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project minusNumber(); 1434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // System.out.println(this + ":close:" + number); 1435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private synchronized void minusNumber() { 1438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project number--; 1439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void flush() { 1442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // System.out.println(this + ":flush"); 1443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void publish(LogRecord record) { 1446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockValidInitClass { 1451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockValidInitClass() { 1452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Properties p = new Properties(); 1453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put("handlers", className + "$MockHandler"); 1454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p.put(".level", "OFF"); 1455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InputStream in = null; 1456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project in = EnvironmentHelper.PropertiesToInputStream(p); 1458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 1459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(in); 1460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 1462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 1463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project in.close(); 1465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockValidConfig { 1472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockValidConfig() { 1473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new MockHandler(); 1474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager manager = LogManager.getLogManager(); 1475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Logger root = null; 1476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != manager) { 1477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project root = manager.getLogger(""); 1478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 1479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println("null manager"); 1480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != root) { 1482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project root.addHandler(handler); 1483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project root.setLevel(Level.OFF); 1484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockValidConfig2 { 1489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static Logger root = null; 1491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockValidConfig2() { 1493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project root = LogManager.getLogManager().getLogger(""); 1494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project root.removeHandler(handler); 1495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockInvalidConfigException { 1499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockInvalidConfigException() { 1500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new RuntimeException("invalid config class - throw exception"); 1501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockInvalidConfigNoDefaultConstructor { 1505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockInvalidConfigNoDefaultConstructor(int i) { 1506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new RuntimeException("invalid config class - no default constructor"); 1507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1510a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public static class MockPropertyChangeListener implements 1511a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project PropertyChangeListener { 1512a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1513a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project PropertyChangeEvent event = null; 1514a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1515a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public void propertyChange(PropertyChangeEvent event) { 1516a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project this.event = event; 1517a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 1518a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1519a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public PropertyChangeEvent getEvent() { 1520a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project return event; 1521a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 1522a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1523a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public void reset() { 1524a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project event = null; 1525a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 1526a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project 1527a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project } 1528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockSecurityManagerLogPermission extends SecurityManager { 1530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission permission, Object context) { 1532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission instanceof LoggingPermission) { 1533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 1534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission permission) { 1538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission instanceof LoggingPermission) { 1539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StackTraceElement[] stack = (new Throwable()).getStackTrace(); 1540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < stack.length; i++) { 1541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (stack[i].getClassName().equals("java.util.logging.Logger")) { 1542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException("Found LogManager checkAccess()"); 1546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockSecurityManagerOtherPermission extends SecurityManager { 1551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission permission, Object context) { 1553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission instanceof LoggingPermission) { 1554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission.getName().equals("setSecurityManager")) { 1557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throw new SecurityException(); 1560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.checkPermission(permission, context); 1561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission permission) { 1564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission instanceof LoggingPermission) { 1565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (permission.getName().equals("setSecurityManager")) { 1568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.checkPermission(permission); 1571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test config class loading 1576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * java -Djava.util.logging.config.class=badConfigClassName ClassLoadingTest 1577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class ClassLoadingTest { 1579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void main(String[] args) { 1580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.currentThread().setContextClassLoader(new MockErrorClassLoader()); 1581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogManager.getLogManager(); 1583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw mock error"); 1584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (MockError e) { 1585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class MockErrorClassLoader extends ClassLoader { 1589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Class<?> loadClass(String name) { 1590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new MockError(); 1591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class MockError extends Error { 1595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockInputStream extends InputStream { 1599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 1601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int read() throws IOException { 1602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IOException(); 1603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1610