package io.pcp.parfait.dropwizard; import com.codahale.metrics.MetricRegistry; import com.fasterxml.jackson.databind.ObjectMapper; import io.dropwizard.configuration.YamlConfigurationFactory; import io.dropwizard.jackson.Jackson; import io.dropwizard.metrics.ConsoleReporterFactory; import io.dropwizard.metrics.CsvReporterFactory; import io.dropwizard.metrics.MetricsFactory; import io.dropwizard.metrics.Slf4jReporterFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import javax.validation.Validation; import java.io.File; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @RunWith(MockitoJUnitRunner.class) public class ParfaitReporterFactoryTest { private final ObjectMapper objectMapper = Jackson.newObjectMapper(); private final YamlConfigurationFactory<MetricsFactory> factory = new YamlConfigurationFactory<>(MetricsFactory.class, Validation.buildDefaultValidatorFactory().getValidator(), objectMapper, "dw"); private MetricsFactory config; @Before public void setUp() throws Exception { objectMapper.getSubtypeResolver().registerSubtypes( ConsoleReporterFactory.class, CsvReporterFactory.class, Slf4jReporterFactory.class, ParfaitReporterFactory.class); this.config = factory.build(new File(getClass().getResource("metric-app.yml").toURI())); } @Mock private MetricRegistry metricRegistry; @Test public void testBuildFromYamlConfiguration() throws Exception { ParfaitReporterFactory factory = (ParfaitReporterFactory) config.getReporters().get(0); assertEquals("dropwizard-default", factory.getRegistryName()); assertNotNull(factory.getReplacements().get("io.dropwizard.jetty.MutableServletContextHandler")); ParfaitReporter reporter = (ParfaitReporter) factory.build(metricRegistry); assertNotNull(reporter); } }