package io.dropwizard.metrics.jetty9; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.DefaultHandler; import org.junit.After; import org.junit.Before; import org.junit.Test; import io.dropwizard.metrics.jetty9.InstrumentedHandler; import io.dropwizard.metrics.MetricName; import io.dropwizard.metrics.MetricRegistry; import static org.assertj.core.api.Assertions.assertThat; public class InstrumentedHandlerTest { private final HttpClient client = new HttpClient(); private final MetricRegistry registry = new MetricRegistry(); private final Server server = new Server(); private final ServerConnector connector = new ServerConnector(server); private final InstrumentedHandler handler = new InstrumentedHandler(registry); @Before public void setUp() throws Exception { handler.setName("handler"); handler.setHandler(new DefaultHandler()); server.addConnector(connector); server.setHandler(handler); server.start(); client.start(); } @After public void tearDown() throws Exception { server.stop(); client.stop(); } @Test public void hasAName() throws Exception { assertThat(handler.getName()) .isEqualTo("handler"); } @Test public void createsMetricsForTheHandler() throws Exception { final ContentResponse response = client.GET("http://localhost:" + connector.getLocalPort() + "/hello"); assertThat(response.getStatus()) .isEqualTo(404); final MetricName prefix = MetricName.build("org.eclipse.jetty.server.handler.DefaultHandler.handler"); assertThat(registry.getNames()) .containsOnly( prefix.resolve("1xx-responses"), prefix.resolve("2xx-responses"), prefix.resolve("3xx-responses"), prefix.resolve("4xx-responses"), prefix.resolve("5xx-responses"), prefix.resolve("percent-4xx-1m"), prefix.resolve("percent-4xx-5m"), prefix.resolve("percent-4xx-15m"), prefix.resolve("percent-5xx-1m"), prefix.resolve("percent-5xx-5m"), prefix.resolve("percent-5xx-15m"), prefix.resolve("requests"), prefix.resolve("active-suspended"), prefix.resolve("async-dispatches"), prefix.resolve("async-timeouts"), prefix.resolve("get-requests"), prefix.resolve("put-requests"), prefix.resolve("active-dispatches"), prefix.resolve("trace-requests"), prefix.resolve("other-requests"), prefix.resolve("connect-requests"), prefix.resolve("dispatches"), prefix.resolve("head-requests"), prefix.resolve("post-requests"), prefix.resolve("options-requests"), prefix.resolve("active-requests"), prefix.resolve("delete-requests"), prefix.resolve("move-requests") ); } }