Skip to content
Snippets Groups Projects
Commit 8bec6570 authored by Harshika Dhoot's avatar Harshika Dhoot Committed by preeti singh[Microsoft]
Browse files

adding logs to deal with negative case scenarios

parent a08f5517
No related branches found
No related tags found
1 merge request!420adding logs to deal with negative case scenarios
......@@ -397,7 +397,7 @@ The following software have components provided under the terms of this license:
- ServiceLocator Default Implementation (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-locator)
- Spring Core (from http://www.springframework.org, https://github.com/spring-projects/spring-framework, https://repo1.maven.org/maven2/org/springframework/spring-core)
- ThreeTen backport (from https://github.com/ThreeTen/threetenbp, https://www.threeten.org/threetenbp)
- aopalliance version 1.0 repackaged as a module (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- aopalliance-repackaged (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- jakarta.inject (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/jakarta.inject)
- jersey-container-servlet (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet)
- jersey-core-client (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client)
......@@ -525,7 +525,7 @@ The following software have components provided under the terms of this license:
- Microsoft Application Insights Java SDK Spring Boot starter (from https://github.com/Microsoft/ApplicationInsights-Java)
- Microsoft Application Insights Java SDK Web Module (from https://github.com/Microsoft/ApplicationInsights-Java)
- Microsoft Application Insights Log4j 2 Appender (from https://github.com/Microsoft/ApplicationInsights-Java)
- aopalliance version 1.0 repackaged as a module (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- aopalliance-repackaged (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- jersey-core-common (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common)
- jersey-core-server (from https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-server)
- jersey-media-json-jackson (from https://repo1.maven.org/maven2/org/glassfish/jersey/media/jersey-media-json-jackson)
......@@ -555,7 +555,7 @@ The following software have components provided under the terms of this license:
- Jakarta XML Binding API (from https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api, https://repo1.maven.org/maven2/org/jboss/spec/javax/xml/bind/jboss-jaxb-api_2.3_spec)
- OSGi resource locator (from https://repo1.maven.org/maven2/org/glassfish/hk2/osgi-resource-locator)
- ServiceLocator Default Implementation (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-locator)
- aopalliance version 1.0 repackaged as a module (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- aopalliance-repackaged (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- jakarta.inject (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/jakarta.inject)
- jersey-container-servlet (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet)
- jersey-container-servlet-core (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core)
......@@ -584,7 +584,7 @@ The following software have components provided under the terms of this license:
- OSGi resource locator (from https://repo1.maven.org/maven2/org/glassfish/hk2/osgi-resource-locator)
- RabbitMQ Java Client (from http://www.rabbitmq.com, https://www.rabbitmq.com)
- ServiceLocator Default Implementation (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-locator)
- aopalliance version 1.0 repackaged as a module (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- aopalliance-repackaged (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- jakarta.inject (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/jakarta.inject)
- jersey-container-servlet (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet)
- jersey-container-servlet-core (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core)
......@@ -618,7 +618,7 @@ The following software have components provided under the terms of this license:
- JavaMail API jar (from https://repo1.maven.org/maven2/javax/mail/javax.mail-api)
- OSGi resource locator (from https://repo1.maven.org/maven2/org/glassfish/hk2/osgi-resource-locator)
- ServiceLocator Default Implementation (from https://repo1.maven.org/maven2/org/glassfish/hk2/hk2-locator)
- aopalliance version 1.0 repackaged as a module (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- aopalliance-repackaged (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- jakarta.inject (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/jakarta.inject)
- javax.annotation API (from http://jcp.org/en/jsr/detail?id=250)
- jersey-container-servlet (from https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet)
......@@ -645,7 +645,7 @@ GPL-3.0-or-later
========================================================================
The following software have components provided under the terms of this license:
- aopalliance version 1.0 repackaged as a module (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
- aopalliance-repackaged (from https://repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged)
========================================================================
ISC
......
......@@ -16,9 +16,14 @@
package org.opengroup.osdu.register.subscriber;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Strings;
import com.google.gson.Gson;
import com.sun.jersey.api.client.ClientResponse;
import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
......@@ -39,6 +44,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@Slf4j
public class TestCreateSubscriberApi extends CreateSubscriberApiTest {
@Before
......@@ -88,6 +94,7 @@ public class TestCreateSubscriberApi extends CreateSubscriberApiTest {
try {
return descriptor.run(getId(), testUtils.getOpsAccessToken());
} catch (Exception ex) {
log.error("got exception for request ", ex);
return null;
}
};
......@@ -97,13 +104,20 @@ public class TestCreateSubscriberApi extends CreateSubscriberApiTest {
List<Future<ClientResponse>> responses = executor.invokeAll(tasks);
executor.shutdown();
executor.awaitTermination(300, TimeUnit.SECONDS);
log.info("Invoked all the requests successfully");
int sucessResponseCount = 0;
for (Future<ClientResponse> future : responses) {
JsonNode responseBody = null;
ObjectMapper ObjectMapper=new ObjectMapper();
ObjectMapper.enable(SerializationFeature.INDENT_OUTPUT);
responseBody= ObjectMapper.readTree(future.get().getEntity(String.class));
if(responseBody.has("secret"))
((ObjectNode)responseBody).remove("secret");
log.info(String.format("response body : %s\n Correlation id : %s\n Status code : %s",ObjectMapper.writeValueAsString(responseBody) , future.get().getHeaders().get("correlation-id"), future.get().getStatus()));
if (future.get().getStatus() == expectedOkResponseCode())
sucessResponseCount++;
}
log.info(String.format("This is the sucessResponseCount : %s", sucessResponseCount));
deleteResource();
assertTrue(error("Expected 1 successful response. Actual " + sucessResponseCount), sucessResponseCount <= 1);
......
......@@ -17,6 +17,7 @@
package org.opengroup.osdu.register.subscriber;
import com.sun.jersey.api.client.ClientResponse;
import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
......@@ -34,6 +35,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@Slf4j
public class TestDeleteSubscriberApi extends DeleteSubscriberApiTest {
@Before
......@@ -67,6 +69,7 @@ public class TestDeleteSubscriberApi extends DeleteSubscriberApiTest {
try {
return descriptor.run(getId(), testUtils.getOpsAccessToken());
} catch (Exception ex) {
log.error("got exception for request ", ex);
return null;
}
};
......@@ -76,14 +79,17 @@ public class TestDeleteSubscriberApi extends DeleteSubscriberApiTest {
List<Future<ClientResponse>> responses = executor.invokeAll(tasks);
executor.shutdown();
executor.awaitTermination(300, TimeUnit.SECONDS);
log.info("Invoked all the requests successfully");
int sucessResponseCount = 0;
for (Future<ClientResponse> future : responses) {
if (future.get() == null)
fail(String.format("Failed to get response in time for %s %s %s", descriptor.getHttpMethod(), descriptor.getPath(), descriptor.getArg()));
log.info(String.format("Response code : %s and correlation id: %s",future.get().getStatus(),future.get().getHeaders().get("correlation-id")));
if (future.get().getStatus() == expectedOkResponseCode())
sucessResponseCount++;
}
log.info(String.format("sucessResponseCount : %s", sucessResponseCount));
assertTrue(error("Expected 1 successful response. Actual " + sucessResponseCount), sucessResponseCount <= 1);
}
}
......@@ -18,6 +18,7 @@ package org.opengroup.osdu.register.subscriber;
import com.google.gson.Gson;
import com.sun.jersey.api.client.ClientResponse;
import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
......@@ -35,6 +36,7 @@ import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
@Slf4j
public class TestGetSubscriberByIdApi extends GetSubscriberByIdApiTest {
@Before
......@@ -81,6 +83,7 @@ public class TestGetSubscriberByIdApi extends GetSubscriberByIdApiTest {
try {
return descriptor.run(getId(), testUtils.getOpsAccessToken());
} catch (Exception ex) {
log.error("got exception for request ", ex);
return null;
}
};
......@@ -90,12 +93,14 @@ public class TestGetSubscriberByIdApi extends GetSubscriberByIdApiTest {
List<Future<ClientResponse>> responses = executor.invokeAll(tasks);
executor.shutdown();
executor.awaitTermination(300, TimeUnit.SECONDS);
log.info("Invoked all the requests successfully");
int sucessResponseCount = 0;
for (Future<ClientResponse> future : responses) {
log.info(String.format("Response body : %s\n Correlation id : %s\n Status code : %s", future.get().getEntity(String.class), future.get().getHeaders().get("correlation-id"), future.get().getStatus()));
if (future.get().getStatus() == expectedOkResponseCode())
sucessResponseCount++;
}
log.info(String.format("sucessResponseCount : %s", sucessResponseCount));
deleteResource();
assertEquals(error("Expected all successful responses. Actual " + sucessResponseCount), 10, sucessResponseCount);
}
......
......@@ -16,13 +16,19 @@
package org.opengroup.osdu.register.util;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.sun.jersey.api.client.ClientResponse;
import lombok.extern.slf4j.Slf4j;
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@Slf4j
public abstract class BaseTestTemplate extends TestBase {
public BaseTestTemplate(RestDescriptor descriptor) {
......@@ -37,12 +43,26 @@ public abstract class BaseTestTemplate extends TestBase {
protected String error(String body) {
return String.format("%s: %s %s %s", descriptor.getHttpMethod(), descriptor.getPath(), descriptor.getQuery(), body);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
String subsAsJson = null;
try {
subsAsJson = objectMapper.writeValueAsString(body);
JsonNode jsonNode = objectMapper.readTree(subsAsJson);
// removing Secret before logging
if (jsonNode != null && jsonNode.has("secret")) {
((ObjectNode) jsonNode).remove("secret");
}
} catch (Exception e) {
log.error("Error while parsing response body", e);
}
log.info(String.format("error method call: -----------------------------------------------------------------------\n%s: %s %s \nResponse Body: %s", descriptor.getHttpMethod(), descriptor.getPath(), descriptor.getQuery(), subsAsJson));
return String.format("%s: %s %s \nResponse Body: %s", descriptor.getHttpMethod(), descriptor.getPath(), descriptor.getQuery(), body);
}
protected void validate20XResponse(ClientResponse response, RestDescriptor descriptor) {
if (response.getStatus() != 204)
System.out.println(response.getEntity(String.class));
log.info(String.format("Response body: %s", response.getEntity(String.class)));
}
protected abstract void deleteResource() throws Exception;
......@@ -75,8 +95,8 @@ public abstract class BaseTestTemplate extends TestBase {
assertEquals(error(response.getEntity(String.class)), 401, response.getStatus());
}
@Ignore("Issue reported in GL")
@Test
@Ignore("Issue reported in GL")
@Test
public void should_return20X_when_usingCredentialsWithPermissionOps() throws Exception {
should_return20X_when_usingCredentialsWithPermission(testUtils.getOpsAccessToken());
}
......@@ -132,4 +152,4 @@ public abstract class BaseTestTemplate extends TestBase {
ClientResponse response = descriptor.run(getId(), "");
assertEquals(error(response.getEntity(String.class)), 400, response.getStatus());
}
}
\ No newline at end of file
}
......@@ -18,10 +18,12 @@ package org.opengroup.osdu.register.util;
import com.google.common.base.Charsets;
import com.google.common.io.Resources;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.net.URL;
@Slf4j
public class TestPayloadReader {
public String getCreateRequestPayload(String path, String ddmsId, String tenantId) {
......@@ -34,8 +36,8 @@ public class TestPayloadReader {
URL url = Resources.getResource(path);
return Resources.toString(url, Charsets.UTF_8);
} catch (IOException e) {
System.out.println(String.format("Unable to read %s, error: %s", path, e.getMessage()));
log.error("Unable to read " + path+" error: ", e);
return "";
}
}
}
\ No newline at end of file
}
......@@ -16,10 +16,15 @@
package org.opengroup.osdu.register.util;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.gson.Gson;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import lombok.extern.slf4j.Slf4j;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
......@@ -27,7 +32,6 @@ 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;
......@@ -37,7 +41,9 @@ import java.util.UUID;
import static org.junit.Assert.assertEquals;
@Slf4j
public abstract class TestUtils {
protected static String opsToken = null;
protected static String admToken = null;
protected static String editorToken = null;
......@@ -101,58 +107,66 @@ public abstract class TestUtils {
return send(path, httpMethod, token, requestBody, query, headers, false);
}
public static ClientResponse send(String path, String httpMethod, String token, String requestBody, String query,
Map<String, String> headers, boolean isHttp)
throws Exception {
ClientResponse response;
ClientResponse response = null;
Client client = getClient();
client.setConnectTimeout(300000);
client.setReadTimeout(300000);
client.setFollowRedirects(false);
String url = getApiPath(path + query);
if (isHttp) {
url = url.replaceFirst("https", "http");
}
System.out.println(url);
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));
try {
response = builder.method(httpMethod, ClientResponse.class, requestBody);
while (retryCount > 0) {
WebResource webResource = client.resource(isHttp ? url.replaceFirst("https", "http") : url);
int count = 1;
int MaxRetry = 3;
while (count < MaxRetry) {
try {
headers.put("correlation-id", headers.getOrDefault("correlation-id", UUID.randomUUID().toString()));
WebResource.Builder builder = webResource.type(MediaType.APPLICATION_JSON)
.header("Authorization", token);
headers.forEach((k, v) -> builder.header(k, v));
//removing Auth header before logging
headers.remove("Authorization");
ObjectMapper objectMapper = new ObjectMapper();;
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
JsonNode rootNode = null;
if (requestBody != null) {
rootNode = objectMapper.readTree(requestBody);
if (rootNode!= null && rootNode.has("secret")) {
((ObjectNode) rootNode).remove("secret");
}
}
log.info(String.format("\nRequest URL: %s %s\nRequest Headers: %s\nRequest Body: %s", httpMethod, url, headers, objectMapper.writeValueAsString(rootNode)));
log.info(String.format("Attempt: #%s/%s, CorrelationId: %s", count, MaxRetry, headers.get("correlation-id")));
response = builder.method(httpMethod, ClientResponse.class, requestBody);
if (response.getStatusInfo().getFamily().equals(Response.Status.Family.valueOf("SERVER_ERROR"))) {
System.out.println("got resoponse : " + response.getStatusInfo());
count++;
Thread.sleep(5000);
System.out.println("Retrying.. ");
response = builder.method(httpMethod, ClientResponse.class, requestBody);
} else
continue;
} else {
break;
retryCount--;
}
} catch (Exception ex) {
log.error("Exception While Making Request: ", ex);
count++;
if (count == MaxRetry) {
throw new AssertionError("Error: Send request error", ex);
}
} finally {
//log response body
if (response != null) {
log.info(String.format("\nThis is the response received : \n%s\nResponse Headers: %s\nResponse Status code: %s", response, response.getHeaders(), response.getStatus()));
}
}
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);
}
return response;
}
@SuppressWarnings("unchecked")
public static <T> T getResult(ClientResponse response, int exepectedStatus, Class<T> classOfT) {
String json = response.getEntity(String.class);
System.out.println(json);
log.info(json);
assertEquals(exepectedStatus, response.getStatus());
if (exepectedStatus == 204) {
......
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