DoubleInitializationPitfallTest.java

package org.slf4j.simple;

import static org.junit.Assert.fail;

import org.junit.Test;
import org.slf4j.ILoggerFactory;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.slf4j.MarkerFactory;

// See https://jira.qos.ch/browse/SLF4J-463
public class DoubleInitializationPitfallTest {

    // See https://jira.qos.ch/browse/SLF4J-463
    @Test
    public void verifyImpactOfMarkerFactory() {
        ILoggerFactory firstFactory = LoggerFactory.getILoggerFactory();
        MarkerFactory.getMarker("DOUBLE_INIT");
        ILoggerFactory secondFactory = LoggerFactory.getILoggerFactory();

        if (firstFactory != secondFactory) {
            fail("MarkerFactory.getMarker causes multiple provider initialization");
        }
    }

    @Test
    public void verifyImpactOfMDC() {
        ILoggerFactory firstFactory = LoggerFactory.getILoggerFactory();
        MDC.put("DoubleInitializationPitfallTest", "a");
        ILoggerFactory secondFactory = LoggerFactory.getILoggerFactory();

        if (firstFactory != secondFactory) {
            fail("MarkerFactory.getMarker causes multiple provider initialization");
        }
    }

}