blob: 9aeeb44d2747ce52dc247048fe055ed3a15aea11 [file] [log] [blame]
/*
* Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Jaro Kuruc - Initial API and implementation
// Tomas Kraus - EclipseLink 2.7 integration
package org.eclipse.persistence.testing.tests.logging.slf4j;
import static org.junit.Assert.assertEquals;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.logging.AbstractSessionLog;
import org.eclipse.persistence.logging.slf4j.SLF4JLogger;
import org.eclipse.persistence.sessions.Session;
import org.eclipse.persistence.testing.framework.junit.LogTestExecution;
import org.eclipse.persistence.testing.tests.junit.logging.LogLevelHelper;
import org.eclipse.persistence.testing.tests.logging.LogTestSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
/**
* Unit tests for EclipseLink Logger bridge over SLF4J.
*/
public class SLF4JLoggerTest {
/** Log the test being currently executed. */
@Rule public LogTestExecution logExecution = new LogTestExecution();
/** Current EclipseLink session. */
protected Session session;
/** Logback logger context. */
protected LoggerContext loggerContext;
/**
* Creates an instance of jUnit tests.
*/
public SLF4JLoggerTest() {
}
/**
* Setup unit test.
*/
@Before
public void setup() {
session = new LogTestSession();
session.setName("");
loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
}
/**
* Clean this test suite.
*/
@After
public void reset() {
session = null;
loggerContext = null;
}
/**
* Test {@code SLF4JLogger.getLevel()} method.
*/
@Test
public void testGetLevel() {
final int configuredDefaultLevel = AbstractSessionLog.getDefaultLoggingLevel();
final SLF4JLogger logger = new SLF4JLogger();
final SLF4JLoggerHelper helper = new SLF4JLoggerHelper((AbstractSession)session, loggerContext, logger);
logger.setSession(session);
final int defaultLevel = logger.getLevel();
final String defaultLevelString = LogLevelHelper.logIdToName(defaultLevel);
assertEquals("SLF4J logging level " + defaultLevelString + " did not match configured level "
+ configuredDefaultLevel, configuredDefaultLevel, defaultLevel);
helper.testCategoryDefaultLevels(logger);
}
/**
* Test {@code SLF4JLogger.log(SessionLogEntry)} method with regular {@link String} message.
*/
@Test
public void testLogMessage() {
final SLF4JLogger logger = new SLF4JLogger();
final SLF4JLoggerHelper helper = new SLF4JLoggerHelper(
(AbstractSession)session, loggerContext, logger);
logger.setSession(session);
helper.testLogMessage();
}
/**
* Test {@code SLF4JLogger.log(SessionLogEntry)} method with {@link Throwable} and stack trace logging turned off.
*/
@Test
public void testLogExceptionWithoutStackTrace() {
final SLF4JLogger logger = new SLF4JLogger();
final SLF4JLoggerHelper helper = new SLF4JLoggerHelper(
(AbstractSession)session, loggerContext, logger);
logger.setSession(session);
logger.setShouldLogExceptionStackTrace(false);
helper.testLogExceptionWithoutStackTrace();
}
/**
* Test {@code SLF4JLogger.log(SessionLogEntry)} method with {@link Throwable} and stack trace logging turned on.
*/
@Test
public void testLogExceptionStackTrace() {
final SLF4JLogger logger = new SLF4JLogger();
final SLF4JLoggerHelper helper = new SLF4JLoggerHelper(
(AbstractSession)session, loggerContext, logger);
logger.setSession(session);
logger.setShouldLogExceptionStackTrace(true);
helper.testLogExceptionStackTrace();
}
}