package play.modules.logger; import org.apache.log4j.Category; import org.apache.log4j.MDC; import org.apache.log4j.spi.LoggingEvent; import org.junit.After; import org.junit.Test; import play.mvc.Http; import static org.apache.log4j.Level.WARN; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; public class RequestIdPatternConverterTest { @After public void tearDown() throws Exception { MDC.clear(); Http.Request.current.set(null); } @Test public void returnRequestIdFromMDCIfRequestIsMissing() throws Exception { Http.Request.current.remove(); MDC.put("requestId", "job-exec-273"); LoggingEvent event = new LoggingEvent("INFO", mock(Category.class), WARN, "message", null); assertThat(new RequestIdPatternConverter().convert(event), is("job-exec-273")); } @Test public void returnsThreadNameIfRequestAndMDCIsMissing() throws Exception { Thread.currentThread().setName("Thread name"); LoggingEvent event = new LoggingEvent("INFO", mock(Category.class), WARN, "message", null); assertThat(new RequestIdPatternConverter().convert(event), is("Thread name")); } @Test @SuppressWarnings("deprecation") public void returnsRequestIdIfRequestIsPresent() throws Exception { Http.Request request = new Http.Request(); request.args.put("requestId", "123"); Http.Request.current.set(request); LoggingEvent event = new LoggingEvent("INFO", mock(Category.class), WARN, "message", null); assertThat(new RequestIdPatternConverter().convert(event), is("123")); } @Test @SuppressWarnings("deprecation") public void returnsThreadNameIfRequestIdInRequestIsMissing() throws Exception { Thread.currentThread().setName("Thread name"); Http.Request.current.set(new Http.Request()); LoggingEvent event = new LoggingEvent("INFO", mock(Category.class), WARN, "message", null); assertThat(new RequestIdPatternConverter().convert(event), is("Thread name")); } }