diff --git a/smoke-tests/apps/LiveMetrics/build.gradle.kts b/smoke-tests/apps/LiveMetrics/build.gradle.kts index bbe666d28bb..f12e8578e34 100644 --- a/smoke-tests/apps/LiveMetrics/build.gradle.kts +++ b/smoke-tests/apps/LiveMetrics/build.gradle.kts @@ -7,5 +7,5 @@ dependencies { implementation("log4j:log4j:1.2.17") implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:1.22.1") implementation("com.azure:azure-json:1.0.0") - implementation("com.azure:azure-monitor-opentelemetry-autoconfigure:1.0.0-beta.1") + implementation("com.azure:azure-monitor-opentelemetry-autoconfigure:1.1.0") } diff --git a/smoke-tests/apps/OpenTelemetryApiLogBridge/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java b/smoke-tests/apps/OpenTelemetryApiLogBridge/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java index 4fe849a09df..670b327a699 100644 --- a/smoke-tests/apps/OpenTelemetryApiLogBridge/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java +++ b/smoke-tests/apps/OpenTelemetryApiLogBridge/src/main/java/com/microsoft/applicationinsights/smoketestapp/TestController.java @@ -4,6 +4,7 @@ package com.microsoft.applicationinsights.smoketestapp; import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.logs.Severity; import io.opentelemetry.semconv.ExceptionAttributes; import java.io.PrintWriter; @@ -37,4 +38,16 @@ public String testCustomExceptionTypeAndMessage() { .emit(); return "OK!"; } + + @GetMapping("/test-custom-event") + public String testCustomEvent() { + GlobalOpenTelemetry.get() + .getLogsBridge() + .get("my logger") + .logRecordBuilder() + .setAttribute(AttributeKey.stringKey("microsoft.custom_event.name"), "my_custom_event") + .setSeverity(Severity.INFO) + .emit(); + return "OK!"; + } } diff --git a/smoke-tests/apps/OpenTelemetryApiLogBridge/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/OpenTelemetryApiLogBridgeTest.java b/smoke-tests/apps/OpenTelemetryApiLogBridge/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/OpenTelemetryApiLogBridgeTest.java index 716b206a08a..21f6757e727 100644 --- a/smoke-tests/apps/OpenTelemetryApiLogBridge/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/OpenTelemetryApiLogBridgeTest.java +++ b/smoke-tests/apps/OpenTelemetryApiLogBridge/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/OpenTelemetryApiLogBridgeTest.java @@ -19,6 +19,7 @@ import com.microsoft.applicationinsights.smoketest.schemav2.Data; import com.microsoft.applicationinsights.smoketest.schemav2.Envelope; +import com.microsoft.applicationinsights.smoketest.schemav2.EventData; import com.microsoft.applicationinsights.smoketest.schemav2.ExceptionData; import com.microsoft.applicationinsights.smoketest.schemav2.RequestData; import java.util.List; @@ -60,6 +61,33 @@ void testCustomExceptionTypeAndMessage() throws Exception { .isEqualTo("This is an custom exception with custom exception type"); } + @Test + @TargetUri("/test-custom-event") + void testCustomEvent() throws Exception { + List rdList = testing.mockedIngestion.waitForItems("RequestData", 1); + Envelope rdEnvelope = rdList.get(0); + + RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData(); + assertThat(rd.getUrl()) + .matches("http://localhost:[0-9]+/OpenTelemetryApiLogBridge/test-custom-event"); + assertThat(rd.getResponseCode()).isEqualTo("200"); + assertThat(rd.getSuccess()).isTrue(); + assertThat(rd.getSource()).isNull(); + assertThat(rd.getProperties()).hasSize(1); + assertThat(rd.getProperties()).containsEntry("_MS.ProcessedByMetricExtractors", "True"); + + assertThat(rdEnvelope.getIKey()).isEqualTo("00000000-0000-0000-0000-0FEEDDADBEEF"); + assertThat(rdEnvelope.getTags()) + .hasEntrySatisfying("ai.internal.sdkVersion", v -> assertThat(v).startsWith("java:3.")); + + String operationId = rdEnvelope.getTags().get("ai.operation.id"); + List edList = + testing.mockedIngestion.waitForItemsInOperation("EventData", 1, operationId); + assertThat(edList.size()).isNotZero(); + EventData ed = (EventData) ((Data) edList.get(0).getData()).getBaseData(); + assertThat(ed.getName()).isEqualTo("my_custom_event"); + } + @Environment(TOMCAT_8_JAVA_8) static class Tomcat8Java8Test extends OpenTelemetryApiLogBridgeTest {}