package org.ops4j.pax.exam.karaf.container.internal; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import java.util.Properties; import org.junit.Test; public class LoggingBackendTest { @Test public void testLog4J2EmptyPropertiesSetsRootLoggerLevel() { Properties properties = new Properties(); LoggingBackend.LOG4J2.updatePaxLoggingConfiguration(properties, "chosenLevel"); Properties expectedProperties = makeProperties("log4j2.rootLogger.level", "chosenLevel"); assertThat(properties, equalTo(expectedProperties)); } @Test public void testLog4J2OverwritesAlreadySetRootLoggerLevel() { Properties properties = makeProperties("log4j2.rootLogger.level", "originalLevel"); LoggingBackend.LOG4J2.updatePaxLoggingConfiguration(properties, "chosenLevel"); Properties expectedProperties = makeProperties("log4j2.rootLogger.level", "chosenLevel"); assertThat(properties, equalTo(expectedProperties)); } @Test public void testLog4J2PropertiesWithUnusedConsoleAppenderAddsConsoleAppender() { Properties properties = makeProperties("log4j2.appender.console.type", "Console", "log4j2.appender.console.name", "RenamedConsole"); LoggingBackend.LOG4J2.updatePaxLoggingConfiguration(properties, "chosenLevel"); Properties expectedProperties = makeProperties("log4j2.rootLogger.level", "chosenLevel", "log4j2.appender.console.type", "Console", "log4j2.appender.console.name", "RenamedConsole", "log4j2.rootLogger.appenderRef.RenamedConsole.ref", "RenamedConsole"); assertThat(properties, equalTo(expectedProperties)); } @Test public void testLog4J2PropertiesWithUsedConsoleAppenderDoesNotAddConsoleAppender() { Properties properties = makeProperties("log4j2.appender.console.type", "Console", "log4j2.appender.console.name", "RenamedConsole", "log4j2.rootLogger.appenderRef.ren_con.ref", "RenamedConsole"); LoggingBackend.LOG4J2.updatePaxLoggingConfiguration(properties, "chosenLevel"); Properties expectedProperties = makeProperties("log4j2.rootLogger.level", "chosenLevel", "log4j2.appender.console.type", "Console", "log4j2.appender.console.name", "RenamedConsole", "log4j2.rootLogger.appenderRef.ren_con.ref", "RenamedConsole"); assertThat(properties, equalTo(expectedProperties)); } private Properties makeProperties(String... args) { Properties properties = new Properties(); for (int i = 0; i < args.length; i += 2) { properties.setProperty(args[i], args[i + 1]); } return properties; } }