From: Luke Parker Date: Tue, 22 May 2018 07:35:18 +0000 (+1000) Subject: Rename slf4j ref impl, add constants X-Git-Tag: 2.0.0-ONAP~7 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=logging-analytics.git;a=commitdiff_plain;h=7a724b15b5a1266b8517d56008becd336db6a1c5 Rename slf4j ref impl, add constants Change-Id: Ib3f24c3aa4974ac8c87fa969613192e884674f00 Issue-ID: LOG-115 Signed-off-by: Luke Parker --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8a809f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +.idea +.project +.classpath +.settings +*.iml +npm-debug.log +node_modules/ +node_install/ +test_output/ +test-output/ +target/ +dist/ + diff --git a/pom.xml b/pom.xml index f8e1482..f17b3a8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.onap.oparent oparent - 1.1.1-SNAPSHOT + 1.1.2-SNAPSHOT org.onap.logging-analytics logging-analytics diff --git a/reference/slf4j-reference/README.md b/reference/logging-slf4j-demo/README.md similarity index 100% rename from reference/slf4j-reference/README.md rename to reference/logging-slf4j-demo/README.md diff --git a/reference/slf4j-reference/pom.xml b/reference/logging-slf4j-demo/pom.xml similarity index 94% rename from reference/slf4j-reference/pom.xml rename to reference/logging-slf4j-demo/pom.xml index 16caa92..c4542b3 100644 --- a/reference/slf4j-reference/pom.xml +++ b/reference/logging-slf4j-demo/pom.xml @@ -1,19 +1,14 @@ 4.0.0 - - - - org.onap.logging-analytics - slf4j-reference + logging-slf4j-demo + logging-slf4j-demo war - logging-demo 1.2.0-SNAPSHOT @@ -21,6 +16,11 @@ + + ${project.groupId} + logging-slf4j + ${project.version} + org.springframework.boot spring-boot-starter-web diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplication.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplication.java similarity index 74% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplication.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplication.java index ae6aa92..146f66b 100644 --- a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplication.java +++ b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplication.java @@ -30,13 +30,25 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SLF4JRefApplication { + /** System property override, read by embedded Logback configuration. */ + public static final String SLF4J_OUTPUT_DIRECTORY = "SLF4J_OUTPUT_DIRECTORY"; + /** * Launch from CLI. * @param args command-line args. * @throws Exception launch error. */ public static void main(final String[] args) throws Exception { - System.getProperties().setProperty("SLF4J_OUTPUT_DIRECTORY", "."); + initOutputDirectory(); SpringApplication.run(SLF4JRefApplication.class, args); } + + /** + * Make sure the output directory has a default value. (It'll be + * overridden by tests, but not in services.) + */ + static void initOutputDirectory() { + System.getProperties().setProperty(SLF4J_OUTPUT_DIRECTORY, + System.getProperty(SLF4J_OUTPUT_DIRECTORY, ".")); + } } \ No newline at end of file diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/AbstractBean.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/AbstractBean.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/AbstractBean.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/AbstractBean.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Request.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Request.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Request.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Request.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Response.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Response.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Response.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/Response.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/package-info.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/package-info.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/bean/package-info.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/bean/package-info.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponent.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponent.java similarity index 98% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponent.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponent.java index 236345f..b6a2c95 100644 --- a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponent.java +++ b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponent.java @@ -33,8 +33,8 @@ import com.mashape.unirest.http.Unirest; import com.mashape.unirest.http.exceptions.UnirestException; import org.apache.commons.lang3.StringUtils; import org.json.JSONObject; -import org.onap.logging.ref.slf4j.common.ONAPLogAdapter; -import org.onap.logging.ref.slf4j.common.ONAPLogConstants; +import org.onap.logging.ref.slf4j.ONAPLogAdapter; +import org.onap.logging.ref.slf4j.ONAPLogConstants; import org.onap.logging.ref.slf4j.demo.bean.Request; import org.onap.logging.ref.slf4j.demo.bean.Response; import org.slf4j.Logger; diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlpha.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlpha.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlpha.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlpha.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/package-info.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/package-info.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/package-info.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/alpha/package-info.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBeta.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBeta.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBeta.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBeta.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/package-info.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/package-info.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/package-info.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/beta/package-info.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDelta.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDelta.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDelta.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDelta.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/package-info.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/package-info.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/package-info.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/delta/package-info.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGamma.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGamma.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGamma.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGamma.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/package-info.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/package-info.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/package-info.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/gamma/package-info.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/package-info.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/package-info.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/component/package-info.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/component/package-info.java diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/package-info.java b/reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/package-info.java similarity index 100% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/demo/package-info.java rename to reference/logging-slf4j-demo/src/main/java/org/onap/logging/ref/slf4j/demo/package-info.java diff --git a/reference/slf4j-reference/src/main/resources/logback.xml b/reference/logging-slf4j-demo/src/main/resources/logback.xml similarity index 100% rename from reference/slf4j-reference/src/main/resources/logback.xml rename to reference/logging-slf4j-demo/src/main/resources/logback.xml diff --git a/reference/slf4j-reference/src/main/webapp/WEB-INF/web.xml b/reference/logging-slf4j-demo/src/main/webapp/WEB-INF/web.xml similarity index 100% rename from reference/slf4j-reference/src/main/webapp/WEB-INF/web.xml rename to reference/logging-slf4j-demo/src/main/webapp/WEB-INF/web.xml diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/CallGraphTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/CallGraphTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/CallGraphTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/CallGraphTest.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphAnalyzer.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphAnalyzer.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphAnalyzer.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphAnalyzer.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphReportWriter.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphReportWriter.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphReportWriter.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/CallGraphReportWriter.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntry.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntry.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntry.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntry.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntryTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntryTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntryTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/analysis/LogEntryTest.java diff --git a/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplicationTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplicationTest.java new file mode 100644 index 0000000..a01cbe8 --- /dev/null +++ b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/SLF4JRefApplicationTest.java @@ -0,0 +1,47 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.logging + * ================================================================================ + * Copyright © 2018 Amdocs + * All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.logging.ref.slf4j.demo; + +import org.testng.annotations.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsNull.notNullValue; + +/** + * Tests for {@link SLF4JRefApplication}. + */ +public class SLF4JRefApplicationTest { + + @Test + public void testProperty() { + assertThat(SLF4JRefApplication.SLF4J_OUTPUT_DIRECTORY, + is("SLF4J_OUTPUT_DIRECTORY")); + } + + @Test + public void testInitOutputDirectory() throws Exception { + SLF4JRefApplication.initOutputDirectory(); + assertThat(System.getProperty(SLF4JRefApplication.SLF4J_OUTPUT_DIRECTORY), + notNullValue()); + } +} diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/bean/RequestTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/bean/RequestTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/bean/RequestTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/bean/RequestTest.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/bean/ResponseTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/bean/ResponseTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/bean/ResponseTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/bean/ResponseTest.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponentTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponentTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponentTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/AbstractComponentTest.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlphaTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlphaTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlphaTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/alpha/ComponentAlphaTest.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBetaTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBetaTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBetaTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/beta/ComponentBetaTest.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDeltaTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDeltaTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDeltaTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/delta/ComponentDeltaTest.java diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGammaTest.java b/reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGammaTest.java similarity index 100% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGammaTest.java rename to reference/logging-slf4j-demo/src/test/java/org/onap/logging/ref/slf4j/demo/component/gamma/ComponentGammaTest.java diff --git a/reference/slf4j-reference/src/test/java/testng.xml b/reference/logging-slf4j-demo/src/test/java/testng.xml similarity index 100% rename from reference/slf4j-reference/src/test/java/testng.xml rename to reference/logging-slf4j-demo/src/test/java/testng.xml diff --git a/reference/logging-slf4j/README.md b/reference/logging-slf4j/README.md new file mode 100644 index 0000000..2796a21 --- /dev/null +++ b/reference/logging-slf4j/README.md @@ -0,0 +1,50 @@ +# README - slf4j-reference + +This project gives an example of ONAP-compliant logging using SLF4J logging. + +## Adapter + +In ```org.onap.logging.ref.slf4j```, there are TWO classes: +1. ```org.onap.logging.ref.slf4j.ONAPLogConstants```, providing declarations of standard ONAP Markers, MDCs and HTTP headers. +2. ```org.onap.logging.ref.slf4j.ONAPLogAdapter```, providing a lightweight, compliant implementation of the ONAP logging spec. + +The adapter provides: +1. A loosely-coupled SLF4j logging wrapper: + * To be used for logging ONAP ```entry```, ```exit``` and ```invoke``` behavior. + * Devolving all *application* logging to the component, via the regular SLF4J ```Logger``` facade. +2. Customization options: + * *Cheap*, by way of bean properties. This is suited to most Use Cases. + * *Sophisticated*: + * By OPTIONALLY implementing one of a number of adapters: + * ```RequestAdapter``` to read incoming headers. + * ```ServiceDescriptor``` for reporting attributes of the current service. + * ```ResponseDescriptor``` for reporting outcomes. + * ```RequestBuilder``` for setting southbound request headers. + * By OPTIONALLY overriding methods like ```ONAPLogAdapter#setMDCs(RequestAdapter)```. + +Note that: +* The adapter implementation uses static inner classes in order to fit in a single source file. This was an objective. + +## WAR + +Building produces a simple (spring-boot](https://projects.spring.io/spring-boot/) example WAR, which can be launched from this directory with: + +```bash +$ java -war target/*war +``` + +The example WAR in ```logging-slf4j-demo``` publishes four web services: +1. ```services/alpha``` +2. ```services/beta``` +3. ```services/gamma``` +4. ```services/delta``` + +... each of which can invoke the others. + +The purpose of the WAR is to demonstrate minimalist ONAP-compliant logging for web components, but a secondary purpose is to demonstrate that the call graph can be generated for a (mostly) representative set of interacting REST services. + +## Tests + +Tests for: +1. Code in the (potentially) reusable ``common`` package. +2. Validating that emitted logs can be used to generate an unambiguous call graph. diff --git a/reference/logging-slf4j/pom.xml b/reference/logging-slf4j/pom.xml new file mode 100644 index 0000000..9cc9d4b --- /dev/null +++ b/reference/logging-slf4j/pom.xml @@ -0,0 +1,91 @@ + + 4.0.0 + + org.onap.logging-analytics + logging-reference + 1.2.0-SNAPSHOT + .. + + logging-slf4j + logging-slf4j + jar + 1.2.0-SNAPSHOT + + + + + org.slf4j + slf4j-api + + + + javax.servlet + javax.servlet-api + provided + + + + ch.qos.logback + logback-classic + test + + + org.springframework + spring-test + test + + + org.testng + testng + test + + + org.hamcrest + hamcrest-all + test + + + + + + + org.slf4j + slf4j-api + 1.7.25 + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + ch.qos.logback + logback-classic + 1.2.3 + + + org.testng + testng + 6.8.5 + + + junit + junit + + + + + org.hamcrest + hamcrest-all + 1.3 + + + org.springframework + spring-test + 5.0.5.RELEASE + + + + + diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/ONAPLogAdapter.java b/reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/ONAPLogAdapter.java similarity index 98% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/ONAPLogAdapter.java rename to reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/ONAPLogAdapter.java index 898cfb3..50693cb 100644 --- a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/ONAPLogAdapter.java +++ b/reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/ONAPLogAdapter.java @@ -19,7 +19,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.logging.ref.slf4j.common; +package org.onap.logging.ref.slf4j; import java.time.LocalDateTime; import java.util.UUID; @@ -315,7 +315,7 @@ public class ONAPLogAdapter { // depending on where you need them to appear, OR extend the // ServiceDescriptor to add them. - MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, LocalDateTime.now().toString()); + MDC.put(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP, LocalDateTime.now().toString()); MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, requestID); MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationID); MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, partnerName); @@ -495,7 +495,7 @@ public class ONAPLogAdapter { MDC.put(ONAPLogConstants.MDCs.RESPONSE_CODE, defaultToEmpty(this.mCode)); MDC.put(ONAPLogConstants.MDCs.RESPONSE_DESCRIPTION, defaultToEmpty(this.mDescription)); MDC.put(ONAPLogConstants.MDCs.RESPONSE_SEVERITY, defaultToEmpty(this.mSeverity)); - MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS, defaultToEmpty(this.mStatus)); + MDC.put(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE, defaultToEmpty(this.mStatus)); } } diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/ONAPLogConstants.java b/reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/ONAPLogConstants.java similarity index 85% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/ONAPLogConstants.java rename to reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/ONAPLogConstants.java index 0274f80..744f99f 100644 --- a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/ONAPLogConstants.java +++ b/reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/ONAPLogConstants.java @@ -19,7 +19,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.logging.ref.slf4j.common; +package org.onap.logging.ref.slf4j; import org.slf4j.Marker; import org.slf4j.MarkerFactory; @@ -95,30 +95,53 @@ public final class ONAPLogConstants { */ public static final class MDCs { - /** MDC correlating messages for a logical transaction. */ - public static final String REQUEST_ID = "RequestID"; + // Tracing. //////////////////////////////////////////////////////////// /** MDC correlating messages for an invocation. */ public static final String INVOCATION_ID = "InvocationID"; - /** MDC recording current service. */ - public static final String SERVICE_NAME = "ServiceName"; + /** MDC correlating messages for a logical transaction. */ + public static final String REQUEST_ID = "RequestID"; /** MDC recording calling service. */ public static final String PARTNER_NAME = "PartnerName"; + /** MDC recording current service. */ + public static final String SERVICE_NAME = "ServiceName"; + + /** MDC recording target service. */ + public static final String TARGET_SERVICE_NAME = "TargetServiceName"; + /** MDC recording current service instance. */ public static final String INSTANCE_UUID = "InstanceUUID"; + // Network. //////////////////////////////////////////////////////////// + /** MDC recording caller address. */ public static final String CLIENT_IP_ADDRESS = "ClientIPAddress"; /** MDC recording server address. */ public static final String SERVER_FQDN = "ServerFQDN"; - /** MDC recording timestamp at the start of the current invocation. */ + /** + * MDC recording timestamp at the start of the current request, + * with the same scope as {@link #REQUEST_ID}. + * + *

Open issues: + *

    + *
      Easily confused with {@link #INVOKE_TIMESTAMP}.
    + *
      No mechanism for propagation between components, e.g. via HTTP headers.
    + *
      Whatever mechanism we define, it's going to be costly.
    + *
+ *

+ * */ public static final String ENTRY_TIMESTAMP = "EntryTimestamp"; + /** MDC recording timestamp at the start of the current invocation. */ + public static final String INVOKE_TIMESTAMP = "InvokeTimestamp"; + + // Outcomes. /////////////////////////////////////////////////////////// + /** MDC reporting outcome code. */ public static final String RESPONSE_CODE = "ResponseCode"; @@ -129,7 +152,9 @@ public final class ONAPLogConstants { public static final String RESPONSE_SEVERITY = "Severity"; /** MDC reporting outcome error level. */ - public static final String RESPONSE_STATUS = "StatusCode"; + public static final String RESPONSE_STATUS_CODE = "StatusCode"; + + // Unsorted. /////////////////////////////////////////////////////////// /** * Hide and forbid construction. @@ -188,7 +213,7 @@ public final class ONAPLogConstants { SYNCHRONOUS("SYNCHRONOUS", Markers.INVOKE_SYNCHRONOUS), /** Asynchronous, non-blocking. */ - ASYNCHRONOUS("", Markers.INVOKE_ASYNCHRONOUS); + ASYNCHRONOUS("ASYNCHRONOUS", Markers.INVOKE_ASYNCHRONOUS); /** Enum value. */ private String mString; diff --git a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/package-info.java b/reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/package-info.java similarity index 96% rename from reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/package-info.java rename to reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/package-info.java index d5c4375..d9a6247 100644 --- a/reference/slf4j-reference/src/main/java/org/onap/logging/ref/slf4j/common/package-info.java +++ b/reference/logging-slf4j/src/main/java/org/onap/logging/ref/slf4j/package-info.java @@ -19,7 +19,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.logging.ref.slf4j.common; +package org.onap.logging.ref.slf4j; /** *

Code in here has potential application outside this reference diff --git a/reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogAdapterOutputTest.java b/reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogAdapterOutputTest.java new file mode 100644 index 0000000..bab74bb --- /dev/null +++ b/reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogAdapterOutputTest.java @@ -0,0 +1,162 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.logging + * ================================================================================ + * Copyright © 2018 Amdocs + * All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.logging.ref.slf4j; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import javax.xml.bind.DatatypeConverter; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.springframework.mock.web.MockHttpServletRequest; +import org.testng.annotations.AfterSuite; +import org.testng.annotations.BeforeSuite; +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.StringContains.containsString; +import static org.hamcrest.number.OrderingComparison.greaterThan; + +/** + * Smoketest output, though the embedded configuration isn't necessarily + * canonical. + * + *

There are more comprehensive tests in the logging-slf4j-demo + * project.

+ */ +public class ONAPLogAdapterOutputTest { + + /** Temporary directory into which logfiles are written. */ + private static File sDir; + + @BeforeSuite + public static void setUp() throws Exception { + sDir = Files.createTempDirectory(ONAPLogAdapterOutputTest.class.getName()).toFile(); + System.getProperties().setProperty("SLF4J_OUTPUT_DIRECTORY", sDir.getAbsolutePath()); + LoggerFactory.getLogger(ONAPLogAdapterOutputTest.class).info("Starting."); + } + + @AfterSuite + public static void tearDown() throws Exception { + LoggerFactory.getLogger(ONAPLogAdapterOutputTest.class).info("Ending."); + Thread.sleep(1000L); + if (sDir != null) { + System.err.println("Should be deleting [" + sDir.getAbsolutePath() + "]..."); + } + } + + @Test + public void testOutput() throws Exception { + + assertThat(sDir, notNullValue()); + assertThat(sDir.isDirectory(), is(true)); + + final String uuid = UUID.randomUUID().toString(); + final String errorcode = UUID.randomUUID().toString(); + final Logger logger = LoggerFactory.getLogger(ONAPLogAdapterOutputTest.class); + + try { + MDC.put("uuid", uuid); + final ONAPLogAdapter adapter = new ONAPLogAdapter(logger); + final ONAPLogAdapter.HttpServletRequestAdapter http + = new ONAPLogAdapter.HttpServletRequestAdapter(new MockHttpServletRequest()); + adapter.entering(http); + adapter.unwrap().warn("a_warning"); + try { + throw new Exception("errorcode=" + errorcode); + } + catch (final Exception e) { + adapter.unwrap().error("an_error", e); + } + + Thread.sleep(1000L); + } + finally { + MDC.clear(); + } + + final List lines = new ArrayList<>(); + for (final File f : sDir.listFiles()) { + try (BufferedReader reader = new BufferedReader(new FileReader(f))) { + String line; + while ((line = reader.readLine()) != null) { + if (line.contains(uuid)) { + lines.add(line); + } + } + } + } + + assertThat(lines.size(), is(3)); + + assertThat(lines.get(0), containsString("ENTRY")); + final String [] line0 = lines.get(0).split("\t", -1); + assertThat(line0.length, is(9)); + DatatypeConverter.parseDateTime(line0[0]); + assertThat(line0[1].trim().length(), greaterThan(1)); + assertThat(line0[2], is("INFO")); + assertThat(line0[3], is(this.getClass().getName())); + assertThat(line0[4], containsString("uuid=" + uuid)); + assertThat(line0[5], is("")); + assertThat(line0[6], is("")); + assertThat(line0[7], is("ENTRY")); + System.err.println(lines.get(0)); + + assertThat(lines.get(1), not(containsString("ENTRY"))); + assertThat(lines.get(1), containsString("a_warning")); + final String [] line1 = lines.get(1).split("\t", -1); + assertThat(line1.length, is(9)); + DatatypeConverter.parseDateTime(line1[0]); + assertThat(line1[1].trim().length(), greaterThan(1)); + assertThat(line1[2], is("WARN")); + assertThat(line1[3], is(this.getClass().getName())); + assertThat(line1[4], containsString("uuid=" + uuid)); + assertThat(line1[5], is("a_warning")); + assertThat(line1[6], is("")); + assertThat(line1[7], is("")); + System.err.println(lines.get(1)); + + assertThat(lines.get(2), not(containsString("ENTRY"))); + assertThat(lines.get(2), containsString("an_error")); + final String [] line2 = lines.get(2).split("\t", -1); + assertThat(line2.length, is(9)); + DatatypeConverter.parseDateTime(line2[0]); + assertThat(line2[1].trim().length(), greaterThan(1)); + assertThat(line2[2], is("ERROR")); + assertThat(line2[3], is(this.getClass().getName())); + assertThat(line2[4], containsString("uuid=" + uuid)); + assertThat(line2[5], is("an_error")); + assertThat(line2[6], containsString("errorcode=" + errorcode)); + assertThat(line2[7], is("")); + System.err.println(lines.get(2)); + } +} diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/common/ONAPLogAdapterTest.java b/reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogAdapterTest.java similarity index 62% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/common/ONAPLogAdapterTest.java rename to reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogAdapterTest.java index 60ee60f..ad22603 100644 --- a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/common/ONAPLogAdapterTest.java +++ b/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 headers = new HashMap<>(); + final ONAPLogAdapter.RequestBuilder builder = new 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 diff --git a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/common/ONAPLogConstantsTest.java b/reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogConstantsTest.java similarity index 53% rename from reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/common/ONAPLogConstantsTest.java rename to reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogConstantsTest.java index aa0f7ae..f6642f9 100644 --- a/reference/slf4j-reference/src/test/java/org/onap/logging/ref/slf4j/common/ONAPLogConstantsTest.java +++ b/reference/logging-slf4j/src/test/java/org/onap/logging/ref/slf4j/ONAPLogConstantsTest.java @@ -19,7 +19,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.logging.ref.slf4j.common; +package org.onap.logging.ref.slf4j; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -37,14 +37,11 @@ import static org.hamcrest.core.IsInstanceOf.instanceOf; public class ONAPLogConstantsTest { @Test - public void testConstructor() throws Exception { - try { - ONAPLogConstants.class.getDeclaredConstructors()[0].newInstance(); - Assert.fail("Should fail for hidden constructor."); - } - catch (final IllegalAccessException e) { - - } + public void testConstructors() throws Exception { + assertInaccessibleConstructor(ONAPLogConstants.class); + assertInaccessibleConstructor(ONAPLogConstants.MDCs.class); + assertInaccessibleConstructor(ONAPLogConstants.Markers.class); + assertInaccessibleConstructor(ONAPLogConstants.Headers.class); } @Test @@ -62,9 +59,9 @@ public class ONAPLogConstantsTest { @Test public void testHeaders() { - assertThat(ONAPLogConstants.Headers.REQUEST_ID.toString(), is("X-ONAP-RequestID")); - assertThat(ONAPLogConstants.Headers.INVOCATION_ID.toString(), is("X-ONAP-InvocationID")); - assertThat(ONAPLogConstants.Headers.PARTNER_NAME.toString(), is("X-ONAP-PartnerName")); + assertThat(ONAPLogConstants.Headers.REQUEST_ID, is("X-ONAP-RequestID")); + assertThat(ONAPLogConstants.Headers.INVOCATION_ID, is("X-ONAP-InvocationID")); + assertThat(ONAPLogConstants.Headers.PARTNER_NAME, is("X-ONAP-PartnerName")); } @Test @@ -83,4 +80,54 @@ public class ONAPLogConstantsTest { assertThat(ONAPLogConstants.InvocationMode.ASYNCHRONOUS.getMarker(), is(ONAPLogConstants.Markers.INVOKE_ASYNCHRONOUS)); } + + @Test + public void testInvocationModeToString() { + assertThat(ONAPLogConstants.InvocationMode.SYNCHRONOUS.toString(), + is("SYNCHRONOUS")); + } + + @Test + public void testResponseStatus() { + assertThat(ONAPLogConstants.ResponseStatus.COMPLETED.toString(), is("COMPLETED")); + assertThat(ONAPLogConstants.ResponseStatus.ERROR.toString(), is("ERROR")); + } + + @Test + public void testMDCs() { + + assertThat(ONAPLogConstants.MDCs.CLIENT_IP_ADDRESS.toString(), is("ClientIPAddress")); + assertThat(ONAPLogConstants.MDCs.SERVER_FQDN.toString(), is("ServerFQDN")); + + assertThat(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP.toString(), is("EntryTimestamp")); + assertThat(ONAPLogConstants.MDCs.INVOKE_TIMESTAMP.toString(), is("InvokeTimestamp")); + + assertThat(ONAPLogConstants.MDCs.REQUEST_ID.toString(), is("RequestID")); + assertThat(ONAPLogConstants.MDCs.INVOCATION_ID.toString(), is("InvocationID")); + assertThat(ONAPLogConstants.MDCs.PARTNER_NAME.toString(), is("PartnerName")); + assertThat(ONAPLogConstants.MDCs.INSTANCE_UUID.toString(), is("InstanceUUID")); + assertThat(ONAPLogConstants.MDCs.SERVICE_NAME.toString(), is("ServiceName")); + assertThat(ONAPLogConstants.MDCs.TARGET_SERVICE_NAME.toString(), is("TargetServiceName")); + + } + + static void assertInaccessibleConstructor(final Class c) throws Exception { + try { + c.getDeclaredConstructors()[0].newInstance(); + Assert.fail("Should fail for hidden constructor."); + } + catch (final IllegalAccessException e) { + + } + + try { + final Constructor constructor = c.getDeclaredConstructors()[0]; + constructor.setAccessible(true); + constructor.newInstance(); + Assert.fail("Should fail even when invoked."); + } + catch (final InvocationTargetException e) { + assertThat(e.getCause(), instanceOf(UnsupportedOperationException.class)); + } + } } diff --git a/reference/logging-slf4j/src/test/java/testng.xml b/reference/logging-slf4j/src/test/java/testng.xml new file mode 100644 index 0000000..7b31c26 --- /dev/null +++ b/reference/logging-slf4j/src/test/java/testng.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/reference/logging-slf4j/src/test/resources/logback.xml b/reference/logging-slf4j/src/test/resources/logback.xml new file mode 100644 index 0000000..554d712 --- /dev/null +++ b/reference/logging-slf4j/src/test/resources/logback.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + ${pattern} + + + + + ${SLF4J_OUTPUT_DIRECTORY}/output.log + + ${pattern} + + + + + + + + + + + + + diff --git a/reference/pom.xml b/reference/pom.xml index b3f99ba..7bb5f64 100644 --- a/reference/pom.xml +++ b/reference/pom.xml @@ -16,6 +16,8 @@ logging-mock-service logging-docker-root logging-kubernetes + logging-slf4j + logging-slf4j-demo