/* Copyright (c) 2008-2009 HomeAway, Inc. * All rights reserved. http://www.perf4j.org * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.perf4j.log4j; import org.perf4j.LoggingStopWatchTest; import org.perf4j.LoggingStopWatch; import org.perf4j.StopWatch; import org.apache.log4j.Logger; import org.apache.log4j.Level; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.SimpleLayout; /** * Tests the Log4JStopWatch. See the superclass for the test method that is run. */ public class Log4JStopWatchTest extends LoggingStopWatchTest { protected void setUp() throws Exception { super.setUp(); Logger defaultLogger = Logger.getLogger(StopWatch.DEFAULT_LOGGER_NAME); ConsoleAppender stdErrAppender = new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_ERR); stdErrAppender.setName("log4jStdErrAppender"); stdErrAppender.activateOptions(); defaultLogger.addAppender(stdErrAppender); } protected void tearDown() throws Exception { Logger defaultLogger = Logger.getLogger(StopWatch.DEFAULT_LOGGER_NAME); defaultLogger.removeAppender("log4jStdErrAppender"); super.tearDown(); } protected LoggingStopWatch createStopWatch(String loggerName, String normalPriorityName, String exceptionPriorityName, String tag, String message) { if (loggerName == null && normalPriorityName == null && exceptionPriorityName == null && tag == null && message == null) { return new Log4JStopWatch(); } if (loggerName == null && normalPriorityName == null && exceptionPriorityName == null && message == null) { return new Log4JStopWatch(tag); } if (loggerName == null && normalPriorityName == null && exceptionPriorityName == null) { return new Log4JStopWatch(tag, message); } if (normalPriorityName == null && exceptionPriorityName == null && tag == null && message == null) { return new Log4JStopWatch(Logger.getLogger(loggerName)); } if (exceptionPriorityName == null && tag == null && message == null) { return new Log4JStopWatch(Logger.getLogger(loggerName), Level.toLevel(normalPriorityName)); } if (tag == null && message == null) { return new Log4JStopWatch(Logger.getLogger(loggerName), Level.toLevel(normalPriorityName), Level.toLevel(exceptionPriorityName)); } if (normalPriorityName == null && exceptionPriorityName == null && message == null) { return new Log4JStopWatch(tag, Logger.getLogger(loggerName)); } if (exceptionPriorityName == null && message == null) { return new Log4JStopWatch(tag, Logger.getLogger(loggerName), Level.toLevel(normalPriorityName)); } if (message == null) { return new Log4JStopWatch(tag, Logger.getLogger(loggerName), Level.toLevel(normalPriorityName), Level.toLevel(exceptionPriorityName)); } if (normalPriorityName == null && exceptionPriorityName == null) { return new Log4JStopWatch(tag, message, Logger.getLogger(loggerName)); } if (exceptionPriorityName == null) { return new Log4JStopWatch(tag, message, Logger.getLogger(loggerName), Level.toLevel(normalPriorityName)); } return new Log4JStopWatch(tag, message, Logger.getLogger(loggerName), Level.toLevel(normalPriorityName), Level.toLevel(exceptionPriorityName)); } protected void customTests() { Log4JStopWatch stopWatch = new Log4JStopWatch(0L, 1000L, "tag", "message", Logger.getLogger("org.perf4j"), Level.TRACE, Level.INFO); assertEquals(0L, stopWatch.getStartTime()); assertEquals(1000L, stopWatch.getElapsedTime()); assertEquals("tag", stopWatch.getTag()); assertEquals("message", stopWatch.getMessage()); assertEquals("org.perf4j", stopWatch.getLogger().getName()); assertEquals(Level.TRACE, stopWatch.getNormalPriority()); assertEquals(Level.INFO, stopWatch.getExceptionPriority()); stopWatch.setLogger(Logger.getLogger("org.perf4j.AnotherTestLogger")); assertEquals("org.perf4j.AnotherTestLogger", stopWatch.getLogger().getName()); stopWatch.setNormalPriority(Level.DEBUG); assertEquals(Level.DEBUG, stopWatch.getNormalPriority()); stopWatch.setExceptionPriority(Level.WARN); assertEquals(Level.WARN, stopWatch.getExceptionPriority()); Logger.getLogger("org.perf4j.AnotherTestLogger").setLevel(Level.DEBUG); assertTrue(stopWatch.isLogging()); Logger.getLogger("org.perf4j.AnotherTestLogger").setLevel(Level.WARN); assertFalse(stopWatch.isLogging()); } protected void checkProperties(LoggingStopWatch stopWatch, String expectedLoggerName, String expectedNormalPriority, String expectedExceptionPriority, String expectedTag, String expectedMessage) { super.checkProperties(stopWatch, expectedLoggerName, expectedNormalPriority, expectedExceptionPriority, expectedTag, expectedMessage); Log4JStopWatch log4JStopWatch = (Log4JStopWatch) stopWatch; assertEquals(expectedLoggerName, log4JStopWatch.getLogger().getName()); assertEquals(expectedNormalPriority, log4JStopWatch.getNormalPriority().toString()); assertEquals(expectedExceptionPriority, log4JStopWatch.getExceptionPriority().toString()); } }