Skip to content
Snippets Groups Projects
Commit 20dcd939 authored by Harshika Dhoot's avatar Harshika Dhoot
Browse files

Merge branch 'users/preetisingh/jersyClientRetryMaster' into 'master'

Adding retry for transient server errors and socket timeout exception from client

See merge request !273
parents 20602750 702cc402
No related branches found
No related tags found
1 merge request!273Adding retry for transient server errors and socket timeout exception from client
Pipeline #165075 failed
......@@ -26,6 +26,8 @@ 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 java.net.SocketTimeoutException;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
......@@ -104,6 +106,7 @@ public abstract class TestUtils {
Map<String, String> headers, boolean isHttp)
throws Exception {
ClientResponse response;
Client client = getClient();
client.setConnectTimeout(300000);
client.setReadTimeout(300000);
......@@ -116,14 +119,36 @@ public abstract class TestUtils {
System.out.println(httpMethod);
System.out.println(requestBody);
System.out.println(headers);
int retryCount = 2;
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));
return builder.method(httpMethod, ClientResponse.class, requestBody);
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);
}
}
@SuppressWarnings("unchecked")
public static <T> T getResult(ClientResponse response, int exepectedStatus, Class<T> classOfT) {
String json = response.getEntity(String.class);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment