package io.prometheus.client.jetty;
import io.prometheus.client.CollectorRegistry;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.handler.StatisticsHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.net.HttpURLConnection;
import java.net.URL;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat;
public class JettyStatisticsCollectorTest {
@Test
public void collect() throws Exception {
Server server = new Server(0);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
HandlerCollection handlers = new HandlerCollection();
StatisticsHandler statisticsHandler = new StatisticsHandler();
statisticsHandler.setServer(server);
handlers.addHandler(statisticsHandler);
// register collector
new JettyStatisticsCollector(statisticsHandler).register();
server.setHandler(handlers);
server.start();
ServerConnector connector = (ServerConnector) server.getConnectors()[0];
int port = connector.getLocalPort();
// send GET request
try {
HttpURLConnection urlConnection = (HttpURLConnection) new URL("http://127.0.0.1:" + port).openConnection();
urlConnection.getInputStream().close();
urlConnection.disconnect();
} catch (FileNotFoundException ignored) {
}
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_requests_total"), is(1.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_requests_active"), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_requests_active_max"), is(1.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_request_time_max_seconds"), is(notNullValue()));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_request_time_seconds_total"), is(notNullValue()));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_dispatched_total"), is(1.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_dispatched_active"), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_dispatched_active_max"), is(greaterThan(0.0)));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_dispatched_time_max"), is(notNullValue()));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_dispatched_time_seconds_total"), is(notNullValue()));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_async_requests_total"), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_async_requests_waiting"), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_async_requests_waiting_max"), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_async_dispatches_total"), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_expires_total"), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_responses",
new String[]{"code"}, new String[]{"1xx"}), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_responses",
new String[]{"code"}, new String[]{"2xx"}), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_responses",
new String[]{"code"}, new String[]{"3xx"}), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_responses",
new String[]{"code"}, new String[]{"4xx"}), is(1.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_responses",
new String[]{"code"}, new String[]{"5xx"}), is(0.0));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_stats_seconds"), is(notNullValue()));
assertThat(CollectorRegistry.defaultRegistry.getSampleValue("jetty_responses_bytes_total"), is(notNullValue()));
}
}