From e41f89fba4a4b79fc4d3d59a1f3ca0f2f56d1de1 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Tue, 8 Aug 2017 11:50:20 +0800 Subject: [PATCH] Backfills tests for ES_HOSTS (#1682) --- .../http/ElasticsearchHttpStorageTest.java | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/zipkin-storage/elasticsearch-http/src/test/java/zipkin/storage/elasticsearch/http/ElasticsearchHttpStorageTest.java b/zipkin-storage/elasticsearch-http/src/test/java/zipkin/storage/elasticsearch/http/ElasticsearchHttpStorageTest.java index 1f8d24e3789..fd4d0611430 100644 --- a/zipkin-storage/elasticsearch-http/src/test/java/zipkin/storage/elasticsearch/http/ElasticsearchHttpStorageTest.java +++ b/zipkin-storage/elasticsearch-http/src/test/java/zipkin/storage/elasticsearch/http/ElasticsearchHttpStorageTest.java @@ -15,11 +15,14 @@ import java.io.IOException; import java.util.concurrent.TimeUnit; +import okhttp3.OkHttpClient; +import okhttp3.internal.tls.SslClient; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import org.junit.After; import org.junit.Rule; import org.junit.Test; +import zipkin.Component; import zipkin.storage.elasticsearch.http.internal.LenientDoubleCallbackAsyncSpanStore; import static java.util.Arrays.asList; @@ -144,4 +147,81 @@ void checkLegacyComponents(MockResponse response) throws InterruptedException { es.takeRequest(); // get version es.takeRequest(); // get legacy template } + + String healthResponse = "{\n" + + " \"cluster_name\": \"elasticsearch_zipkin\",\n" + + " \"status\": \"yellow\",\n" + + " \"timed_out\": false,\n" + + " \"number_of_nodes\": 1,\n" + + " \"number_of_data_nodes\": 1,\n" + + " \"active_primary_shards\": 5,\n" + + " \"active_shards\": 5,\n" + + " \"relocating_shards\": 0,\n" + + " \"initializing_shards\": 0,\n" + + " \"unassigned_shards\": 5,\n" + + " \"delayed_unassigned_shards\": 0,\n" + + " \"number_of_pending_tasks\": 0,\n" + + " \"number_of_in_flight_fetch\": 0,\n" + + " \"task_max_waiting_in_queue_millis\": 0,\n" + + " \"active_shards_percent_as_number\": 50\n" + + "}"; + + @Test public void check() throws Exception { + es.enqueue(new MockResponse().setBody(healthResponse)); + + assertThat(storage.check()) + .isEqualTo(Component.CheckResult.OK); + } + + @Test public void check_oneHostDown() throws Exception { + storage.close(); + OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(100, TimeUnit.MILLISECONDS) + .build(); + storage = ElasticsearchHttpStorage.builder(client) + .hosts(asList("http://1.2.3.4:" + es.getPort(), es.url("").toString())) + .build(); + + es.enqueue(new MockResponse().setBody(healthResponse)); + + assertThat(storage.check()) + .isEqualTo(Component.CheckResult.OK); + } + + @Test public void check_ssl() throws Exception { + storage.close(); + SslClient sslClient = SslClient.localhost(); + OkHttpClient client = new OkHttpClient.Builder() + .sslSocketFactory(sslClient.socketFactory, sslClient.trustManager) + .build(); + es.useHttps(sslClient.socketFactory, false); + + storage = ElasticsearchHttpStorage.builder(client) + .hosts(asList(es.url("").toString())) + .build(); + + es.enqueue(new MockResponse().setBody(healthResponse)); + + assertThat(storage.check()) + .isEqualTo(Component.CheckResult.OK); + + assertThat(es.takeRequest().getTlsVersion()) + .isNotNull(); + } + + @Test(expected = IllegalArgumentException.class) + public void multipleSslNotYetSupported() throws Exception { + storage.close(); + SslClient sslClient = SslClient.localhost(); + OkHttpClient client = new OkHttpClient.Builder() + .sslSocketFactory(sslClient.socketFactory, sslClient.trustManager) + .build(); + es.useHttps(sslClient.socketFactory, false); + + storage = ElasticsearchHttpStorage.builder(client) + .hosts(asList("https://1.2.3.4:" + es.getPort(), es.url("").toString())) + .build(); + + storage.check(); + } }