package org.apache.jcs.engine.logging; | |
import java.io.StringWriter; | |
import junit.framework.TestCase; | |
import org.apache.jcs.engine.logging.behavior.ICacheEvent; | |
import org.apache.log4j.Level; | |
import org.apache.log4j.Logger; | |
import org.apache.log4j.PatternLayout; | |
import org.apache.log4j.WriterAppender; | |
/** Unit tests for the debug implementation */ | |
public class CacheEventLoggerDebugLoggerUnitTest | |
extends TestCase | |
{ | |
/** verify that we can log */ | |
public void testLogICacheEvent_normal() | |
{ | |
// SETUP | |
String logCategoryName = "testLogEvent_normal"; | |
String source = "mySource"; | |
String region = "my region"; | |
String eventName = "MyEventName"; | |
String optionalDetails = "SomeExtraData"; | |
String key = "my key"; | |
StringWriter stringWriter = new StringWriter(); | |
configureLogger( stringWriter, logCategoryName ); | |
CacheEventLoggerDebugLogger logger = new CacheEventLoggerDebugLogger(); | |
logger.setLogCategoryName( logCategoryName ); | |
ICacheEvent event = logger.createICacheEvent( source, region, eventName, optionalDetails, key ); | |
// DO WORK | |
logger.logICacheEvent( event ); | |
// VERIFY | |
String result = stringWriter.toString(); | |
assertTrue( "An event with the source should have been logged:" + result, result.indexOf( source ) != -1 ); | |
assertTrue( "An event with the region should have been logged:" + result, result.indexOf( region ) != -1 ); | |
assertTrue( "An event with the event name should have been logged:" + result, result.indexOf( eventName ) != -1 ); | |
assertTrue( "An event with the optionalDetails should have been logged:" + result, result.indexOf( optionalDetails ) != -1 ); | |
assertTrue( "An event with the key should have been logged:" + result, result.indexOf( key ) != -1 ); | |
} | |
/** verify that we can log */ | |
public void testLogApplicationEvent_normal() | |
{ | |
// SETUP | |
String logCategoryName = "testLogApplicationEvent_normal"; | |
String source = "mySource"; | |
String eventName = "MyEventName"; | |
String optionalDetails = "SomeExtraData"; | |
StringWriter stringWriter = new StringWriter(); | |
configureLogger( stringWriter, logCategoryName ); | |
CacheEventLoggerDebugLogger logger = new CacheEventLoggerDebugLogger(); | |
logger.setLogCategoryName( logCategoryName ); | |
// DO WORK | |
logger.logApplicationEvent( source, eventName, optionalDetails ); | |
// VERIFY | |
String result = stringWriter.toString(); | |
assertTrue( "An event with the source should have been logged:" + result, result.indexOf( source ) != -1 ); | |
assertTrue( "An event with the event name should have been logged:" + result, result.indexOf( eventName ) != -1 ); | |
assertTrue( "An event with the optionalDetails should have been logged:" + result, result.indexOf( optionalDetails ) != -1 ); | |
} | |
/** verify that we can log */ | |
public void testLogError_normal() | |
{ | |
// SETUP | |
String logCategoryName = "testLogApplicationEvent_normal"; | |
String source = "mySource"; | |
String eventName = "MyEventName"; | |
String errorMessage = "SomeExtraData"; | |
StringWriter stringWriter = new StringWriter(); | |
configureLogger( stringWriter, logCategoryName ); | |
CacheEventLoggerDebugLogger logger = new CacheEventLoggerDebugLogger(); | |
logger.setLogCategoryName( logCategoryName ); | |
// DO WORK | |
logger.logError( source, eventName, errorMessage ); | |
// VERIFY | |
String result = stringWriter.toString(); | |
assertTrue( "An event with the source should have been logged:" + result, result.indexOf( source ) != -1 ); | |
assertTrue( "An event with the event name should have been logged:" + result, result.indexOf( eventName ) != -1 ); | |
assertTrue( "An event with the errorMessage should have been logged:" + result, result.indexOf( errorMessage ) != -1 ); | |
} | |
/** | |
* Configures a logger for the given name. This allows us to check the log output. | |
* <p> | |
* @param stringWriter | |
* @param loggerName | |
*/ | |
private void configureLogger( StringWriter stringWriter, String loggerName ) | |
{ | |
Logger logger = Logger.getLogger( loggerName ); | |
WriterAppender appender = null; | |
try | |
{ | |
appender = new WriterAppender( new PatternLayout(), stringWriter ); | |
} | |
catch ( Exception e ) | |
{ | |
// NOOP | |
} | |
logger.addAppender( appender ); | |
logger.setLevel( Level.DEBUG ); | |
} | |
} |