From 2873fe7de4313e96b593cab63371d050574a4086 Mon Sep 17 00:00:00 2001 From: Alan Braz <alanbraz@br.ibm.com> Date: Thu, 26 Mar 2020 15:54:59 -0300 Subject: [PATCH] move SSL skip to ibm folder --- .../step_definitions/index/record/Steps.java | 7 +- .../opengroup/osdu/util/ElasticUtilsIBM.java | 97 +++++++++++++++++++ 2 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java diff --git a/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java index 2d402c72f..126934d41 100644 --- a/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java +++ b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/step_definitions/index/record/Steps.java @@ -1,21 +1,22 @@ package org.opengroup.osdu.step_definitions.index.record; -import lombok.extern.java.Log; import org.opengroup.osdu.common.RecordSteps; +import org.opengroup.osdu.util.ElasticUtilsIBM; import org.opengroup.osdu.util.IBMHTTPClient; +import cucumber.api.DataTable; import cucumber.api.Scenario; import cucumber.api.java.Before; -import cucumber.api.DataTable; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; +import lombok.extern.java.Log; @Log public class Steps extends RecordSteps { public Steps() { - super(new IBMHTTPClient()); + super(new IBMHTTPClient(), new ElasticUtilsIBM()); } @Before diff --git a/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java new file mode 100644 index 000000000..62055bc74 --- /dev/null +++ b/testing/indexer-test-ibm/src/test/java/org/opengroup/osdu/util/ElasticUtilsIBM.java @@ -0,0 +1,97 @@ +package org.opengroup.osdu.util; + +import java.security.SecureRandom; +import java.security.cert.X509Certificate; +import java.util.Base64; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +import org.apache.http.Header; +import org.apache.http.HttpHost; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; +import org.apache.http.message.BasicHeader; +import org.elasticsearch.client.RestClient; +import org.elasticsearch.client.RestClientBuilder; +import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback; +import org.elasticsearch.client.RestHighLevelClient; + +import lombok.extern.java.Log; + + +/** + * All util methods to use elastic apis for tests + * It should be used only in the Setup or TearDown phase of the test + */ +@Log +public class ElasticUtilsIBM extends ElasticUtils { + + private static final int REST_CLIENT_CONNECT_TIMEOUT = 5000; + private static final int REST_CLIENT_SOCKET_TIMEOUT = 60000; + private static final int REST_CLIENT_RETRY_TIMEOUT = 60000; + + public ElasticUtilsIBM() { + super(); + } + + @Override + protected RestHighLevelClient createClient(String username, String password, String host) { + + RestHighLevelClient restHighLevelClient; + int port = Config.getPort(); + try { + String rawString = String.format("%s:%s", username, password); + RestClientBuilder builder = RestClient.builder(new HttpHost(host, port, "https")); + builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(REST_CLIENT_CONNECT_TIMEOUT) + .setSocketTimeout(REST_CLIENT_SOCKET_TIMEOUT)); + builder.setMaxRetryTimeoutMillis(REST_CLIENT_RETRY_TIMEOUT); + + Header[] defaultHeaders = new Header[]{ + new BasicHeader("client.transport.nodes_sampler_interval", "30s"), + new BasicHeader("client.transport.ping_timeout", "30s"), + new BasicHeader("client.transport.sniff", "false"), + new BasicHeader("request.headers.X-Found-Cluster", Config.getElasticHost()), + new BasicHeader("cluster.name", Config.getElasticHost()), + new BasicHeader("xpack.security.transport.ssl.enabled", Boolean.toString(true)), + new BasicHeader("Authorization", String.format("Basic %s", Base64.getEncoder().encodeToString(rawString.getBytes()))), + }; + + + SSLContext sslContext = SSLContext.getInstance("SSL"); + // set up a TrustManager that trusts everything + sslContext.init(null, new TrustManager[] { new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + System.out.println("getAcceptedIssuers ============="); + return null; + } + public void checkClientTrusted(X509Certificate[] certs, + String authType) { + System.out.println("checkClientTrusted ============="); + } + public void checkServerTrusted(X509Certificate[] certs, + String authType) { + System.out.println("checkServerTrusted ============="); + } + } }, new SecureRandom()); + + builder.setHttpClientConfigCallback(new HttpClientConfigCallback() { + @Override + public HttpAsyncClientBuilder customizeHttpClient( + HttpAsyncClientBuilder httpClientBuilder) { + return httpClientBuilder + .setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) + .setSSLContext(sslContext); + } + }) + .setDefaultHeaders(defaultHeaders); + restHighLevelClient = new RestHighLevelClient(builder); + + } catch (Exception e) { + throw new AssertionError("Setup elastic error"); + } + return restHighLevelClient; + } + +} \ No newline at end of file -- GitLab