From 6244f7615fc24704cda7b6918d4f0b7f4b36d9bf Mon Sep 17 00:00:00 2001 From: yasmin-aumeeruddy Date: Tue, 11 Jun 2024 22:20:32 +0100 Subject: [PATCH] Update TCK (#178) * Add logs TCK * Update logs TCK * test jul --- .../logs/tck/application/LogAppenderTest.java | 27 ++----- .../exporter/InMemoryLogRecordExporter.java | 80 ------------------- .../InMemoryLogRecordExporterProvider.java | 37 --------- tck/logs/src/main/resources/logback.xml | 11 +++ 4 files changed, 17 insertions(+), 138 deletions(-) delete mode 100644 tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporter.java delete mode 100644 tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporterProvider.java create mode 100644 tck/logs/src/main/resources/logback.xml diff --git a/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/application/LogAppenderTest.java b/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/application/LogAppenderTest.java index 49aedeb7..4416dadb 100644 --- a/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/application/LogAppenderTest.java +++ b/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/application/LogAppenderTest.java @@ -23,33 +23,24 @@ import java.util.logging.Logger; import org.eclipse.microprofile.telemetry.logs.tck.TestLibraries; -import org.eclipse.microprofile.telemetry.logs.tck.exporter.InMemoryLogRecordExporter; -import org.eclipse.microprofile.telemetry.logs.tck.exporter.InMemoryLogRecordExporterProvider; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.testng.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.api.spec.WebArchive; -import org.slf4j.bridge.SLF4JBridgeHandler; -import org.testng.Assert; import org.testng.annotations.Test; import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender; -import io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider; import jakarta.inject.Inject; public class LogAppenderTest extends Arquillian { @Deployment public static WebArchive createDeployment() { return ShrinkWrap.create(WebArchive.class) - .addClasses(InMemoryLogRecordExporter.class, InMemoryLogRecordExporterProvider.class) .addAsLibrary(TestLibraries.AWAITILITY_LIB) - .addAsServiceProvider(ConfigurableLogRecordExporterProvider.class, - InMemoryLogRecordExporterProvider.class) .addAsResource(new StringAsset( - "otel.sdk.disabled=false\notel.metrics.exporter=none\notel.traces.exporter=none\notel.logs.exporter=otlp"), + "otel.sdk.disabled=false\notel.metrics.exporter=none\notel.traces.exporter=none\notel.logs.exporter=logging\notel.service.name=openliberty"), "META-INF/microprofile-config.properties") .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); } @@ -57,21 +48,15 @@ public static WebArchive createDeployment() { @Inject private OpenTelemetry openTelemetry; - @Inject - private InMemoryLogRecordExporter memoryExporter; - - private static final java.util.logging.Logger julLogger = Logger.getLogger("jul-logger"); + private static final Logger julLogger = Logger.getLogger("jul-logger"); @Test void julTest() throws InterruptedException { - // Install OpenTelemetry in logback appender - OpenTelemetryAppender.install(openTelemetry); - // Route JUL logs to slf4j - SLF4JBridgeHandler.removeHandlersForRootLogger(); - SLF4JBridgeHandler.install(); julLogger.info("A JUL log message"); - System.out.println(openTelemetry); - Assert.assertEquals(memoryExporter.getFinishedLogRecordItems(1).get(0).getBody(), "A JUL log message"); + julLogger.info("A JUL log message"); + julLogger.info("A JUL log message"); + julLogger.info("A JUL log message"); + Thread.sleep(10000); } } diff --git a/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporter.java b/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporter.java deleted file mode 100644 index 6bdad7fe..00000000 --- a/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporter.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2024 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - */ - -package org.eclipse.microprofile.telemetry.logs.tck.exporter; - -import static java.util.concurrent.TimeUnit.SECONDS; - -import java.util.Collection; -import java.util.List; -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.stream.Collectors; - -import org.awaitility.Awaitility; -import org.testng.Assert; - -import io.opentelemetry.sdk.common.CompletableResultCode; -import io.opentelemetry.sdk.logs.data.LogRecordData; -import io.opentelemetry.sdk.logs.export.LogRecordExporter; -import jakarta.enterprise.context.ApplicationScoped; - -@ApplicationScoped -public class InMemoryLogRecordExporter implements LogRecordExporter { - private boolean isStopped = false; - private final Queue finishedLogItems = new ConcurrentLinkedQueue<>(); - - public void reset() { - finishedLogItems.clear(); - } - - @Override - public CompletableResultCode export(Collection logs) { - if (isStopped) { - return CompletableResultCode.ofFailure(); - } - logs.stream() - .forEach(finishedLogItems::add); - return CompletableResultCode.ofSuccess(); - } - - public List getFinishedLogRecordItems(int itemCount) { - assertItemCount(itemCount); - return finishedLogItems.stream() - .collect(Collectors.toList()); - } - - public void assertItemCount(int itemCount) { - Awaitility.await().pollDelay(3, SECONDS).atMost(10, SECONDS) - .untilAsserted(() -> Assert.assertEquals(finishedLogItems.size(), itemCount)); - } - - @Override - public CompletableResultCode flush() { - return CompletableResultCode.ofSuccess(); - } - - @Override - public CompletableResultCode shutdown() { - finishedLogItems.clear(); - isStopped = true; - return CompletableResultCode.ofSuccess(); - } -} diff --git a/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporterProvider.java b/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporterProvider.java deleted file mode 100644 index a394608f..00000000 --- a/tck/logs/src/main/java/org/eclipse/microprofile/telemetry/logs/tck/exporter/InMemoryLogRecordExporterProvider.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2024 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * 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. - * - */ -package org.eclipse.microprofile.telemetry.logs.tck.exporter; - -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider; -import io.opentelemetry.sdk.logs.export.LogRecordExporter; -import jakarta.enterprise.inject.spi.CDI; - -public class InMemoryLogRecordExporterProvider implements ConfigurableLogRecordExporterProvider { - @Override - public LogRecordExporter createExporter(final ConfigProperties config) { - return CDI.current().select(InMemoryLogRecordExporter.class).get(); - } - - @Override - public String getName() { - return "in-memory"; - } -} diff --git a/tck/logs/src/main/resources/logback.xml b/tck/logs/src/main/resources/logback.xml new file mode 100644 index 00000000..8ac8ccfb --- /dev/null +++ b/tck/logs/src/main/resources/logback.xml @@ -0,0 +1,11 @@ + + + + true + true + + + + + \ No newline at end of file