package com.example.request_log; import com.codahale.metrics.health.HealthCheck; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import io.dropwizard.Application; import io.dropwizard.Configuration; import io.dropwizard.client.JerseyClientBuilder; import io.dropwizard.client.JerseyClientConfiguration; import io.dropwizard.setup.Environment; import io.dropwizard.testing.ConfigOverride; import io.dropwizard.testing.ResourceHelpers; import io.dropwizard.testing.junit.DropwizardAppRule; import io.dropwizard.util.Duration; import org.junit.After; import org.junit.Before; import org.junit.Rule; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; import javax.ws.rs.client.Client; import javax.ws.rs.core.Context; import java.io.File; import java.io.IOException; import java.util.List; public abstract class AbstractRequestLogPatternIntegrationTest { public static class TestApplication extends Application<Configuration> { public static void main(String[] args) throws Exception { new TestApplication().run(args); } @Override public void run(Configuration configuration, Environment environment) throws Exception { environment.jersey().register(TestResource.class); environment.healthChecks().register("dummy", new HealthCheck() { @Override protected Result check() throws Exception { return Result.healthy(); } }); } } @Path("/greet") public static class TestResource { @GET public String get(@QueryParam("name") String name, @Context HttpServletRequest httpRequest) { return String.format("Hello, %s!", name); } } protected final String tempFile = createTempFile(); protected Client client; @Rule public DropwizardAppRule<Configuration> dropwizardAppRule = new DropwizardAppRule<>(TestApplication.class, ResourceHelpers.resourceFilePath("request_log/test-custom-request-log.yml"), Iterables.toArray(configOverrides(), ConfigOverride.class)); private static String createTempFile() { try { return File.createTempFile("request-logs", null).getAbsolutePath(); } catch (IOException e) { throw new IllegalStateException(e); } } protected List<ConfigOverride> configOverrides() { return ImmutableList.of(ConfigOverride.config("server.requestLog.appenders[0].currentLogFilename", tempFile)); } @Before public void setUp() throws Exception { final JerseyClientConfiguration configuration = new JerseyClientConfiguration(); configuration.setTimeout(Duration.seconds(2)); client = new JerseyClientBuilder(dropwizardAppRule.getEnvironment()) .using(configuration) .build("test-request-logs"); } @After public void tearDown() throws Exception { client.close(); } }