send INVOCATION_ID header via RestMsoImplementation 03/96503/1
authorEylon Malin <eylon.malin@intl.att.com>
Wed, 2 Oct 2019 11:57:35 +0000 (14:57 +0300)
committerEylon Malin <eylon.malin@intl.att.com>
Wed, 2 Oct 2019 11:57:35 +0000 (14:57 +0300)
Issue-ID: VID-253
Signed-off-by: Eylon Malin <eylon.malin@intl.att.com>
Change-Id: Ifc199a3ef0faf2c02b73a065667866f25c20bd56

vid-app-common/src/main/java/org/onap/vid/logging/Headers.kt
vid-app-common/src/main/java/org/onap/vid/mso/RestMsoImplementation.java
vid-app-common/src/test/java/org/onap/vid/mso/rest/OutgoingRequestHeadersTest.java

index b2969fe..e9f83ef 100644 (file)
@@ -4,6 +4,7 @@ package org.onap.vid.logging
 
 import org.onap.portalsdk.core.util.SystemProperties
 import org.onap.vid.logging.RequestIdHeader.*
+import java.util.*
 import javax.servlet.http.HttpServletRequest
 
 interface Header {
@@ -20,6 +21,11 @@ val PARTNER_NAME = object : NamedHeader("X-ONAP-PartnerName") {
     override fun getHeaderValue() = "VID.VID"
 }
 
+@JvmField
+val INVOCATION_ID = object : NamedHeader("X-InvocationID") {
+    override fun getHeaderValue() = UUID.randomUUID().toString()
+}
+
 enum class RequestIdHeader(override val headerName: String) : Header {
     ONAP_ID("X-ONAP-RequestID"),
     REQUEST_ID("X-RequestID"),
index 9c8902d..b105fab 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.vid.mso;
 
+import static org.onap.vid.logging.Headers.INVOCATION_ID;
 import static org.onap.vid.logging.Headers.PARTNER_NAME;
 import static org.onap.vid.utils.Logging.ONAP_REQUEST_ID_HEADER_KEY;
 import static org.onap.vid.utils.Logging.REQUEST_ID_HEADER_KEY;
@@ -115,7 +116,7 @@ public class RestMsoImplementation implements RestInterface {
         String requestIdValue = Logging.extractOrGenerateRequestId();
         commonHeaders.put(REQUEST_ID_HEADER_KEY, Collections.singletonList(requestIdValue));
         commonHeaders.put(ONAP_REQUEST_ID_HEADER_KEY, Collections.singletonList(requestIdValue));
-
+        commonHeaders.put(INVOCATION_ID.getHeaderName(), Collections.singletonList(INVOCATION_ID.getHeaderValue()));
 
         boolean useSsl = true;
         if ( (mso_url != null) && ( !(mso_url.isEmpty()) ) ) {
index 01e484f..8c5634f 100644 (file)
@@ -143,7 +143,7 @@ public class OutgoingRequestHeadersTest {
         Invocation.Builder fakeBuilder = mocks.getFakeBuilder();
         Object requestIdValue = verifyXEcompRequestIdHeaderWasAdded(fakeBuilder);
         assertEquals(requestIdValue, captureHeaderKeyAndReturnItsValue(fakeBuilder, "X-ONAP-RequestID"));
-
+        assertRequestHeaderIsUUID(fakeBuilder, "X-InvocationID");
         assertThat((String) captureHeaderKeyAndReturnItsValue(fakeBuilder, "Authorization"), startsWith("Basic "));
         verifyXOnapPartnerNameHeaderWasAdded(fakeBuilder);
     }
@@ -192,12 +192,15 @@ public class OutgoingRequestHeadersTest {
 
     private Object verifyXEcompRequestIdHeaderWasAdded(Invocation.Builder fakeBuilder) {
         final String requestIdHeader = "x-ecomp-requestid";
-        final String uuidRegex = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
-        Object requestId = captureHeaderKeyAndReturnItsValue(fakeBuilder, requestIdHeader);
+        return assertRequestHeaderIsUUID(fakeBuilder, requestIdHeader);
+    }
 
-        assertThat("header '" + requestIdHeader + "' should be a uuid", requestId,
+    private Object assertRequestHeaderIsUUID(Invocation.Builder fakeBuilder, String headerName) {
+        Object headerValue = captureHeaderKeyAndReturnItsValue(fakeBuilder, headerName);
+        final String uuidRegex = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
+        assertThat("header '" + headerName + "' should be a uuid", headerValue,
                 allOf(instanceOf(String.class), hasToString(matchesPattern(uuidRegex))));
-        return requestId;
+        return headerValue;
     }
 
     private void verifyXOnapPartnerNameHeaderWasAdded(Invocation.Builder fakeBuilder) {