|
5 | 5 |
|
6 | 6 | package io.opentelemetry.instrumentation.awslambdacore.v1_0; |
7 | 7 |
|
| 8 | +import static io.opentelemetry.instrumentation.api.internal.SemconvExceptionSignal.emitExceptionAsLogs; |
| 9 | +import static io.opentelemetry.instrumentation.api.internal.SemconvExceptionSignal.emitExceptionAsSpanEvents; |
| 10 | +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; |
8 | 11 | import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; |
| 12 | +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; |
| 13 | +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_MESSAGE; |
| 14 | +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_STACKTRACE; |
| 15 | +import static io.opentelemetry.semconv.ExceptionAttributes.EXCEPTION_TYPE; |
9 | 16 | import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_ACCOUNT_ID; |
10 | 17 | import static io.opentelemetry.semconv.incubating.CloudIncubatingAttributes.CLOUD_RESOURCE_ID; |
11 | 18 | import static io.opentelemetry.semconv.incubating.FaasIncubatingAttributes.FAAS_INVOCATION_ID; |
12 | 19 | import static java.nio.charset.StandardCharsets.UTF_8; |
13 | | -import static org.assertj.core.api.Assertions.assertThat; |
14 | 20 | import static org.assertj.core.api.Assertions.catchThrowable; |
15 | 21 | import static org.mockito.Mockito.when; |
16 | 22 |
|
|
19 | 25 | import com.fasterxml.jackson.core.JsonFactory; |
20 | 26 | import com.fasterxml.jackson.core.JsonParser; |
21 | 27 | import com.fasterxml.jackson.core.JsonToken; |
| 28 | +import io.opentelemetry.api.logs.Severity; |
22 | 29 | import io.opentelemetry.api.trace.SpanKind; |
23 | 30 | import io.opentelemetry.instrumentation.awslambdacore.v1_0.internal.WrappedLambda; |
24 | 31 | import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; |
@@ -126,13 +133,25 @@ void handlerTracedWithException() { |
126 | 133 | .hasTraceId("4fd0b6131f19f39af59518d127b0cafe") |
127 | 134 | .hasParentSpanId("0000000000000456") |
128 | 135 | .hasStatus(StatusData.error()) |
129 | | - .hasException(thrown) |
| 136 | + .hasException(emitExceptionAsSpanEvents() ? thrown : null) |
130 | 137 | .hasAttributesSatisfyingExactly( |
131 | 138 | equalTo( |
132 | 139 | CLOUD_RESOURCE_ID, |
133 | 140 | "arn:aws:lambda:us-east-1:123456789:function:test"), |
134 | 141 | equalTo(CLOUD_ACCOUNT_ID, "123456789"), |
135 | 142 | equalTo(FAAS_INVOCATION_ID, "1-22-333")))); |
| 143 | + |
| 144 | + if (emitExceptionAsLogs()) { |
| 145 | + testing.waitAndAssertLogRecords( |
| 146 | + logRecord -> |
| 147 | + logRecord |
| 148 | + .hasSeverity(Severity.ERROR) |
| 149 | + .hasEventName("faas.invocation.exception") |
| 150 | + .hasAttributesSatisfyingExactly( |
| 151 | + equalTo(EXCEPTION_TYPE, thrown.getClass().getName()), |
| 152 | + equalTo(EXCEPTION_MESSAGE, thrown.getMessage()), |
| 153 | + satisfies(EXCEPTION_STACKTRACE, val -> val.isNotNull()))); |
| 154 | + } |
136 | 155 | } |
137 | 156 |
|
138 | 157 | public static class TestRequestHandler implements RequestStreamHandler { |
|
0 commit comments