package net.gini.dropwizard.gelf.logging; import ch.qos.logback.classic.AsyncAppender; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Appender; import ch.qos.logback.core.helpers.NOPAppender; import io.dropwizard.configuration.ConfigurationException; import io.dropwizard.logging.async.AsyncLoggingEventAppenderFactory; import io.dropwizard.logging.filter.ThresholdLevelFilterFactory; import org.junit.Test; import java.io.IOException; import java.util.Optional; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class GelfAppenderFactoryTest { private static final String APPLICATION_NAME = "applicationName"; @Test public void hasValidDefaults() throws IOException, ConfigurationException { final GelfAppenderFactory factory = new GelfAppenderFactory(); assertThat("default host is 'localhost'", factory.getHost(), is("localhost")); assertThat("default port is 12201", factory.getPort(), is(12201)); assertThat("default origin host is absent", factory.getOriginHost(), is(Optional.<String>empty())); assertThat("default facility is absent", factory.getFacility().isPresent(), is(false)); assertThat("default additional fields are empty", factory.getAdditionalFields().isEmpty(), is(true)); assertThat("default field types are empty", factory.getAdditionalFieldTypes().isEmpty(), is(true)); assertThat("default MDC fields are empty", factory.getMdcFields().isEmpty(), is(true)); assertThat("default dynamic MDC fields are empty", factory.getDynamicMdcFields().isEmpty(), is(true)); assertThat("default maximum message size is 8192", factory.getMaximumMessageSize(), is(8192)); assertThat("default timestamp pattern is \"yyyy-MM-dd HH:mm:ss,SSSS\"", factory.getTimestampPattern(), is("yyyy-MM-dd HH:mm:ss,SSSS")); } @Test public void buildGelfAppenderShouldWorkWithValidConfiguration() { final GelfAppenderFactory gelf = new GelfAppenderFactory(); final Appender<ILoggingEvent> appender = gelf.build(new LoggerContext(), APPLICATION_NAME, null, new ThresholdLevelFilterFactory(), new AsyncLoggingEventAppenderFactory()); assertThat(appender, instanceOf(AsyncAppender.class)); } @Test public void buildGelfAppenderReturnsNOPAppenderIfDisabled() { final GelfAppenderFactory gelf = new GelfAppenderFactory(); gelf.setEnabled(false); final Appender<ILoggingEvent> appender = gelf.build(new LoggerContext(), APPLICATION_NAME, null, new ThresholdLevelFilterFactory(), new AsyncLoggingEventAppenderFactory()); assertThat(appender, instanceOf(NOPAppender.class)); } }