Rename slf4j ref impl, add constants
[logging-analytics.git] / reference / logging-slf4j / src / test / java / org / onap / logging / ref / slf4j / ONAPLogAdapterTest.java
@@ -19,7 +19,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.logging.ref.slf4j.common;
+package org.onap.logging.ref.slf4j;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -36,8 +36,10 @@ import org.testng.annotations.Test;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsNot.not;
 import static org.hamcrest.core.IsNull.notNullValue;
 import static org.hamcrest.core.IsNull.nullValue;
+import static org.hamcrest.core.IsSame.sameInstance;
 
 /**
  * Tests for {@link ONAPLogAdapter}.
@@ -120,6 +122,37 @@ public class ONAPLogAdapterTest {
         }
     }
 
+    @Test
+    public void testSetServiceDescriptor() {
+        final ONAPLogAdapter.ServiceDescriptor override = new ONAPLogAdapter.ServiceDescriptor();
+        final Logger logger = LoggerFactory.getLogger(this.getClass());
+        final ONAPLogAdapter adapter = new ONAPLogAdapter(logger);
+        final ONAPLogAdapter.ServiceDescriptor before = adapter.getServiceDescriptor();
+        adapter.setServiceDescriptor(override);
+        final ONAPLogAdapter.ServiceDescriptor after = adapter.getServiceDescriptor();
+        assertThat(after, not(sameInstance(before)));
+        assertThat(after, is(override));
+    }
+
+    @Test
+    public void testSetResponseDescriptor() {
+        final ONAPLogAdapter.ResponseDescriptor override = new ONAPLogAdapter.ResponseDescriptor();
+        final Logger logger = LoggerFactory.getLogger(this.getClass());
+        final ONAPLogAdapter adapter = new ONAPLogAdapter(logger);
+        final ONAPLogAdapter.ResponseDescriptor before = adapter.getResponseDescriptor();
+        adapter.setResponseDescriptor(override);
+        final ONAPLogAdapter.ResponseDescriptor after = adapter.getResponseDescriptor();
+        assertThat(after, not(sameInstance(before)));
+        assertThat(after, is(override));
+    }
+
+    @Test
+    public void testUnwrap() {
+        final Logger logger = LoggerFactory.getLogger(this.getClass());
+        final ONAPLogAdapter adapter = new ONAPLogAdapter(logger);
+        assertThat(adapter.unwrap(), is(logger));
+    }
+
     /**
      * Test EXITING.
      */
@@ -190,6 +223,94 @@ public class ONAPLogAdapterTest {
         }
     }
 
+    /**
+     * Test INVOKE, with RequestAdapter.
+     */
+    @Test
+    public void testInvokeWithAdapterAndNull() throws Exception {
+
+        final Logger logger = LoggerFactory.getLogger(this.getClass());
+        final ONAPLogAdapter adapter = new ONAPLogAdapter(logger);
+
+        final Map<String, String> headers = new HashMap<>();
+        final ONAPLogAdapter.RequestBuilder builder = new ONAPLogAdapter.RequestBuilder<ONAPLogAdapter.RequestBuilder>() {
+            @Override
+            public ONAPLogAdapter.RequestBuilder setHeader(final String name, final String value) {
+                headers.put(name, value);
+                return this;
+            }
+        };
+
+        try {
+            final UUID uuid = adapter.invoke(builder);
+            assertThat(uuid, notNullValue());
+            assertThat(headers.get(ONAPLogConstants.Headers.INVOCATION_ID), is(uuid.toString()));
+            assertThat(headers.containsKey(ONAPLogConstants.Headers.PARTNER_NAME), is(true));
+            assertThat(headers.containsKey(ONAPLogConstants.Headers.REQUEST_ID), is(true));
+        }
+        finally {
+            MDC.clear();
+        }
+    }
+
+    @Test
+    public void testHttpServletRequestAdapter() {
+
+        final UUID uuid = UUID.randomUUID();
+        final MockHttpServletRequest request = new MockHttpServletRequest();
+        request.addHeader("uuid", uuid.toString());
+        request.setRequestURI("/ctx0");
+        request.setServerName("srv0");
+
+        final ONAPLogAdapter.HttpServletRequestAdapter adapter
+                = new ONAPLogAdapter.HttpServletRequestAdapter(request);
+        assertThat(adapter.getHeader("uuid"), is(uuid.toString()));
+        assertThat(adapter.getRequestURI(), is("/ctx0"));
+        assertThat(adapter.getServerAddress(), is("srv0"));
+    }
+
+    @Test
+    public void testServiceDescriptor() {
+        final String uuid = UUID.randomUUID().toString();
+
+        final ONAPLogAdapter.ServiceDescriptor adapter
+                = new ONAPLogAdapter.ServiceDescriptor();
+        adapter.setServiceUUID(uuid);
+        adapter.setServiceName("name0");
+
+        assertThat(MDC.get(ONAPLogConstants.MDCs.SERVICE_NAME), nullValue());
+        assertThat(MDC.get(ONAPLogConstants.MDCs.INSTANCE_UUID), nullValue());
+
+        adapter.setMDCs();
+
+        assertThat(MDC.get(ONAPLogConstants.MDCs.SERVICE_NAME), is("name0"));
+        assertThat(MDC.get(ONAPLogConstants.MDCs.INSTANCE_UUID), is(uuid));
+    }
+
+    @Test
+    public void testResponseDescriptor() {
+        final String uuid = UUID.randomUUID().toString();
+
+        final ONAPLogAdapter.ResponseDescriptor adapter
+                = new ONAPLogAdapter.ResponseDescriptor();
+        adapter.setResponseCode("code0");
+        adapter.setResponseDescription("desc0");
+        adapter.setResponseSeverity(Level.INFO);
+        adapter.setResponseStatus(ONAPLogConstants.ResponseStatus.COMPLETED);
+
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_CODE), nullValue());
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION), nullValue());
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_SEVERITY), nullValue());
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE), nullValue());
+
+        adapter.setMDCs();
+
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_CODE), is("code0"));
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION), is("desc0"));
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_SEVERITY), is("INFO"));
+        assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE), is("COMPLETED"));
+    }
+
     /**
      * Exercise the contract, for a caller that's happy to have their
      * service name automatically derived. (This validates nothing