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 Projectimport dalvik.annotation.AndroidOnly; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.BufferedReader; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ByteArrayOutputStream; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.File; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileOutputStream; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FilePermission; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileReader; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.PrintStream; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.Reader; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.StringWriter; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Permission; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Properties; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.FileHandler; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Filter; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Formatter; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Handler; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.Level; 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LogManager; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LogRecord; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.LoggingPermission; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.logging.XMLFormatter; 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.logging.tests.java.util.logging.HandlerTest.NullOutputStream; 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.logging.tests.java.util.logging.util.EnvironmentHelper; 53dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilsonimport tests.util.TestEnvironment; 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(FileHandler.class) 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class FileHandlerTest extends TestCase { 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static LogManager manager = LogManager.getLogManager(); 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final static Properties props = new Properties(); 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final static String className = FileHandlerTest.class.getName(); 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project final static String SEP = File.separator; 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 68dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson String HOMEPATH; 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 70dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson String TEMPPATH; 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final PrintStream err = System.err; 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private OutputStream errSubstituteStream = null; 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler handler; 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord r; 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see TestCase#setUp() 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setUp() throws Exception { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setUp(); 85dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson TestEnvironment.reset(); 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.reset(); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //initProp 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.clear(); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.level", "FINE"); 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.filter", className 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFilter"); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.formatter", className 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFormatter"); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.encoding", "iso-8859-1"); 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // limit to only two message 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.limit", "1000"); 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // rotation count is 2 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.count", "2"); 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // using append mode 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.append", "true"); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.pattern", 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "%t/log/java%u.test"); 104dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson 105dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson HOMEPATH = System.getProperty("user.home"); 106dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson TEMPPATH = System.getProperty("java.io.tmpdir"); 107dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File file = new File(TEMPPATH + SEP + "log"); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file.mkdir(); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .PropertiesToInputStream(props)); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r = new LogRecord(Level.CONFIG, "msg"); 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project errSubstituteStream = new NullOutputStream(); 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setErr(new PrintStream(errSubstituteStream)); 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see TestCase#tearDown() 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() throws Exception { 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != handler) { 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset(TEMPPATH + SEP + "log", ""); 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setErr(err); 129dafd6348b2e1b46d10e1dbfa64fd2dd44bcfedf2Jesse Wilson TestEnvironment.reset(); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.tearDown(); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for constructor void FileHandler() 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify exceptions.", 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFileHandler() throws Exception { 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("character encoding is non equal to actual value", 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "iso-8859-1", handler.getEncoding()); 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Filter is null", handler.getFilter()); 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Formatter is null", handler.getFormatter()); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("is non equal to actual value", Level.FINE, handler 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLevel()); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("ErrorManager is null", handler.getErrorManager()); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output 3 times, and all records left 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // append mode is true 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 3; i++) { 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "java0.test.0", 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord[] { r, null, r, null, r, null, r }, 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter()); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for constructor void FileHandler(String) 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify security exception.", 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFileHandler_1params() throws Exception { 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string"); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("character encoding is non equal to actual value", 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "iso-8859-1", handler.getEncoding()); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Filter is null", handler.getFilter()); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Formatter is null", handler.getFormatter()); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("is non equal to actual value", Level.FINE, handler 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLevel()); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("ErrorManager is null", handler.getErrorManager()); 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output 3 times, and all records left 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // append mode is true 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 3; i++) { 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string"); 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "/string", new LogRecord[] { 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r, null, r, null, r, null, r }, new MockFormatter()); 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test if unique ids not specified, it will append at the end 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // no generation number is used 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h = new FileHandler("%t/log/string"); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h2 = new FileHandler("%t/log/string"); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h3 = new FileHandler("%t/log/string"); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h4 = new FileHandler("%t/log/string"); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h2.publish(r); 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h3.publish(r); 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h4.publish(r); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h2.close(); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h3.close(); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h4.close(); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "string", h.getFormatter()); 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "string.1", h.getFormatter()); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "string.2", h.getFormatter()); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "string.3", h.getFormatter()); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // default is append mode 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h6 = new FileHandler("%t/log/string%u.log"); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h6.publish(r); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h6.close(); 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h7 = new FileHandler("%t/log/string%u.log"); 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h7.publish(r); 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h7.close(); 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "string0.log", h 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getFormatter()); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should assertion failed"); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Error e) { 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File file = new File(TEMPPATH + SEP + "log"); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("length list of file is incorrect", file.list().length <= 2); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test unique ids 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h8 = new FileHandler("%t/log/%ustring%u.log"); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h8.publish(r); 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h9 = new FileHandler("%t/log/%ustring%u.log"); 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h9.publish(r); 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h9.close(); 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h8.close(); 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "0string0.log", h 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getFormatter()); 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "1string1.log", h 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getFormatter()); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "log"); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("length list of file is incorrect", file.list().length <= 2); 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler(""); 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for constructor void FileHandler(String pattern, boolean append) 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify security exception.", 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, boolean.class} 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFileHandler_2params() throws Exception { 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean append = false; 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project do { 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project append = !append; 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string", append); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("character encoding is non equal to actual value", 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "iso-8859-1", handler.getEncoding()); 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Filter is null", handler.getFilter()); 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Formatter is null", handler.getFormatter()); 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("is non equal to actual value", Level.FINE, handler 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLevel()); 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("ErrorManager is null", handler.getErrorManager()); 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output 3 times, and all records left 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // append mode is true 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 3; i++) { 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string", append); 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (append) { 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "/string", 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord[] { r, null, r, null, r, null, r }, 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter()); 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "/string", 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord[] { r }, new MockFormatter()); 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } while (append); 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("", true); 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for constructor void FileHandler(String pattern, int limit, int 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * count) 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verifysecurity exception.", 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class} 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFileHandler_3params() throws Exception { 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int limit = 120; 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int count = 1; 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string", limit, count); 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("character encoding is non equal to actual value", 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "iso-8859-1", handler.getEncoding()); 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Filter is null", handler.getFilter()); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Formatter is null", handler.getFormatter()); 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("is non equal to actual value", Level.FINE, handler 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLevel()); 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("ErrorManager is null", handler.getErrorManager()); 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output 3 times, and all records left 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // append mode is true 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 3; i++) { 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string", limit, count); 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "/string", new LogRecord[] { 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project r, null, r, null, r, null, r }, new MockFormatter()); 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("", limit, count); 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("%t/log/string", -1, count); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("%t/log/string", limit, 0); 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for constructor public FileHandler(String pattern, int limit, int 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * count, boolean append) 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify security exception.", 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class, boolean.class} 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFileHandler_4params() throws Exception { 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int limit = 120; 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int count = 1; 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean append = false; 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project do { 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project append = !append; 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string", limit, count, append); 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("character encoding is non equal to actual value", 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "iso-8859-1", handler.getEncoding()); 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Filter is null", handler.getFilter()); 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Formatter is null", handler.getFormatter()); 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("is non equal to actual value", Level.FINE, handler 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getLevel()); 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("ErrorManager is null", handler.getErrorManager()); 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output 3 times, and all records left 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // append mode is true 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 3; i++) { 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/string", limit, count, append); 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (append) { 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "/string", 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord[] { r, null, r, null, r, null, r }, 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockFormatter()); 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "/string", 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord[] { r }, new MockFormatter()); 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } while (append); 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("", limit, count, true); 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("%t/log/string", -1, count, false); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("%t/log/string", limit, 0, true); 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getEncoding", 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getFilter", 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getFormatter", 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getLevel", 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getErrorManager", 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testDefaultValue() throws Exception { 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.clear(); 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .PropertiesToInputStream(props)); 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(handler.getEncoding()); 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(handler.getFilter()); 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(handler.getFormatter() instanceof XMLFormatter); 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(handler.getLevel(), Level.ALL); 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(handler.getErrorManager()); 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output 3 times, and only one record left 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // default append mode is false 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 3; i++) { 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(HOMEPATH, "java0.log", new XMLFormatter()); 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void assertFileContent(String homepath, String filename, 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Formatter formatter) throws Exception { 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(homepath, filename, new LogRecord[] { r }, formatter); 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void assertFileContent(String homepath, String filename, 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord[] lr, Formatter formatter) throws Exception { 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String msg = ""; 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if formatter is null, the file content should be empty 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // else the message should be formatted given records 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null != formatter) { 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StringBuffer sb = new StringBuffer(); 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(formatter.getHead(handler)); 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < lr.length; i++) { 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null == lr[i] && i < lr.length - 1) { 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if one record is null and is not the last record, means 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // here is 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output completion point, should output tail, then output 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // head 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // (ready for next output) 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(formatter.getTail(handler)); 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(formatter.getHead(handler)); 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(formatter.format(lr[i])); 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(formatter.getTail(handler)); 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project msg = sb.toString(); 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] chars = new char[msg.length()]; 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Reader reader = null; 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reader = new BufferedReader(new FileReader(homepath + SEP 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + filename)); 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reader.read(chars); 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(msg, new String(chars)); 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // assert has reached the end of the file 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(-1, reader.read()); 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (reader != null) { 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reader.close(); 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // don't care 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset(homepath, filename); 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Does a cleanup of given file 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param homepath 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param filename 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void reset(String homepath, String filename) { 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File file = null; 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(homepath + SEP + filename); 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (file.isFile()) { 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file.delete(); 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (file.isDirectory()) { 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File[] files = file.listFiles(); 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < files.length; i++) { 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project files[i].delete(); 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file.delete(); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(homepath + SEP + filename + ".lck"); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file.delete(); 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(); 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class, boolean.class} 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testLimitAndCount() throws Exception { 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // very small limit value, count=2 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output, rename current output file to the second generation file 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // close it and open a new file as rotation output 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/testLimitCount%g", 1, 2, false); 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH, "testLimitCount1", handler.getFormatter()); 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // very small limit value, count=1 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // output once, rotate(equals to nothing output) 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/testLimitCount%g", 1, 1, false); 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH, "testLimitCount0", new LogRecord[0], 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.getFormatter()); 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // normal case, limit is 60(>2*msg length <3*msg length), append is 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // false 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/testLimitCount%u", 60, 3, false); 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord[] rs = new LogRecord[10]; 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // batch output twice to test the append mode 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 5; i++) { 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[i] = new LogRecord(Level.SEVERE, "msg" + i); 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(rs[i]); 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/testLimitCount%u", 60, 3, false); 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 5; i < 10; i++) { 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[i] = new LogRecord(Level.SEVERE, "msg" + i); 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(rs[i]); 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH, "testLimitCount0.1", new LogRecord[] { 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[5], rs[6], rs[7] }, handler.getFormatter()); 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH, "testLimitCount0.0", new LogRecord[] { 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[8], rs[9] }, handler.getFormatter()); 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // normal case, limit is 60(>2*msg length <3*msg length), append is true 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/testLimitCount%u", 60, 3, false); 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // batch output twice to test the append mode 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < 5; i++) { 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[i] = new LogRecord(Level.SEVERE, "msg" + i); 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(rs[i]); 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/testLimitCount%u", 60, 3, true); 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 5; i < 10; i++) { 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[i] = new LogRecord(Level.SEVERE, "msg" + i); 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(rs[i]); 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH, "testLimitCount0.2", new LogRecord[] { 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[3], rs[4], null, rs[5] }, handler.getFormatter()); 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH, "testLimitCount0.1", new LogRecord[] { 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rs[6], rs[7], rs[8] }, handler.getFormatter()); 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH, "testLimitCount0.0", 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord[] { rs[9] }, handler.getFormatter()); 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h1 = null; 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h2 = null; 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File logDir = new File("log"); 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset("log", ""); 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project logDir.mkdir(); 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("log/a", 0, 1); 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(h1); 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h2 = new FileHandler("log/a", 0, 1, false); 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(h2); 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1.close(); 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h2.close(); 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset("log", ""); 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, boolean.class} 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class} 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class, boolean.class} 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSecurity() throws IOException { 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager currentManager = System.getSecurityManager(); 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockLogSecurityManager()); 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(new LogRecord(Level.SEVERE, "msg")); 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern1"); 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern2", true); 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern3", 1000, 1); 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern4", 1000, 1, true); 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(currentManager); 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, boolean.class} 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class} 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies SecurityException.", 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class, boolean.class} 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testFileSecurity() throws IOException { 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecurityManager currentManager = System.getSecurityManager(); 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(new MockFileSecurityManager()); 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(new LogRecord(Level.SEVERE, "msg")); 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern1"); 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern2", true); 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern3", 1000, 1); 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("pattern4", 1000, 1, true); 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw security exception"); 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (SecurityException e) { 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } finally { 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.setSecurityManager(currentManager); 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies FileHandler when configuration file is invalid.", 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testInvalidProperty() throws Exception { 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.level", "null"); 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.filter", className 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFilte"); 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.formatter", className 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "$MockFormatte"); 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.encoding", "ut"); 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // limit to only two message 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.limit", "-1"); 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // rotation count is 2 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.count", "-1"); 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // using append mode 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.append", "bad"); 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .PropertiesToInputStream(props)); 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Level.ALL, handler.getLevel()); 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(handler.getFilter()); 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(handler.getFormatter() instanceof XMLFormatter); 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(handler.getEncoding()); 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project props.put("java.util.logging.FileHandler.pattern", ""); 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project manager.readConfiguration(EnvironmentHelper 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .PropertiesToInputStream(props)); 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler(); 841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("shouldn't open file with empty name"); 842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies illegal parameters and exceptions: IOException, NullPointerException, IllegalArgumentException.", 849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies illegal parameters and exceptions: IOException, NullPointerException, IllegalArgumentException.", 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, boolean.class} 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies illegal parameters and exceptions: IOException, NullPointerException, IllegalArgumentException.", 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class} 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies illegal parameters and exceptions: IOException, NullPointerException, IllegalArgumentException.", 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @AndroidOnly("This test fails on RI. Doesn't parse special pattern \"%t/%h.") 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testInvalidParams() throws IOException { 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // %t and %p parsing can add file separator automatically 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h1 = new FileHandler("%taaa"); 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1.close(); 877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File file = new File(TEMPPATH + SEP + "aaa"); 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(file.exists()); 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset(TEMPPATH, "aaa"); 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t%g"); 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1.close(); 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "0"); 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(file.exists()); 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset(TEMPPATH, "0"); 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t%u%g"); 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1.close(); 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "00"); 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(file.exists()); 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset(TEMPPATH, "00"); 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // this is normal case 893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t/%u%g%%g"); 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1.close(); 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "00%g"); 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(file.exists()); 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset(TEMPPATH, "00%g"); 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // multi separator has no effect 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("//%t//multi%g"); 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1.close(); 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "multi0"); 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(file.exists()); 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reset(TEMPPATH, "multi0"); 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // bad directory, IOException 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t/baddir/multi%g"); 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IO exception"); 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "baddir" + SEP + "multi0"); 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(file.exists()); 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // bad directory, IOException, append 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t/baddir/multi%g", true); 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IO exception"); 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "baddir" + SEP + "multi0"); 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(file.exists()); 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t/baddir/multi%g", false); 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IO exception"); 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "baddir" + SEP + "multi0"); 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(file.exists()); 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t/baddir/multi%g", 12, 4); 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IO exception"); 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "baddir" + SEP + "multi0"); 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(file.exists()); 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h1 = new FileHandler("%t/baddir/multi%g", 12, 4, true); 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IO exception"); 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project file = new File(TEMPPATH + SEP + "baddir" + SEP + "multi0"); 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(file.exists()); 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler(null); 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw null exception"); 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(null); 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should not throw NPE"); 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler(null, false); 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw null exception"); 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler(""); 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // expected 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("%t/java%u", 0, 0); 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("%t/java%u", -1, 1); 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler("%t/java%u", -1, -1); 982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("should throw IllegalArgumentException"); 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for method public void publish(LogRecord record) 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "publish", 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.logging.LogRecord.class} 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testPublish() throws Exception { 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LogRecord[] r = new LogRecord[] { new LogRecord(Level.CONFIG, "msg__"), 998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord(Level.WARNING, "message"), 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord(Level.INFO, "message for"), 1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord(Level.FINE, "message for test") }; 1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < r.length; i++) { 1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler = new FileHandler("%t/log/stringPublish"); 1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r[i]); 1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "stringPublish", 1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new LogRecord[] { r[i] }, handler.getFormatter()); 1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * test for method public void close() 1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testClose() throws Exception { 1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FileHandler h = new FileHandler("%t/log/stringPublish"); 1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.publish(r); 1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project h.close(); 1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(TEMPPATH + SEP + "log", "stringPublish", h 1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .getFormatter()); 1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL, 1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Doesn't verify SecurityException.", 1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "setOutputStream", 1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.OutputStream.class} 1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set output stream still works, just like super StreamHandler 1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSetOutputStream() throws Exception { 1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockFileHandler handler = new MockFileHandler("%h/setoutput.log"); 1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.setFormatter(new MockFormatter()); 1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteArrayOutputStream out = new ByteArrayOutputStream(); 1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publicSetOutputStream(out); 1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.publish(r); 1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project handler.close(); 1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String msg = new String(out.toByteArray()); 1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Formatter f = handler.getFormatter(); 1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(msg, f.getHead(handler) + f.format(r) + f.getTail(handler)); 1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFileContent(HOMEPATH, "setoutput.log", handler.getFormatter()); 1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class} 1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testEmptyPattern_3params() throws SecurityException, 1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IOException { 1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler(new String(), 1, 1); 1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected an IllegalArgumentException"); 1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, boolean.class} 1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testEmptyPattern_2params() throws SecurityException, 1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IOException { 1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler(new String(), true); 1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected an IllegalArgumentException"); 1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies IllegalArgumentException.", 1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "FileHandler", 1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class, int.class, boolean.class} 1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testEmptyPattern_4params() throws SecurityException, 1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IOException { 1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new FileHandler(new String(), 1, 1, true); 1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected an IllegalArgumentException"); 1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * mock classes 1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockFilter implements Filter { 1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean isLoggable(LogRecord record) { 1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return !record.getMessage().equals("false"); 1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockFormatter extends Formatter { 1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String format(LogRecord r) { 1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (null == r) { 1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ""; 1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return r.getMessage() + " by MockFormatter\n"; 1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getTail(Handler h) { 1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return "tail\n"; 1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getHead(Handler h) { 1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return "head\n"; 1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockLogSecurityManager extends SecurityManager { 1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission perm) { 1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (perm instanceof LoggingPermission) { 1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockFileSecurityManager extends SecurityManager { 1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void checkPermission(Permission perm) { 1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (perm instanceof FilePermission) { 1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new SecurityException(); 1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class MockFileHandler extends FileHandler { 1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockFileHandler() throws IOException { 1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(); 1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public MockFileHandler(String pattern) throws IOException { 1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(pattern); 1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void publicSetOutputStream(OutputStream stream) { 1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.setOutputStream(stream); 1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1151