import java.util.Map;
import java.util.UUID;
+import javax.xml.bind.DatatypeConverter;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.hamcrest.core.IsNot.not;
+import static org.hamcrest.core.IsSame.sameInstance;
+import static org.hamcrest.core.StringContains.containsString;
+import static org.hamcrest.core.StringEndsWith.endsWith;
+import static org.hamcrest.core.Every.everyItem;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
+import static org.hamcrest.core.IsNull.notNullValue;
+import static org.hamcrest.core.IsNull.nullValue;
+import static org.hamcrest.core.StringStartsWith.startsWith;
+import static org.hamcrest.beans.HasProperty.hasProperty;
+import static org.hamcrest.number.IsCloseTo.closeTo;
+import static org.hamcrest.number.OrderingComparison.greaterThan;
+import static org.hamcrest.number.OrderingComparison.greaterThanOrEqualTo;
+import static org.hamcrest.number.OrderingComparison.lessThan;
+import static org.hamcrest.number.OrderingComparison.lessThanOrEqualTo;
+import static org.hamcrest.collection.IsArray.array;
+import static org.hamcrest.collection.IsArrayContaining.hasItemInArray;
+import static org.hamcrest.collection.IsArrayContainingInAnyOrder.arrayContainingInAnyOrder;
+import static org.hamcrest.collection.IsIn.isIn;
+import static org.hamcrest.collection.IsIn.isOneOf;
+import static org.hamcrest.collection.IsMapContaining.hasKey;
+import static org.hamcrest.collection.IsMapContaining.hasEntry;
+import static org.hamcrest.collection.IsMapContaining.hasValue;
+import static org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace;
+import static org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase;
+import static org.hamcrest.text.IsEmptyString.isEmptyOrNullString;
+import static org.hamcrest.text.IsEmptyString.isEmptyString;
+import static org.hamcrest.text.StringContainsInOrder.stringContainsInOrder;
+import static org.hamcrest.xml.HasXPath.hasXPath;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
http.setServerName("local123");
http.setRemoteAddr("remote123");
http.addHeader("X-ONAP-RequestID", "request123");
- http.addHeader("X-ONAP-InvocationID", "invocation123");
+ http.addHeader("X-InvocationID", "invocation123");
http.addHeader("X-ONAP-PartnerName", "partner123");
try {
assertThat(mdcs.get("ServiceName"), is("uri123"));
assertThat(mdcs.get("ServerFQDN"), is("local123"));
assertThat(mdcs.get("ClientIPAddress"), is("remote123"));
+
+ // Timestamp format and value:
+
+ final String invokeTimestampString = mdcs.get("InvokeTimestamp");
+ assertThat(invokeTimestampString, notNullValue());
+ assertThat(invokeTimestampString, endsWith("Z"));
+ final long invokeTimestamp = DatatypeConverter.parseDateTime(invokeTimestampString).getTimeInMillis();
+ assertThat(Math.abs(System.currentTimeMillis() - invokeTimestamp), lessThan(5000L));
+ }
+ finally {
+ MDC.clear();
+ }
+ }
+
+ /**
+ * Test ENTERING with an EMPTY_STRING serviceName.
+ */
+ @Test
+ public void testEnteringWithEMPTY_STRING_serviceName() {
+
+ final Logger logger = LoggerFactory.getLogger(this.getClass());
+ final ONAPLogAdapter adapter = new ONAPLogAdapter(logger);
+ final MockHttpServletRequest http = new MockHttpServletRequest();
+ http.setRequestURI("uri123");
+ http.setServerName("local123");
+ http.setRemoteAddr("remote123");
+ http.addHeader("X-ONAP-RequestID", "request123");
+ http.addHeader("X-InvocationID", "invocation123");
+ http.addHeader("X-ONAP-PartnerName", "partner123");
+
+ try {
+ // an empty string should kick in setting the actual service name (treated same as null)
+ adapter.getServiceDescriptor().setServiceName("");
+ adapter.entering(http);
+ final Map<String, String> mdcs = MDC.getCopyOfContextMap();
+ assertThat(mdcs.get("RequestID"), is("request123"));
+ assertThat(mdcs.get("InvocationID"), is("invocation123"));
+ assertThat(mdcs.get("PartnerName"), is("partner123"));
+ assertThat(mdcs.get("ServiceName"), is("uri123"));
+ assertThat(mdcs.get("ServerFQDN"), is("local123"));
+ assertThat(mdcs.get("ClientIPAddress"), is("remote123"));
+
+ // Timestamp format and value:
+
+ final String invokeTimestampString = mdcs.get("InvokeTimestamp");
+ assertThat(invokeTimestampString, notNullValue());
+ assertThat(invokeTimestampString, endsWith("Z"));
+ final long invokeTimestamp = DatatypeConverter.parseDateTime(invokeTimestampString).getTimeInMillis();
+ assertThat(Math.abs(System.currentTimeMillis() - invokeTimestamp), lessThan(5000L));
}
finally {
MDC.clear();
adapter.setResponseCode("code0");
adapter.setResponseDescription("desc0");
adapter.setResponseSeverity(Level.INFO);
- adapter.setResponseStatus(ONAPLogConstants.ResponseStatus.COMPLETED);
+ adapter.setResponseStatus(ONAPLogConstants.ResponseStatus.COMPLETE);
assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_CODE), nullValue());
assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION), nullValue());
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"));
+ assertThat(MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE), is("COMPLETE"));
}
/**
adapter.getResponseDescriptor()
.setResponseCode((String)null)
.setResponseSeverity(Level.INFO)
- .setResponseStatus(ONAPLogConstants.ResponseStatus.COMPLETED);
+ .setResponseStatus(ONAPLogConstants.ResponseStatus.COMPLETE);
}
finally {