package io.dropwizard.metrics;
import com.codahale.metrics.MetricRegistry;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.io.Resources;
import io.dropwizard.configuration.YamlConfigurationFactory;
import io.dropwizard.jackson.DiscoverableSubtypeResolver;
import io.dropwizard.jackson.Jackson;
import io.dropwizard.lifecycle.setup.LifecycleEnvironment;
import io.dropwizard.validation.BaseValidator;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import static org.assertj.core.api.Assertions.assertThat;
public class CsvReporterFactoryTest {
private final ObjectMapper objectMapper = Jackson.newObjectMapper();
private final YamlConfigurationFactory<MetricsFactory> factory =
new YamlConfigurationFactory<>(MetricsFactory.class,
BaseValidator.newValidator(),
objectMapper, "dw");
@Before
public void setUp() throws Exception {
objectMapper.getSubtypeResolver().registerSubtypes(ConsoleReporterFactory.class,
CsvReporterFactory.class,
Slf4jReporterFactory.class);
}
@Test
public void isDiscoverable() throws Exception {
assertThat(new DiscoverableSubtypeResolver().getDiscoveredSubtypes())
.contains(CsvReporterFactory.class);
}
@Test
public void directoryCreatedOnStartup() throws Exception {
File dir = new File("metrics");
dir.delete();
MetricsFactory config = factory.build(new File(Resources.getResource("yaml/metrics.yml").toURI()));
config.configure(new LifecycleEnvironment(), new MetricRegistry());
assertThat(dir.exists()).isEqualTo(true);
}
}