1021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson/* 2021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 3021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * contributor license agreements. See the NOTICE file distributed with 4021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * this work for additional information regarding copyright ownership. 5021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 6021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * (the "License"); you may not use this file except in compliance with 7021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * the License. You may obtain a copy of the License at 8021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * 9021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 10021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * 11021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * Unless required by applicable law or agreed to in writing, software 12021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 13021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * See the License for the specific language governing permissions and 15021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson * limitations under the License. 16021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson */ 17021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 18021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonpackage libcore.java.util.logging; 19021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 20021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.io.ByteArrayInputStream; 21021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.io.ByteArrayOutputStream; 22021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.io.IOException; 23021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.io.InputStream; 24021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.Properties; 25021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.Filter; 26021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.Handler; 27021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.Level; 28021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.LogManager; 29021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.LogRecord; 30021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport java.util.logging.MemoryHandler; 31021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonimport junit.framework.TestCase; 32021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 33021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilsonpublic class OldMemoryHandlerTest extends TestCase { 34021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 35021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson final static LogManager manager = LogManager.getLogManager(); 36021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson final static Properties props = new Properties(); 37021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson final static String baseClassName = OldMemoryHandlerTest.class.getName(); 38021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson MemoryHandler handler; 39021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 40021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson @Override protected void setUp() throws Exception { 41021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson super.setUp(); 42021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson manager.reset(); 43021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson initProps(); 44021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson manager.readConfiguration(propertiesToInputStream(props)); 45021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson handler = new MemoryHandler(); 46021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 47021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 48021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson @Override protected void tearDown() throws Exception { 49021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson super.tearDown(); 50021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson manager.readConfiguration(); 51021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson props.clear(); 52021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 53021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 54021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public static InputStream propertiesToInputStream(Properties p) throws IOException { 55021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson ByteArrayOutputStream bos = new ByteArrayOutputStream(); 56021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson p.store(bos, ""); 57021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson return new ByteArrayInputStream(bos.toByteArray()); 58021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 59021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 60021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson private void initProps() { 61021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson props.put("java.util.logging.MemoryHandler.level", "FINE"); 62021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson props.put("java.util.logging.MemoryHandler.filter", baseClassName + "$MockFilter"); 63021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson props.put("java.util.logging.MemoryHandler.size", "2"); 64021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson props.put("java.util.logging.MemoryHandler.push", "WARNING"); 65021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson props.put("java.util.logging.MemoryHandler.target", baseClassName + "$MockHandler"); 66021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson props.put("java.util.logging.MemoryHandler.formatter", baseClassName + "$MockFormatter"); 67021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 68021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 69021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testIsLoggable() { 70021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(handler.isLoggable(new LogRecord(Level.INFO, "1"))); 71021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(handler.isLoggable(new LogRecord(Level.WARNING, "2"))); 72021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertTrue(handler.isLoggable(new LogRecord(Level.SEVERE, "3"))); 73021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 74021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 75021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void testMemoryHandler() throws IOException { 76021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNotNull("Filter should not be null", handler.getFilter()); 77021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNotNull("Formatter should not be null", handler.getFormatter()); 78021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNull("character encoding should be null", handler.getEncoding()); 79021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertNotNull("ErrorManager should not be null", handler.getErrorManager()); 80021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("Level should be FINE", Level.FINE, handler.getLevel()); 81021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson assertEquals("Level should be WARNING", Level.WARNING, handler.getPushLevel()); 82021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 83021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 84021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public static class MockFilter implements Filter { 85021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public boolean isLoggable(LogRecord record) { 86021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson return !record.getMessage().equals("false"); 87021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 88021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 89021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson 90021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public static class MockHandler extends Handler { 91021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void close() {} 92021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void flush() {} 93021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson public void publish(LogRecord record) {} 94021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson } 95021f5003db85c4fbdc597aa7bb8fbb1e1dc9ab6bJesse Wilson} 96