From 37d1035430f34135137aa62e46ec361c8b5ff9c5 Mon Sep 17 00:00:00 2001 From: Jay DeLuca Date: Wed, 15 Nov 2023 10:08:59 -0500 Subject: [PATCH] Convert log4j context-data tests from groovy to java (#9804) --- .../javaagent/build.gradle.kts | 8 +- .../src/test/groovy/AutoLog4j2Test.groovy | 29 ---- .../contextdata/v2_17/AutoLog4j2Test.java | 45 +++++++ .../groovy/AutoLog4jBaggageTest.groovy | 9 -- .../v2_17/AutoLog4jBaggageTest.java | 21 +++ .../groovy/LibraryLog4j2BaggageTest.groovy | 9 -- .../src/test/groovy/LibraryLog4j2Test.groovy | 9 -- .../v2_17/LibraryLog4j2BaggageTest.java | 21 +++ .../contextdata/v2_17/LibraryLog4j2Test.java | 21 +++ .../src/test/groovy/Log4j27BaggageTest.groovy | 9 -- .../src/test/groovy/Log4j27Test.groovy | 29 ---- .../contextdata/v2_7/Log4j27BaggageTest.java | 21 +++ .../log4j/contextdata/v2_7/Log4j27Test.java | 45 +++++++ .../testing/build.gradle.kts | 2 - .../src/main/groovy/Log4J2BaggageTest.groovy | 11 -- .../testing/src/main/groovy/Log4j2Test.groovy | 99 -------------- .../log4j/contextdata/Log4j2BaggageTest.java | 13 ++ .../log4j/contextdata/Log4j2Test.java | 127 ++++++++++++++++++ 18 files changed, 318 insertions(+), 210 deletions(-) delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/groovy/AutoLog4j2Test.groovy create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4j2Test.java delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/groovy/AutoLog4jBaggageTest.groovy create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4jBaggageTest.java delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2BaggageTest.groovy delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2BaggageTest.java create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2Test.java delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27BaggageTest.groovy delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27Test.groovy create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27BaggageTest.java create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27Test.java delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4J2BaggageTest.groovy delete mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4j2Test.groovy create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2BaggageTest.java create mode 100644 instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2Test.java diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/build.gradle.kts b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/build.gradle.kts index d82585961d..9563e5388c 100644 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/build.gradle.kts +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/build.gradle.kts @@ -27,8 +27,8 @@ testing { // Regression test for https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2403 val testDisableThreadLocals by registering(JvmTestSuite::class) { sources { - groovy { - setSrcDirs(listOf("src/test/groovy")) + java { + setSrcDirs(listOf("src/test/java")) } } dependencies { @@ -48,8 +48,8 @@ testing { val testAddBaggage by registering(JvmTestSuite::class) { sources { - groovy { - setSrcDirs(listOf("src/testAddBaggage/groovy")) + java { + setSrcDirs(listOf("src/testAddBaggage/java")) } } dependencies { diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/groovy/AutoLog4j2Test.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/groovy/AutoLog4j2Test.groovy deleted file mode 100644 index b75ff250e9..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/groovy/AutoLog4j2Test.groovy +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender -import io.opentelemetry.instrumentation.test.AgentTestTrait -import org.apache.logging.log4j.LogManager - -class AutoLog4j2Test extends Log4j2Test implements AgentTestTrait { - - def "resource attributes"() { - given: - def logger = LogManager.getLogger("TestLogger") - - when: - logger.info("log message 1") - - def events = ListAppender.get().getEvents() - - then: - events.size() == 1 - events[0].message == "log message 1" - events[0].contextData["trace_id"] == null - events[0].contextData["span_id"] == null - events[0].contextData["service.name"] == "unknown_service:java" - events[0].contextData["telemetry.sdk.language"] == "java" - } -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4j2Test.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4j2Test.java new file mode 100644 index 0000000000..21bd52f872 --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4j2Test.java @@ -0,0 +1,45 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.log4j.contextdata.v2_17; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender; +import io.opentelemetry.instrumentation.log4j.contextdata.Log4j2Test; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class AutoLog4j2Test extends Log4j2Test { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + public InstrumentationExtension getInstrumentationExtension() { + return testing; + } + + @Test + void testResourceAttributes() { + Logger logger = LogManager.getLogger("TestLogger"); + + logger.info("log message 1"); + + List events = ListAppender.get().getEvents(); + + assertThat(events.size()).isEqualTo(1); + assertThat(events.get(0).getMessage()).isEqualTo("log message 1"); + assertThat(events.get(0).getContextData().get("trace_id")).isNull(); + assertThat(events.get(0).getContextData().get("span_id")).isNull(); + assertThat(events.get(0).getContextData().get("service.name")) + .isEqualTo("unknown_service:java"); + assertThat(events.get(0).getContextData().get("telemetry.sdk.language")).isEqualTo("java"); + } +} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/groovy/AutoLog4jBaggageTest.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/groovy/AutoLog4jBaggageTest.groovy deleted file mode 100644 index ccb9edaed2..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/groovy/AutoLog4jBaggageTest.groovy +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.instrumentation.test.AgentTestTrait - -class AutoLog4jBaggageTest extends Log4J2BaggageTest implements AgentTestTrait { -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4jBaggageTest.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4jBaggageTest.java new file mode 100644 index 0000000000..8c96fe89ab --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/javaagent/src/testAddBaggage/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_17/AutoLog4jBaggageTest.java @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.log4j.contextdata.v2_17; + +import io.opentelemetry.instrumentation.log4j.contextdata.Log4j2BaggageTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class AutoLog4jBaggageTest extends Log4j2BaggageTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + public InstrumentationExtension getInstrumentationExtension() { + return testing; + } +} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2BaggageTest.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2BaggageTest.groovy deleted file mode 100644 index 943784d723..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2BaggageTest.groovy +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.instrumentation.test.LibraryTestTrait - -class LibraryLog4j2BaggageTest extends Log4J2BaggageTest implements LibraryTestTrait { -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy deleted file mode 100644 index 342e49f0d3..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/groovy/LibraryLog4j2Test.groovy +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.instrumentation.test.LibraryTestTrait - -class LibraryLog4j2Test extends Log4j2Test implements LibraryTestTrait { -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2BaggageTest.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2BaggageTest.java new file mode 100644 index 0000000000..f994932828 --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2BaggageTest.java @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.log4j.contextdata.v2_17; + +import io.opentelemetry.instrumentation.log4j.contextdata.Log4j2BaggageTest; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class LibraryLog4j2BaggageTest extends Log4j2BaggageTest { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + public InstrumentationExtension getInstrumentationExtension() { + return testing; + } +} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2Test.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2Test.java new file mode 100644 index 0000000000..eaa08b65b3 --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.17/library-autoconfigure/src/test/java/io/opentelemetry/instrumentation/log4j/contextdata/v2_17/LibraryLog4j2Test.java @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.log4j.contextdata.v2_17; + +import io.opentelemetry.instrumentation.log4j.contextdata.Log4j2Test; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class LibraryLog4j2Test extends Log4j2Test { + @RegisterExtension + static final InstrumentationExtension testing = LibraryInstrumentationExtension.create(); + + @Override + public InstrumentationExtension getInstrumentationExtension() { + return testing; + } +} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27BaggageTest.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27BaggageTest.groovy deleted file mode 100644 index b25a646a1b..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27BaggageTest.groovy +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.instrumentation.test.AgentTestTrait - -class Log4j27BaggageTest extends Log4J2BaggageTest implements AgentTestTrait { -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27Test.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27Test.groovy deleted file mode 100644 index b585196570..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/groovy/Log4j27Test.groovy +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender -import io.opentelemetry.instrumentation.test.AgentTestTrait -import org.apache.logging.log4j.LogManager - -class Log4j27Test extends Log4j2Test implements AgentTestTrait { - - def "resource attributes"() { - given: - def logger = LogManager.getLogger("TestLogger") - - when: - logger.info("log message 1") - - def events = ListAppender.get().getEvents() - - then: - events.size() == 1 - events[0].message == "log message 1" - events[0].contextData["trace_id"] == null - events[0].contextData["span_id"] == null - events[0].contextData["service.name"] == "unknown_service:java" - events[0].contextData["telemetry.sdk.language"] == "java" - } -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27BaggageTest.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27BaggageTest.java new file mode 100644 index 0000000000..ce06d4d9dd --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27BaggageTest.java @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.log4j.contextdata.v2_7; + +import io.opentelemetry.instrumentation.log4j.contextdata.Log4j2BaggageTest; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import org.junit.jupiter.api.extension.RegisterExtension; + +class Log4j27BaggageTest extends Log4j2BaggageTest { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + public InstrumentationExtension getInstrumentationExtension() { + return testing; + } +} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27Test.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27Test.java new file mode 100644 index 0000000000..d3cbd2c8ca --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-2.7/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/log4j/contextdata/v2_7/Log4j27Test.java @@ -0,0 +1,45 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.log4j.contextdata.v2_7; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender; +import io.opentelemetry.instrumentation.log4j.contextdata.Log4j2Test; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class Log4j27Test extends Log4j2Test { + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + @Override + public InstrumentationExtension getInstrumentationExtension() { + return testing; + } + + @Test + void testResourceAttributes() { + Logger logger = LogManager.getLogger("TestLogger"); + + logger.info("log message 1"); + + List events = ListAppender.get().getEvents(); + + assertThat(events.size()).isEqualTo(1); + assertThat(events.get(0).getMessage()).isEqualTo("log message 1"); + assertThat(events.get(0).getContextData().get("trace_id")).isNull(); + assertThat(events.get(0).getContextData().get("span_id")).isNull(); + assertThat(events.get(0).getContextData().get("service.name")) + .isEqualTo("unknown_service:java"); + assertThat(events.get(0).getContextData().get("telemetry.sdk.language")).isEqualTo("java"); + } +} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/build.gradle.kts b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/build.gradle.kts index 89cd7732cd..898c7d73e9 100644 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/build.gradle.kts +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/build.gradle.kts @@ -9,9 +9,7 @@ dependencies { implementation("com.google.guava:guava") - implementation("org.apache.groovy:groovy") implementation("io.opentelemetry:opentelemetry-api") - implementation("org.spockframework:spock-core") annotationProcessor("org.apache.logging.log4j:log4j-core:2.7") } diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4J2BaggageTest.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4J2BaggageTest.groovy deleted file mode 100644 index d369a227cb..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4J2BaggageTest.groovy +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -abstract class Log4J2BaggageTest extends Log4j2Test { - @Override - boolean expectBaggage() { - return true - } -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4j2Test.groovy b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4j2Test.groovy deleted file mode 100644 index db460bdb1e..0000000000 --- a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4j2Test.groovy +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import io.opentelemetry.api.baggage.Baggage -import io.opentelemetry.api.trace.Span -import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender -import io.opentelemetry.instrumentation.test.InstrumentationSpecification -import org.apache.logging.log4j.LogManager - -abstract class Log4j2Test extends InstrumentationSpecification { - def setup() { - ListAppender.get().clearEvents() - } - - def "no ids when no span"() { - given: - def logger = LogManager.getLogger("TestLogger") - - when: - logger.info("log message 1") - logger.info("log message 2") - - def events = ListAppender.get().getEvents() - - then: - events.size() == 2 - events[0].message == "log message 1" - events[0].contextData["trace_id"] == null - events[0].contextData["span_id"] == null - events[0].contextData["trace_flags"] == null - - events[1].message == "log message 2" - events[1].contextData["trace_id"] == null - events[1].contextData["span_id"] == null - events[1].contextData["trace_flags"] == null - } - - def "ids when span"() { - given: - def logger = LogManager.getLogger("TestLogger") - - when: - Baggage baggage = Baggage.empty().toBuilder().put("baggage_key", "baggage_value").build() - Span spanParent - Span spanChild - try (var unusedScope = baggage.makeCurrent()) { - runWithSpan("test") { - spanParent = Span.current() - logger.info("log span parent") - - runWithSpan("test-child") { - logger.info("log span child") - spanChild = Span.current() - } - } - } - - logger.info("log message 2") - - Span span2 = runWithSpan("test 2") { - logger.info("log message 3") - Span.current() - } - - def events = ListAppender.get().getEvents() - - then: - events.size() == 4 - events[0].message == "log span parent" - events[0].contextData["trace_id"] == spanParent.spanContext.traceId - events[0].contextData["span_id"] == spanParent.spanContext.spanId - events[0].contextData["trace_flags"] == "01" - events[0].contextData["baggage.baggage_key"] == (expectBaggage() ? "baggage_value" : null) - - events[1].message == "log span child" - events[1].contextData["trace_id"] == spanChild.spanContext.traceId - events[1].contextData["span_id"] == spanChild.spanContext.spanId - events[1].contextData["trace_flags"] == "01" - events[1].contextData["baggage.baggage_key"] == (expectBaggage() ? "baggage_value" : null) - - events[2].message == "log message 2" - events[2].contextData["trace_id"] == null - events[2].contextData["span_id"] == null - events[2].contextData["trace_flags"] == null - events[2].contextData["baggage.baggage_key"] == null - - events[3].message == "log message 3" - events[3].contextData["trace_id"] == span2.spanContext.traceId - events[3].contextData["span_id"] == span2.spanContext.spanId - events[3].contextData["trace_flags"] == "01" - events[3].contextData["baggage.baggage_key"] == null - } - - boolean expectBaggage() { - return false - } -} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2BaggageTest.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2BaggageTest.java new file mode 100644 index 0000000000..b9f9217894 --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2BaggageTest.java @@ -0,0 +1,13 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.log4j.contextdata; + +public abstract class Log4j2BaggageTest extends Log4j2Test { + @Override + boolean expectBaggage() { + return true; + } +} diff --git a/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2Test.java b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2Test.java new file mode 100644 index 0000000000..2ca31ef3bc --- /dev/null +++ b/instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/java/io/opentelemetry/instrumentation/log4j/contextdata/Log4j2Test.java @@ -0,0 +1,127 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.log4j.contextdata; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.api.baggage.Baggage; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.context.Scope; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public abstract class Log4j2Test { + public abstract InstrumentationExtension getInstrumentationExtension(); + + @BeforeEach + void setUp() { + ListAppender.get().clearEvents(); + } + + boolean expectBaggage() { + return false; + } + + @Test + void testNoIdsWhenNoSpan() { + Logger logger = LogManager.getLogger("TestLogger"); + + logger.info("log message 1"); + logger.info("log message 2"); + + List events = ListAppender.get().getEvents(); + + assertThat(events.size()).isEqualTo(2); + + assertThat(events.get(0).getMessage()).isEqualTo("log message 1"); + assertThat(events.get(0).getContextData().get("trace_id")).isNull(); + assertThat(events.get(0).getContextData().get("span_id")).isNull(); + assertThat(events.get(0).getContextData().get("trace_flags")).isNull(); + + assertThat(events.get(1).getMessage()).isEqualTo("log message 2"); + assertThat(events.get(1).getContextData().get("trace_id")).isNull(); + assertThat(events.get(1).getContextData().get("span_id")).isNull(); + assertThat(events.get(1).getContextData().get("trace_flags")).isNull(); + } + + @Test + void testIdsWhenSpan() { + Logger logger = LogManager.getLogger("TestLogger"); + + Baggage baggage = Baggage.empty().toBuilder().put("baggage_key", "baggage_value").build(); + AtomicReference spanParent = new AtomicReference<>(); + AtomicReference spanChild = new AtomicReference<>(); + try (Scope unusedScope = baggage.makeCurrent()) { + getInstrumentationExtension() + .runWithSpan( + "test", + () -> { + spanParent.set(Span.current()); + logger.info("log span parent"); + + getInstrumentationExtension() + .runWithSpan( + "test-child", + () -> { + logger.info("log span child"); + spanChild.set(Span.current()); + }); + }); + } + + logger.info("log message 2"); + + Span span2 = + getInstrumentationExtension() + .runWithSpan( + "test 2", + () -> { + logger.info("log message 3"); + return Span.current(); + }); + + List events = ListAppender.get().getEvents(); + + assertThat(events.size()).isEqualTo(4); + + assertThat(events.get(0).getMessage()).isEqualTo("log span parent"); + assertThat(events.get(0).getContextData().get("trace_id")) + .isEqualTo(spanParent.get().getSpanContext().getTraceId()); + assertThat(events.get(0).getContextData().get("span_id")) + .isEqualTo(spanParent.get().getSpanContext().getSpanId()); + assertThat(events.get(0).getContextData().get("trace_flags")).isEqualTo("01"); + assertThat(events.get(0).getContextData().get("baggage.baggage_key")) + .isEqualTo((expectBaggage() ? "baggage_value" : null)); + + assertThat(events.get(1).getMessage()).isEqualTo("log span child"); + assertThat(events.get(1).getContextData().get("trace_id")) + .isEqualTo(spanChild.get().getSpanContext().getTraceId()); + assertThat(events.get(1).getContextData().get("span_id")) + .isEqualTo(spanChild.get().getSpanContext().getSpanId()); + assertThat(events.get(1).getContextData().get("trace_flags")).isEqualTo("01"); + assertThat(events.get(1).getContextData().get("baggage.baggage_key")) + .isEqualTo((expectBaggage() ? "baggage_value" : null)); + + assertThat(events.get(2).getMessage()).isEqualTo("log message 2"); + assertThat(events.get(2).getContextData().get("trace_id")).isNull(); + assertThat(events.get(2).getContextData().get("span_id")).isNull(); + assertThat(events.get(2).getContextData().get("trace_flags")).isNull(); + assertThat(events.get(2).getContextData().get("baggage.baggage_key")).isNull(); + + assertThat(events.get(3).getMessage()).isEqualTo("log message 3"); + assertThat(events.get(3).getContextData().get("trace_id")) + .isEqualTo(span2.getSpanContext().getTraceId()); + assertThat(events.get(3).getContextData().get("span_id")) + .isEqualTo(span2.getSpanContext().getSpanId()); + assertThat(events.get(3).getContextData().get("trace_flags")).isEqualTo("01"); + assertThat(events.get(3).getContextData().get("baggage.baggage_key")).isNull(); + } +}