package biz.paluch.logging.gelf.logback; import static org.assertj.core.api.Assertions.assertThat; import java.net.URL; import java.util.List; import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.MDC; import biz.paluch.logging.gelf.netty.NettyLocalHTTPServer; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; /** * @author Mark Paluch */ public class GelfLogbackAppenderHTTPIntegrationTests { private NettyLocalHTTPServer server; LoggerContext lc = null; @BeforeEach public void before() throws Exception { lc = new LoggerContext(); JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(lc); URL xmlConfigFile = getClass().getResource("/logback/logback-gelf-with-http.xml"); configurator.doConfigure(xmlConfigFile); server = new NettyLocalHTTPServer(); server.run(); MDC.remove("mdcField1"); } @AfterEach public void after() throws Exception { server.close(); } @Test public void testHttpSender() { Logger testLogger = lc.getLogger("testLogger"); testLogger.error("Hi there"); List<Object> jsonValues = server.getJsonValues(); String uri = server.getHandlerInitializer().getHandler().getUri(); assertThat(uri).isEqualTo("/foo/bar"); assertThat(jsonValues).hasSize(1); Map<String, Object> jsonObject = (Map<String, Object>) jsonValues.get(0); assertThat(jsonObject.get("short_message")).isEqualTo("Hi there"); } }