aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java13
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/controller/filter/PromiseRequestIdFilterTest.java27
-rw-r--r--vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__fe_input_cypress.json2
-rw-r--r--vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__payload_to_mso.json2
4 files changed, 40 insertions, 4 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java b/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java
index faaf55ae7..1c96819c8 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/filter/PromiseRequestIdFilter.java
@@ -41,8 +41,10 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
+import org.onap.logging.ref.slf4j.ONAPLogConstants.MDCs;
import org.onap.vid.logging.Headers;
import org.onap.vid.logging.RequestIdHeader;
+import org.slf4j.MDC;
import org.springframework.web.filter.GenericFilterBean;
@WebFilter(urlPatterns = "/*")
@@ -82,12 +84,17 @@ public class PromiseRequestIdFilter extends GenericFilterBean {
if (isWrapNeeded(highestPriorityHeader, originalRequestId)) {
// Copy originalRequestId to the promised header value
- request = new PromiseRequestIdRequestWrapper(httpRequest, toUuidOrElse(originalRequestId, UUID::randomUUID));
+ request = new PromiseRequestIdRequestWrapper(httpRequest,
+ firstValidUuidOrElse(originalRequestId, requestIdFromMDC(), UUID::randomUUID));
}
return request;
}
+ private String requestIdFromMDC() {
+ return MDC.get(MDCs.REQUEST_ID);
+ }
+
private boolean verifyAndValidateUuid(String value) {
return isNotEmpty(value) && uuidRegex.matcher(value).matches();
}
@@ -99,6 +106,10 @@ public class PromiseRequestIdFilter extends GenericFilterBean {
return !headerExistsAndValid;
}
+ UUID firstValidUuidOrElse(String uuid1, String uuid2, Supplier<UUID> uuidSupplier) {
+ return toUuidOrElse(uuid1, () -> toUuidOrElse(uuid2, uuidSupplier));
+ }
+
UUID toUuidOrElse(String uuid, Supplier<UUID> uuidSupplier) {
if (verifyAndValidateUuid(uuid)) {
try {
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/filter/PromiseRequestIdFilterTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/filter/PromiseRequestIdFilterTest.java
index d67bd618c..f415bfbcb 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controller/filter/PromiseRequestIdFilterTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/filter/PromiseRequestIdFilterTest.java
@@ -51,9 +51,12 @@ import javax.servlet.http.HttpServletResponse;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
import org.mockito.stubbing.Answer;
+import org.onap.logging.ref.slf4j.ONAPLogConstants.MDCs;
import org.onap.portalsdk.core.web.support.UserUtils;
import org.onap.vid.logging.RequestIdHeader;
+import org.slf4j.MDC;
import org.springframework.mock.web.MockHttpServletResponse;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -70,10 +73,18 @@ public class PromiseRequestIdFilterTest {
private final PromiseRequestIdFilter promiseRequestIdFilter = new PromiseRequestIdFilter();
+ @AfterMethod
+ public void tearDown() {
+ MDC.remove(MDCs.REQUEST_ID);
+ }
+
@Test
- public void givenRequestIdHeader_headerValueNotChanged() throws IOException, ServletException {
+ public void givenMdcValueAndRequestIdHeader_headerValueNotChanged() throws IOException, ServletException {
final String someTxId = "863850e2-8545-4efd-94b8-afba5f52b3d5";
+ final String mdcTxId = "ed752ff1-3970-4f18-8219-2d821fa4eaea";
+
+ MDC.put(MDCs.REQUEST_ID, mdcTxId);
final ImmutableMap<String, String> incomingRequestHeaders = ImmutableMap.of(
anotherHeader, anotherValue,
@@ -122,6 +133,20 @@ public class PromiseRequestIdFilterTest {
}
@Test
+ public void givenMdcValueAndNoRequestIdHeader_headerValueWasFromMDC() throws IOException, ServletException {
+
+ final String mdcTxId = "ed752ff1-3970-4f18-8219-2d821fa4eaea";
+
+ MDC.put(MDCs.REQUEST_ID, mdcTxId);
+
+ final ImmutableMap<String, String> incomingRequestHeaders = ImmutableMap.of(
+ anotherHeader, anotherValue
+ );
+
+ buildRequestThenRunThroughFilterAndAssertResultRequestHeaders(incomingRequestHeaders, specificTxId(mdcTxId));
+ }
+
+ @Test
public void givenTwoRequestIdHeader_onapHeaderValueIsUsed() throws IOException, ServletException {
final String onapTxId = "863850e2-8545-4efd-94b8-AFBA5F52B3D5"; // note mixed case
diff --git a/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__fe_input_cypress.json b/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__fe_input_cypress.json
index d215a4331..16d369ba7 100644
--- a/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__fe_input_cypress.json
+++ b/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__fe_input_cypress.json
@@ -111,7 +111,7 @@
"rollbackOnFailure": false,
"isALaCarte": true,
"collectionResources": {},
- "testApi": "VNF_API",
+ "testApi": "GR_API",
"vidNotions": {
"instantiationUI": "legacy",
"modelCategory": "other",
diff --git a/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__payload_to_mso.json b/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__payload_to_mso.json
index 91f80e9f1..5c258f66b 100644
--- a/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__payload_to_mso.json
+++ b/vid-app-common/src/test/resources/payload_jsons/vfmodule/upgrade_vfmodule_e2e__payload_to_mso.json
@@ -36,7 +36,7 @@
"retainAssignments": false,
"usePreload" : true,
"userParams": [],
- "testApi": "VNF_API"
+ "testApi": "GR_API"
},
"modelInfo": {
"modelType": "vfModule",