diff --git a/testing/notification-test-core/src/main/java/org/opengroup/osdu/notification/util/TestUtils.java b/testing/notification-test-core/src/main/java/org/opengroup/osdu/notification/util/TestUtils.java index 9e49c7b657d361d3280ae04dfee027ca2f60d45d..ac3e3f8a705b4bc2687926f718ab567fcf31edcb 100644 --- a/testing/notification-test-core/src/main/java/org/opengroup/osdu/notification/util/TestUtils.java +++ b/testing/notification-test-core/src/main/java/org/opengroup/osdu/notification/util/TestUtils.java @@ -18,6 +18,7 @@ package org.opengroup.osdu.notification.util; import static org.junit.Assert.assertEquals; +import java.net.SocketTimeoutException; import java.net.URL; import java.security.SecureRandom; import java.security.cert.X509Certificate; @@ -29,6 +30,7 @@ import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import com.google.gson.Gson; import com.sun.jersey.api.client.Client; @@ -78,58 +80,88 @@ public abstract class TestUtils { Map<String, String> headers, boolean enforceHttp) throws Exception { ClientResponse response; - try { - Client client = getClient(); - client.setConnectTimeout(300000); - client.setReadTimeout(50000); - client.setFollowRedirects(false); - String url = getApiPath(path + query, enforceHttp); - System.out.println(url); - System.out.println(httpMethod); - System.out.println(requestBody); - System.out.println(headers); - - WebResource webResource = client.resource(url); - final WebResource.Builder builder = webResource.type(MediaType.APPLICATION_JSON) - .header("Authorization", token); - headers.forEach((k, v) -> builder.header(k, v)); + Client client = getClient(); + client.setConnectTimeout(300000); + client.setReadTimeout(300000); + client.setFollowRedirects(false); + String url = getApiPath(path + query, enforceHttp); + System.out.println(url); + System.out.println(httpMethod); + System.out.println(requestBody); + System.out.println(headers); + + WebResource webResource = client.resource(url); + final WebResource.Builder builder = webResource.type(MediaType.APPLICATION_JSON) + .header("Authorization", token); + int retryCount = 2; + headers.forEach((k, v) -> builder.header(k, v)); + try{ response = builder.method(httpMethod, ClientResponse.class, requestBody); + while (retryCount > 0) { + if (response.getStatusInfo().getFamily().equals(Response.Status.Family.valueOf("SERVER_ERROR"))) { + System.out.println("got resoponse : " + response.getStatusInfo()); + Thread.sleep(5000); + System.out.println("Retrying.. "); + response = builder.method(httpMethod, ClientResponse.class, requestBody); + } else + break; + retryCount--; + } + System.out.println("sending response from TestUtils send method"); + return response; } catch (Exception e) { + if (e.getCause() instanceof SocketTimeoutException) { + System.out.println("Retrying in case of socket timeout exception"); + return builder.method(httpMethod, ClientResponse.class, requestBody); + } e.printStackTrace(); throw new AssertionError("Error: Send request error", e); } - logger.info("waiting on response"); - return response; } public static ClientResponse send(String url, String path, String httpMethod, String token, String requestBody, String query, Map<String, String> headers, boolean enforceHttp) throws Exception { ClientResponse response; - try { - Client client = getClient(); - client.setConnectTimeout(300000); - client.setReadTimeout(50000); - client.setFollowRedirects(false); - String URL = getApiPath(url, path + query, enforceHttp); - System.out.println(url + path); - System.out.println(httpMethod); - System.out.println(requestBody); - System.out.println(headers); - WebResource webResource = client.resource(URL); - final WebResource.Builder builder = webResource.type(MediaType.APPLICATION_JSON); - if (!token.isEmpty()) { - logger.info("Token is not empty so adding to request header"); - builder.header("Authorization", token); - } - headers.forEach((k, v) -> builder.header(k, v)); + Client client = getClient(); + client.setConnectTimeout(300000); + client.setReadTimeout(300000); + client.setFollowRedirects(false); + String URL = getApiPath(url, path + query, enforceHttp); + System.out.println(url + path); + System.out.println(httpMethod); + System.out.println(requestBody); + System.out.println(headers); + WebResource webResource = client.resource(URL); + final WebResource.Builder builder = webResource.type(MediaType.APPLICATION_JSON); + if (!token.isEmpty()) { + logger.info("Token is not empty so adding to request header"); + builder.header("Authorization", token); + } + int retryCount = 2; + headers.forEach((k, v) -> builder.header(k, v)); + try{ response = builder.method(httpMethod, ClientResponse.class, requestBody); + while (retryCount > 0) { + if (response.getStatusInfo().getFamily().equals(Response.Status.Family.valueOf("SERVER_ERROR"))) { + System.out.println("got resoponse : " + response.getStatusInfo()); + Thread.sleep(5000); + System.out.println("Retrying.. "); + response = builder.method(httpMethod, ClientResponse.class, requestBody); + } else + break; + retryCount--; + } + System.out.println("sending response from TestUtils send method"); + return response; } catch (Exception e) { + if (e.getCause() instanceof SocketTimeoutException) { + System.out.println("Retrying in case of socket timeout exception"); + return builder.method(httpMethod, ClientResponse.class, requestBody); + } e.printStackTrace(); throw new AssertionError("Error: Send request error", e); } - logger.info("waiting on response"); - return response; }