// Copyright (c) 2005 Dustin Sallings <dustin@spy.net> package net.spy.log; import java.io.PrintStream; import junit.framework.TestCase; /** * Make sure logging is enabled. */ public class LoggingTest extends TestCase { private Logger logger=null; /** * Get an instance of LoggingTest. */ public LoggingTest(String name) { super(name); } /** * Set up logging. */ @Override public void setUp() { logger=LoggerFactory.getLogger(getClass()); } /** * Make sure logging is enabled. */ public void testDebugLogging() { assertTrue("Debug logging is not enabled", logger.isDebugEnabled()); logger.debug("debug message"); } /** * Make sure info is enabled, and test it. */ public void testInfoLogging() { assertTrue(logger.isInfoEnabled()); logger.info("info message"); } /** * Test other log stuff. */ public void testOtherLogging() { logger.warn("warn message"); logger.warn("test %s", "message"); logger.error("error message"); logger.error("test %s", "message"); logger.fatal("fatal message"); logger.fatal("test %s", "message"); logger.log(null, "test null", null); assertEquals(getClass().getName(), logger.getName()); } /** * Make sure we're using log4j. */ public void testLog4j() { Logger l=LoggerFactory.getLogger(getClass()); assertEquals("net.spy.log.Log4JLogger", l.getClass().getName()); } /** * Test the sun logger. */ public void testSunLogger() { Logger l=new SunLogger(getClass().getName()); assertFalse(l.isDebugEnabled()); l.debug("debug message"); assertTrue(l.isInfoEnabled()); l.info("info message"); l.warn("warn message"); l.error("error message"); l.fatal("fatal message"); l.fatal("fatal message with exception", new Exception()); l.log(null, "test null", null); l.log(null, "null message with exception and no requestor", new Exception()); } /** * Test the default logger. */ public void testMyLogger() { Logger l=new DefaultLogger(getClass().getName()); assertFalse(l.isDebugEnabled()); l.debug("debug message"); assertTrue(l.isInfoEnabled()); l.info("info message"); l.warn("warn message"); l.error("error message"); l.fatal("fatal message"); l.fatal("fatal message with exception", new Exception()); l.log(null, "test null", null); l.log(null, "null message with exception and no requestor", new Exception()); try { l=new DefaultLogger(null); fail("Allowed me to create a logger with null name: " + l); } catch(NullPointerException e) { assertEquals("Logger name may not be null.", e.getMessage()); } } /** * Test stringing levels. */ public void testLevelStrings() { assertEquals("{LogLevel: DEBUG}", String.valueOf(Level.DEBUG)); assertEquals("{LogLevel: INFO}", String.valueOf(Level.INFO)); assertEquals("{LogLevel: WARN}", String.valueOf(Level.WARN)); assertEquals("{LogLevel: ERROR}", String.valueOf(Level.ERROR)); assertEquals("{LogLevel: FATAL}", String.valueOf(Level.FATAL)); assertEquals("DEBUG", Level.DEBUG.name()); assertEquals("INFO", Level.INFO.name()); assertEquals("WARN", Level.WARN.name()); assertEquals("ERROR", Level.ERROR.name()); assertEquals("FATAL", Level.FATAL.name()); } /** * Test syslog. This test just pretty much makes coverage and stuff. */ public void testSyslog() throws Exception { Syslog syslog=new Syslog("localhost"); syslog.log(Syslog.LOCAL0, Syslog.DEBUG, "Test via syslog"); } /** * Test the logging output streams. * * @throws Exception */ public void testLoggingStreams() throws Exception { PrintStream outSave=System.out; PrintStream errSave=System.err; try { LoggingOutputStream.redefineOutputs(); System.out.println("logging via stdout"); System.out.println("logging via stdout\nWith multiple lines"); System.err.println("logging via stderr"); System.out.write('b'); System.out.write('y'); System.out.write('t'); System.out.write('e'); System.out.write('\r'); System.out.write('\n'); System.out.write('t'); System.out.write('e'); System.out.write('s'); System.out.write('t'); System.out.write('\r'); System.out.write('\n'); String testString=" byte\rarray\ntest\r\n"; System.out.write(testString.getBytes(), 1, testString.length()-1); } finally { System.setOut(outSave); System.setErr(errSave); } } /** * Test picking up an exception argument. */ public void testExceptionArg() throws Exception { Object[] args=new Object[]{"a", 42, new Exception("test")}; Throwable t=((AbstractLogger)logger).getThrowable(args); assertNotNull(t); assertEquals("test", t.getMessage()); } /** * Test when the last argument is not an exception. */ public void testNoExceptionArg() throws Exception { Object[] args=new Object[]{"a", 42, new Exception("test"), "x"}; Throwable t=((AbstractLogger)logger).getThrowable(args); assertNull(t); } }