JAMES-2617 Use REST API instead of ElasticSearch deprecated native interface
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ca6d6da2 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ca6d6da2 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ca6d6da2 Branch: refs/heads/master Commit: ca6d6da2d4ca23a125a1b6892f274cfc9f119140 Parents: 14710bb Author: Raphael Ouazana <[email protected]> Authored: Wed Dec 5 12:04:44 2018 +0100 Committer: Raphael Ouazana <[email protected]> Committed: Wed Dec 5 15:19:18 2018 +0100 ---------------------------------------------------------------------- .../metrics/metrics-es-reporter/pom.xml | 5 ++ .../apache/james/metric/es/ESReporterTest.java | 48 +++++++++----------- 2 files changed, 27 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ca6d6da2/server/container/metrics/metrics-es-reporter/pom.xml ---------------------------------------------------------------------- diff --git a/server/container/metrics/metrics-es-reporter/pom.xml b/server/container/metrics/metrics-es-reporter/pom.xml index ebc9e81..8a9583d 100644 --- a/server/container/metrics/metrics-es-reporter/pom.xml +++ b/server/container/metrics/metrics-es-reporter/pom.xml @@ -57,6 +57,11 @@ <artifactId>metrics-core</artifactId> </dependency> <dependency> + <groupId>io.rest-assured</groupId> + <artifactId>rest-assured</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> </dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/ca6d6da2/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java ---------------------------------------------------------------------- diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java index 30820f9..37e7e21 100644 --- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java +++ b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java @@ -19,14 +19,14 @@ package org.apache.james.metric.es; +import static io.restassured.RestAssured.when; import static org.awaitility.Awaitility.await; +import static org.hamcrest.Matchers.greaterThan; -import java.util.Optional; import java.util.Timer; import java.util.TimerTask; -import org.apache.james.backends.es.ClientProvider; -import org.apache.james.backends.es.ClientProviderImpl; +import org.apache.http.HttpStatus; import org.apache.james.metrics.api.Metric; import org.apache.james.metrics.api.TimeMetric; import org.apache.james.metrics.dropwizard.DropWizardMetricFactory; @@ -36,8 +36,6 @@ import org.apache.james.util.docker.Images; import org.apache.james.util.docker.RateLimiters; import org.apache.james.util.docker.SwarmGenericContainer; import org.awaitility.Duration; -import org.elasticsearch.client.Client; -import org.elasticsearch.index.query.QueryBuilders; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -46,31 +44,30 @@ import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy; import com.codahale.metrics.MetricRegistry; -public class ESReporterTest { +import io.restassured.RestAssured; +public class ESReporterTest { public static final String INDEX = "index_name"; public static final long PERIOD_IN_SECOND = 1L; public static final int DELAY_IN_MS = 100; public static final int PERIOD_IN_MS = 100; - public static final int ES_APPLICATIVE_PORT = 9300; public static final int ES_HTTP_PORT = 9200; @Rule public SwarmGenericContainer esContainer = new SwarmGenericContainer(Images.ELASTICSEARCH) .withAffinityToContainer() - .withExposedPorts(ES_HTTP_PORT, ES_APPLICATIVE_PORT) + .withExposedPorts(ES_HTTP_PORT) .waitingFor(new HostPortWaitStrategy().withRateLimiter(RateLimiters.TWENTIES_PER_SECOND)); - private ClientProvider clientProvider; private ESMetricReporter esMetricReporter; private MetricRegistry registry; private Timer timer; @Before public void setUp() { - clientProvider = ClientProviderImpl.forHost(esContainer.getHostIp(), esContainer.getMappedPort(ES_APPLICATIVE_PORT), Optional.empty()); + RestAssured.baseURI = String.format("http://%s:%d", esContainer.getHostIp(), esContainer.getMappedPort(ES_HTTP_PORT)); await().atMost(Duration.ONE_MINUTE) - .until(() -> elasticSearchStarted(clientProvider)); + .untilAsserted(() -> elasticSearchStarted()); registry = new MetricRegistry(); timer = new Timer(); @@ -104,7 +101,7 @@ public class ESReporterTest { timer.schedule(timerTask, DELAY_IN_MS, PERIOD_IN_MS); await().atMost(Duration.TEN_MINUTES) - .until(() -> done(clientProvider)); + .untilAsserted(() -> done()); } @Test @@ -121,23 +118,22 @@ public class ESReporterTest { timer.schedule(timerTask, DELAY_IN_MS, PERIOD_IN_MS); await().atMost(Duration.TEN_MINUTES) - .until(() -> done(clientProvider)); + .untilAsserted(() -> done()); } - private boolean elasticSearchStarted(ClientProvider clientProvider) { - try (Client client = clientProvider.get()) { - return true; - } catch (Exception e) { - return false; - } + private void elasticSearchStarted() { + when() + .get("/") + .then() + .assertThat() + .statusCode(HttpStatus.SC_OK); } - private boolean done(ClientProvider clientProvider) { - try (Client client = clientProvider.get()) { - return client.prepareSearch().setQuery(QueryBuilders.matchAllQuery()).get().getHits().totalHits() > 0; - } catch (Exception e) { - return false; - } + private void done() { + when() + .get("/_search") + .then() + .assertThat() + .body("hits.total", greaterThan(0)); } - } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
