package org.jboss.resteasy.test.resteasy_jaxrs.i18n;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.util.Locale;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.jboss.resteasy.resteasy_jaxrs.i18n.LogMessages;
import org.junit.Assert;
import org.junit.Test;
/**
*
* @author <a href="ron.sigal@jboss.com">Ron Sigal</a>
* @version $Revision: 1.1 $
*
* Copyright Aug 20, 2015
*/
public abstract class TestLogMessages_Abstract extends TestMessagesParent
{
static protected Locale savedLocale;
protected static final String BASE = "002";
protected ByteArrayOutputStream baos = new ByteArrayOutputStream();
public void before(Level level, Locale locale, String filename) throws Exception
{
super.before(locale, filename);
String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
PatternLayout layout = new PatternLayout(pattern);
ConsoleAppender consoleAppender = new ConsoleAppender(layout);
baos.reset();
PrintWriter writer = new PrintWriter(baos, true);
consoleAppender.setWriter(writer);
Logger.getLogger("org.jboss.resteasy").addAppender(consoleAppender);
Logger.getLogger("org.jboss.resteasy").setLevel(level);
System.out.println("org.jboss.resteasy Level: " + Logger.getLogger("org.jboss.resteasy").getEffectiveLevel());
}
@Test
public void testLocale() throws Exception
{
String filename = "org/jboss/resteasy/resteasy_jaxrs/i18n/LogMessages.i18n_" + getLocale().toString() + ".properties";
if (!(before(getLocale(), filename)))
{
System.out.println(getClass() + ": " + filename + " not found.");
return;
}
doTest(getLocale(), filename);
}
protected void doTest(Locale locale, String filename) throws Exception
{
doTestFatal(locale, filename);
doTestError(locale, filename);
doTestWarn (locale, filename);
doTestInfo (locale, filename);
doTestDebug(locale, filename);
doTestTrace(locale, filename);
}
protected void doTestFatal(Locale locale, String filename) throws Exception
{
before(Level.FATAL, getLocale(), filename);
LogMessages.LOGGER.failedExecutingError("method", "path", new Exception("oh no mr bill"));
LogMessages.LOGGER.couldNotDeleteFile("path", new Exception("Sluggo says"));
Assert.assertEquals("", baos.toString());
}
protected void doTestError(Locale locale, String filename) throws Exception
{
before(Level.ERROR, getLocale(), filename);
// ERROR
LogMessages.LOGGER.failedExecutingError("method", "path", new Exception("oh no mr bill"));
System.out.println("actual: " + baos.toString());
String expected = getExpected(BASE + "005", "failedExecutingError", "method", "path");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("oh no mr bill"));
baos.reset();
// WARN
LogMessages.LOGGER.couldNotDeleteFile("path3", new Exception("Sluggo says"));
Assert.assertEquals("", baos.toString());
}
protected void doTestWarn(Locale locale, String filename) throws Exception
{
before(Level.WARN, locale, filename);
// ERROR
LogMessages.LOGGER.failedExecutingError("method", "path", new Exception("oh no mr bill"));
String expected = getExpected(BASE + "005", "failedExecutingError", "method", "path");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("oh no mr bill"));
baos.reset();
// WARN
LogMessages.LOGGER.couldNotDeleteFile("file", new Exception("Sluggo says"));
expected = getExpected(BASE + "125", "couldNotDeleteFile", "file");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("Sluggo says"));
baos.reset();
// INFO
LogMessages.LOGGER.deployingApplication("class", getClass());
Assert.assertEquals("", baos.toString());
}
protected void doTestInfo(Locale locale, String filename) throws Exception
{
before(Level.INFO, locale, filename);
// ERROR
LogMessages.LOGGER.failedExecutingError("method", "path", new Exception("oh no mr bill"));
String expected = getExpected(BASE + "005", "failedExecutingError", "method", "path");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("oh no mr bill"));
baos.reset();
// WARN
LogMessages.LOGGER.couldNotDeleteFile("file", new Exception("Sluggo says"));
expected = getExpected(BASE + "125", "couldNotDeleteFile", "file");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("Sluggo says"));
baos.reset();
// INFO
LogMessages.LOGGER.deployingApplication("className", getClass());
expected = getExpected(BASE + "225", "deployingApplication", "className", getClass());
Assert.assertTrue(baos.toString().contains(expected));
baos.reset();
// DEBUG
LogMessages.LOGGER.creatingContextObject("key", "value");
Assert.assertEquals("", baos.toString());
}
protected void doTestDebug(Locale locale, String filename) throws Exception
{
before(Level.DEBUG, locale, filename);
// ERROR
LogMessages.LOGGER.failedExecutingError("method", "path", new Exception("oh no mr bill"));
String expected = getExpected(BASE + "005", "failedExecutingError", "method", "path");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("oh no mr bill"));
baos.reset();
// WARN
LogMessages.LOGGER.couldNotDeleteFile("file", new Exception("Sluggo says"));
expected = getExpected(BASE + "125", "couldNotDeleteFile", "file");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("Sluggo says"));
baos.reset();
// INFO
LogMessages.LOGGER.deployingApplication("className", getClass());
expected = getExpected(BASE + "225", "deployingApplication", "className", getClass());
Assert.assertTrue(baos.toString().contains(expected));
baos.reset();
// DEBUG
LogMessages.LOGGER.creatingContextObject("key", "value");
expected = getExpected(BASE + "300", "creatingContextObject", "key", "value");
Assert.assertTrue(baos.toString().contains(expected));
}
protected void doTestTrace(Locale locale, String filename) throws Exception
{
before(Level.TRACE, locale, filename);
// ERROR
LogMessages.LOGGER.failedExecutingError("method", "path", new Exception("oh no mr bill"));
String expected = getExpected(BASE + "005", "failedExecutingError", "method", "path");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("oh no mr bill"));
baos.reset();
// WARN
LogMessages.LOGGER.couldNotDeleteFile("file", new Exception("Sluggo says"));
expected = getExpected(BASE + "125", "couldNotDeleteFile", "file");
Assert.assertTrue(baos.toString().contains(expected));
Assert.assertTrue(baos.toString().contains("java.lang.Exception"));
Assert.assertTrue(baos.toString().contains("Sluggo says"));
baos.reset();
// INFO
LogMessages.LOGGER.deployingApplication("className", getClass());
expected = getExpected(BASE + "225", "deployingApplication", "className", getClass());
Assert.assertTrue(baos.toString().contains(expected));
baos.reset();
// DEBUG
LogMessages.LOGGER.creatingContextObject("key", "value");
expected = getExpected(BASE + "300", "creatingContextObject", "key", "value");
Assert.assertTrue(baos.toString().contains(expected));
}
@Override
protected int getExpectedNumberOfMethods()
{
System.out.println("expected number of methods: " +LogMessages.class.getDeclaredMethods().length);
return LogMessages.class.getDeclaredMethods().length;
}
abstract protected Locale getLocale();
}