diff --git a/testing/integration-tests/search-test-azure/src/test/java/org/opengroup/osdu/util/AzureHTTPClient.java b/testing/integration-tests/search-test-azure/src/test/java/org/opengroup/osdu/util/AzureHTTPClient.java index b7d6a8ca49ec74c80688b579b3764a7e1ae206b8..2b1b87398f804b3246409568af6611cbcf164f8b 100644 --- a/testing/integration-tests/search-test-azure/src/test/java/org/opengroup/osdu/util/AzureHTTPClient.java +++ b/testing/integration-tests/search-test-azure/src/test/java/org/opengroup/osdu/util/AzureHTTPClient.java @@ -14,9 +14,16 @@ package org.opengroup.osdu.util; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; import lombok.ToString; import lombok.extern.java.Log; +import javax.ws.rs.core.Response; +import java.net.SocketTimeoutException; +import java.util.Map; + @Log @ToString public class AzureHTTPClient extends HTTPClient { @@ -34,4 +41,44 @@ public class AzureHTTPClient extends HTTPClient { } return token; } -} \ No newline at end of file + + public ClientResponse send(String httpMethod, String url, String payLoad, Map<String, String> headers, String token) { + ClientResponse response; + System.out.println("in Azure send method"); + String correlationId = java.util.UUID.randomUUID().toString(); + log.info(String.format("Request correlation id: %s", correlationId)); + headers.put(HEADER_CORRELATION_ID, correlationId); + Client client = getClient(); + client.setReadTimeout(300000); + client.setConnectTimeout(300000); + log.info(String.format("httpMethod: %s", httpMethod)); + log.info(String.format("payLoad: %s", payLoad)); + log.info(String.format("headers: %s", headers)); + log.info(String.format("URL: %s", url)); + WebResource webResource = client.resource(url); + log.info("waiting on response in azure send"); + int retryCount = 2; + try{ + response = this.getClientResponse(httpMethod, payLoad, webResource, headers, token); + while (retryCount > 0) { + if (response.getStatusInfo().getFamily().equals(Response.Status.Family.valueOf("SERVER_ERROR"))) { + log.info(String.format("got resoponse : %s", response.getStatusInfo())); + Thread.sleep(5000); + log.info(String.format("Retrying --- ")); + response = this.getClientResponse(httpMethod, payLoad, webResource, headers, token); + } else + break; + retryCount--; + } + System.out.println("sending response from azure send method"); + return response; + } catch (Exception e) { + if (e.getCause() instanceof SocketTimeoutException) { + System.out.println("Retrying in case of socket timeout exception"); + return this.getClientResponse(httpMethod, payLoad, webResource, headers, token); + } + e.printStackTrace(); + throw new AssertionError("Error: Send request error", e); + } + } +} diff --git a/testing/integration-tests/search-test-core/src/main/java/org/opengroup/osdu/util/HTTPClient.java b/testing/integration-tests/search-test-core/src/main/java/org/opengroup/osdu/util/HTTPClient.java index 6b482bf5a5975c7445afa9a81d603e9eada598a6..ecc1998ceab89c5229d23282f2ab32d327f054ae 100644 --- a/testing/integration-tests/search-test-core/src/main/java/org/opengroup/osdu/util/HTTPClient.java +++ b/testing/integration-tests/search-test-core/src/main/java/org/opengroup/osdu/util/HTTPClient.java @@ -24,11 +24,11 @@ public abstract class HTTPClient { private static Random random = new Random(); private final int MAX_ID_SIZE = 50; - private static final String HEADER_CORRELATION_ID = "correlation-id"; + protected static final String HEADER_CORRELATION_ID = "correlation-id"; public abstract String getAccessToken(); - private static Client getClient() { + protected static Client getClient() { TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { @@ -60,7 +60,7 @@ public abstract class HTTPClient { log.info(String.format("Request correlation id: %s", correlationId)); headers.put(HEADER_CORRELATION_ID, correlationId); Client client = getClient(); - client.setReadTimeout(180000); + client.setReadTimeout(300000); client.setConnectTimeout(300000); log.info(String.format("URL: %s", url)); WebResource webResource = client.resource(url); @@ -73,7 +73,7 @@ public abstract class HTTPClient { return response; } - private ClientResponse getClientResponse(String httpMethod, String requestBody, WebResource webResource, Map<String, String> headers, String token) { + protected ClientResponse getClientResponse(String httpMethod, String requestBody, WebResource webResource, Map<String, String> headers, String token) { final WebResource.Builder builder = webResource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).header("Authorization", token); headers.forEach(builder::header); log.info("making request to datalake api");