1fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.logging.tests.java.util.logging; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStream; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.PrintStream; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.ConsoleHandler; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Filter; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Formatter; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Handler; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.Level; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LogManager; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LogRecord; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.LoggingPermission; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.logging.SimpleFormatter; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.logging.tests.java.util.logging.util.EnvironmentHelper; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.util.CallVerificationStack; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test class java.util.logging.ConsoleHandler 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ConsoleHandlerTest extends TestCase { 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private final static String INVALID_LEVEL = "impossible_level"; 488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private final PrintStream err = System.err; 508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private OutputStream errSubstituteStream = null; 528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private static String className = ConsoleHandlerTest.class.getName(); 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see TestCase#setUp() 578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath protected void setUp() throws Exception { 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.setUp(); 608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath errSubstituteStream = new MockOutputStream(); 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath System.setErr(new PrintStream(errSubstituteStream)); 628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().reset(); 638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see TestCase#tearDown() 678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath protected void tearDown() throws Exception { 698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.tearDown(); 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().reset(); 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath CallVerificationStack.getInstance().clear(); 728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath System.setErr(err); 738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test the constructor with no relevant log manager properties are set. 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testConstructor_NoProperties() { 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(LogManager.getLogManager().getProperty( 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.level")); 818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(LogManager.getLogManager().getProperty( 828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.filter")); 838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(LogManager.getLogManager().getProperty( 848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.formatter")); 858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(LogManager.getLogManager().getProperty( 868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.encoding")); 878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(h.getLevel(), Level.INFO); 908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(h.getFormatter() instanceof SimpleFormatter); 918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(h.getFilter()); 928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(h.getEncoding(), null); 938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test the constructor with valid relevant log manager properties are set. 978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testConstructor_ValidProperties() throws Exception { 998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.level", "FINE"); 1018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.filter", className 1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFilter"); 1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.encoding", "iso-8859-1"); 1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(LogManager.getLogManager().getProperty( 1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.level"), "FINE"); 1118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(LogManager.getLogManager().getProperty( 1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.encoding"), "iso-8859-1"); 1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 1148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(h.getLevel(), Level.parse("FINE")); 1158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(h.getFormatter() instanceof MockFormatter); 1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(h.getFilter() instanceof MockFilter); 1178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(h.getEncoding(), "iso-8859-1"); 1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test the constructor with invalid relevant log manager properties are 1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * set. 1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testConstructor_InvalidProperties() throws Exception { 1258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 1268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.level", INVALID_LEVEL); 1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.filter", className); 1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className); 1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.encoding", "XXXX"); 1308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(LogManager.getLogManager().getProperty( 1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.level"), INVALID_LEVEL); 1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(LogManager.getLogManager().getProperty( 1368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "java.util.logging.ConsoleHandler.encoding"), "XXXX"); 1378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 1388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(h.getLevel(), Level.INFO); 1398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(h.getFormatter() instanceof SimpleFormatter); 1408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(h.getFilter()); 1418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(h.getEncoding()); 1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(new LogRecord(Level.SEVERE, "test")); 1438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(h.getEncoding()); 1448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test close() when having sufficient privilege, and a record has been 1488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * written to the output stream. 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testClose_SufficientPrivilege_NormalClose() throws Exception { 1518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 1528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 1538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 1548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 1558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 1568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 1578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(new LogRecord(Level.SEVERE, 1588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testClose_SufficientPrivilege_NormalClose msg")); 1598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.close(); 1608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("flush", CallVerificationStack.getInstance() 1618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath .getCurrentSourceMethod()); 1628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 1638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.close(); 1648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 1678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test close() when having sufficient privilege, and an output stream that 1688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * always throws exceptions. 1698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testClose_SufficientPrivilege_Exception() throws Exception { 1718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 1738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 1748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 1758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 1768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 1778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(new LogRecord(Level.SEVERE, 1798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath "testClose_SufficientPrivilege_Exception msg")); 1808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 1818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.close(); 1828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 1838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 1858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test close() when having sufficient privilege, and no record has been 1868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * written to the output stream. 1878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 1888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testClose_SufficientPrivilege_DirectClose() throws Exception { 1898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 1908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 1918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 1928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 1938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 1948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 1958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.close(); 1978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("flush", CallVerificationStack.getInstance() 1988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath .getCurrentSourceMethod()); 1998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 2008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(CallVerificationStack.getInstance().empty()); 2018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 2048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test publish(), use no filter, having output stream, normal log record. 2058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testPublish_NoFilter() throws Exception { 2078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 2088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 2098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 2108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 2118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 2128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 2138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r = new LogRecord(Level.INFO, "testPublish_NoFilter"); 2158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.INFO); 2168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 2188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("MockFormatter_Head" + "testPublish_NoFilter", 2198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.errSubstituteStream.toString()); 2208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.WARNING); 2228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 2248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("MockFormatter_Head" + "testPublish_NoFilter", 2258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.errSubstituteStream.toString()); 2268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.CONFIG); 2288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 2308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("MockFormatter_Head" + "testPublish_NoFilter" 2318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "testPublish_NoFilter", this.errSubstituteStream.toString()); 2328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath r.setLevel(Level.OFF); 2348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.OFF); 2358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 2378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("MockFormatter_Head" + "testPublish_NoFilter" 2388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "testPublish_NoFilter", this.errSubstituteStream.toString()); 2398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 2428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test publish(), after system err is reset. 2438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testPublish_AfterResetSystemErr() throws Exception { 2458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 2468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 2478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 2488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 2498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 2508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 2518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setFilter(new MockFilter()); 2528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath System.setErr(new PrintStream(new ByteArrayOutputStream())); 2548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r = new LogRecord(Level.INFO, "testPublish_WithFilter"); 2568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.INFO); 2578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 2598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(r, CallVerificationStack.getInstance().pop()); 2608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("", this.errSubstituteStream.toString()); 2618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 2628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 2648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test publish(), use a filter, having output stream, normal log record. 2658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 2668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testPublish_WithFilter() throws Exception { 2678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 2688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 2698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 2708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 2718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 2728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 2738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setFilter(new MockFilter()); 2748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r = new LogRecord(Level.INFO, "testPublish_WithFilter"); 2768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.INFO); 2778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 2798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(r, CallVerificationStack.getInstance().pop()); 2808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("", this.errSubstituteStream.toString()); 2818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.WARNING); 2838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 2858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(CallVerificationStack.getInstance().empty()); 2868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("", this.errSubstituteStream.toString()); 2878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.CONFIG); 2898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 2918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(r, CallVerificationStack.getInstance().pop()); 2928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("", this.errSubstituteStream.toString()); 2938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath r.setLevel(Level.OFF); 2958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setLevel(Level.OFF); 2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 2978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 2988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("", this.errSubstituteStream.toString()); 2998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(CallVerificationStack.getInstance().empty()); 3008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test publish(), null log record, having output stream, spec said 3048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * rather than throw exception, handler should call errormanager to handle 3058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * exception case, so NullPointerException shouldn't be thrown. 3068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testPublish_Null() throws Exception { 3088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 3098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 3108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 3118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 3128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 3138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 3148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(null); 3158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test publish(), a log record with empty msg, having output stream 3198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testPublish_EmptyMsg() throws Exception { 3218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 3228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 3238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 3248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 3258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 3268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 3278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r = new LogRecord(Level.INFO, ""); 3288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 3298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 3308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("MockFormatter_Head", this.errSubstituteStream.toString()); 3318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test publish(), a log record with null msg, having output stream 3358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testPublish_NullMsg() throws Exception { 3378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 3388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 3398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 3408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 3418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 3428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 3438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r = new LogRecord(Level.INFO, null); 3448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 3458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 3468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals("MockFormatter_Head", 3478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // this.errSubstituteStream.toString()); 3488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testPublish_AfterClose() throws Exception { 3518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath PrintStream backup = System.err; 3528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 3538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ByteArrayOutputStream bos = new ByteArrayOutputStream(); 3548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath System.setErr(new PrintStream(bos)); 3558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Properties p = new Properties(); 3568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.level", "FINE"); 3578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath p.put("java.util.logging.ConsoleHandler.formatter", className 3588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath + "$MockFormatter"); 3598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogManager.getLogManager().readConfiguration( 3608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath EnvironmentHelper.PropertiesToInputStream(p)); 3618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ConsoleHandler h = new ConsoleHandler(); 3628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(h.getLevel(), Level.FINE); 3638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r1 = new LogRecord(Level.INFO, "testPublish_Record1"); 3648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r2 = new LogRecord(Level.INFO, "testPublish_Record2"); 3658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(h.isLoggable(r1)); 3668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r1); 3678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(bos.toString().indexOf("testPublish_Record1") >= 0); 3688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.close(); 3698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertFalse(h.isLoggable(r)); 3708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(h.isLoggable(r2)); 3718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r2); 3728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(bos.toString().indexOf("testPublish_Record2") >= 0); 3738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.flush(); 3748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals("MockFormatter_Head", 3758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // this.errSubstituteStream.toString()); 3768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException e) { 3778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath e.printStackTrace(); 3788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } finally { 3798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath System.setErr(backup); 3808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 3828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 3848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * Test setOutputStream() under normal condition. 3858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 3868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void testSetOutputStream_Normal() { 3878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MockStreamHandler h = new MockStreamHandler(); 3888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setFormatter(new MockFormatter()); 3898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath LogRecord r = new LogRecord(Level.INFO, "testSetOutputStream_Normal"); 3918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.publish(r); 3928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertNull(CallVerificationStack.getInstance().pop()); 3938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertSame(r, CallVerificationStack.getInstance().pop()); 3948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertTrue(CallVerificationStack.getInstance().empty()); 3958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal", 3968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.errSubstituteStream.toString()); 3978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 3988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ByteArrayOutputStream aos2 = new ByteArrayOutputStream(); 3998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath h.setOutputStream(aos2); 4008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals("close", DelegationParameterStack.getInstance() 4028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // .getCurrentSourceMethod()); 4038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertNull(DelegationParameterStack.getInstance().pop()); 4048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals("flush", DelegationParameterStack.getInstance() 4058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // .getCurrentSourceMethod()); 4068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertNull(DelegationParameterStack.getInstance().pop()); 4078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal" 4088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // + "MockFormatter_Tail", this.errSubstituteStream.toString()); 4098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // r = new LogRecord(Level.INFO, "testSetOutputStream_Normal2"); 4108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // h.publish(r); 4118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertSame(r, DelegationParameterStack.getInstance().pop()); 4128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertTrue(DelegationParameterStack.getInstance().empty()); 4138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal2", 4148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // aos2 4158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // .toString()); 4168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // assertEquals("MockFormatter_Head" + "testSetOutputStream_Normal" 4178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // + "MockFormatter_Tail", this.errSubstituteStream.toString()); 4188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * A mock filter, always return false. 4228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockFilter implements Filter { 4248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public boolean isLoggable(LogRecord record) { 4268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath CallVerificationStack.getInstance().push(record); 4278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // System.out.println("filter called..."); 4288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return false; 4298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * A mock formatter. 4348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockFormatter extends Formatter { 4368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public String format(LogRecord r) { 4378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // System.out.println("formatter called..."); 4388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return super.formatMessage(r); 4398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * (non-Javadoc) 4438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 4448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see java.util.logging.Formatter#getHead(java.util.logging.Handler) 4458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public String getHead(Handler h) { 4478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return "MockFormatter_Head"; 4488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * (non-Javadoc) 4528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 4538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see java.util.logging.Formatter#getTail(java.util.logging.Handler) 4548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public String getTail(Handler h) { 4568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return "MockFormatter_Tail"; 4578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * A mock output stream. 4628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockOutputStream extends ByteArrayOutputStream { 4648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * (non-Javadoc) 4678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 4688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see java.io.OutputStream#close() 4698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void close() throws IOException { 4718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath CallVerificationStack.getInstance().push(null); 4728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.close(); 4738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * (non-Javadoc) 4778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 4788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see java.io.OutputStream#flush() 4798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void flush() throws IOException { 4818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath CallVerificationStack.getInstance().push(null); 4828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.flush(); 4838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4868d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * (non-Javadoc) 4878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 4888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @see java.io.OutputStream#write(int) 4898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void write(int oneByte) { 4918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // TODO Auto-generated method stub 4928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.write(oneByte); 4938d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 4958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 4968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /* 4978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * A mock stream handler, expose setOutputStream. 4988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 4998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static class MockStreamHandler extends ConsoleHandler { 5008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public MockStreamHandler() { 5018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super(); 5028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 5038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void setOutputStream(OutputStream out) { 5058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super.setOutputStream(out); 5068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 5078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 5088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public boolean isLoggable(LogRecord r) { 5098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath CallVerificationStack.getInstance().push(r); 5108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return super.isLoggable(r); 5118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 5128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 515