From 792b6da159a5b7760cd5bd56f10f63533fcd8632 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Mon, 25 Nov 2024 09:25:05 +0200 Subject: [PATCH] Shade testing protobuf dependency (#12782) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- dependencyManagement/build.gradle.kts | 2 +- examples/distro/smoke-tests/build.gradle | 2 +- examples/extension/build.gradle | 2 +- settings.gradle.kts | 1 + .../smoketest/TelemetryRetriever.groovy | 4 +- testing-common/build.gradle.kts | 6 ++- .../common/AgentTestingExporterAccess.java | 53 ++++++++++--------- .../proto-shaded-for-testing/build.gradle.kts | 22 ++++++++ 8 files changed, 59 insertions(+), 33 deletions(-) create mode 100644 testing/proto-shaded-for-testing/build.gradle.kts diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index bedd9442eb6d..16f739ce2117 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -103,7 +103,7 @@ val DEPENDENCIES = listOf( "io.opentelemetry.contrib:opentelemetry-aws-xray-propagator:${otelContribVersion}", "io.opentelemetry.contrib:opentelemetry-gcp-resources:${otelContribVersion}", "io.opentelemetry.contrib:opentelemetry-baggage-processor:${otelContribVersion}", - "io.opentelemetry.proto:opentelemetry-proto:1.3.2-alpha", + "io.opentelemetry.proto:opentelemetry-proto:1.4.0-alpha", "io.opentelemetry:opentelemetry-extension-annotations:1.18.0", // deprecated, no longer part of bom "org.assertj:assertj-core:3.26.3", "org.awaitility:awaitility:4.2.2", diff --git a/examples/distro/smoke-tests/build.gradle b/examples/distro/smoke-tests/build.gradle index 38b3c46fb64e..d3c0de3b3f37 100644 --- a/examples/distro/smoke-tests/build.gradle +++ b/examples/distro/smoke-tests/build.gradle @@ -7,7 +7,7 @@ dependencies { testImplementation("com.fasterxml.jackson.core:jackson-databind:2.18.1") testImplementation("com.google.protobuf:protobuf-java-util:4.28.3") testImplementation("com.squareup.okhttp3:okhttp:4.12.0") - testImplementation("io.opentelemetry.proto:opentelemetry-proto:1.3.2-alpha") + testImplementation("io.opentelemetry.proto:opentelemetry-proto:1.4.0-alpha") testImplementation("io.opentelemetry:opentelemetry-api") testImplementation("ch.qos.logback:logback-classic:1.5.12") diff --git a/examples/extension/build.gradle b/examples/extension/build.gradle index dcf912010e7a..518f25432380 100644 --- a/examples/extension/build.gradle +++ b/examples/extension/build.gradle @@ -104,7 +104,7 @@ dependencies { testImplementation("com.google.protobuf:protobuf-java-util:4.28.3") testImplementation("com.squareup.okhttp3:okhttp:4.12.0") testImplementation("io.opentelemetry:opentelemetry-api") - testImplementation("io.opentelemetry.proto:opentelemetry-proto:1.3.2-alpha") + testImplementation("io.opentelemetry.proto:opentelemetry-proto:1.4.0-alpha") testImplementation("org.junit.jupiter:junit-jupiter-api:${versions.junit}") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${versions.junit}") diff --git a/settings.gradle.kts b/settings.gradle.kts index 418f2a101515..aa3dabeccf14 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -145,6 +145,7 @@ include(":dependencyManagement") include(":testing:agent-exporter") include(":testing:agent-for-testing") include(":testing:armeria-shaded-for-testing") +include(":testing:proto-shaded-for-testing") include(":testing-common") include(":testing-common:integration-tests") include(":testing-common:library-for-integration-tests") diff --git a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/TelemetryRetriever.groovy b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/TelemetryRetriever.groovy index 04529cda2f9c..40d2126626d2 100644 --- a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/TelemetryRetriever.groovy +++ b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/TelemetryRetriever.groovy @@ -6,7 +6,7 @@ package io.opentelemetry.smoketest import com.fasterxml.jackson.databind.ObjectMapper -import com.google.protobuf.GeneratedMessageV3 +import com.google.protobuf.GeneratedMessage import com.google.protobuf.util.JsonFormat import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest @@ -42,7 +42,7 @@ class TelemetryRetriever { return waitForTelemetry("get-logs", { ExportLogsServiceRequest.newBuilder() }) } - private Collection waitForTelemetry(String path, Supplier builderConstructor) { + private Collection waitForTelemetry(String path, Supplier builderConstructor) { def content = waitForContent(path) return OBJECT_MAPPER.readTree(content).collect { diff --git a/testing-common/build.gradle.kts b/testing-common/build.gradle.kts index d787b154ae0a..8d0088f73415 100644 --- a/testing-common/build.gradle.kts +++ b/testing-common/build.gradle.kts @@ -10,6 +10,9 @@ sourceSets { main { val armeriaShadedDeps = project(":testing:armeria-shaded-for-testing") output.dir(armeriaShadedDeps.file("build/extracted/shadow"), "builtBy" to ":testing:armeria-shaded-for-testing:extractShadowJar") + + val protoShadedDeps = project(":testing:proto-shaded-for-testing") + output.dir(protoShadedDeps.file("build/extracted/shadow"), "builtBy" to ":testing:proto-shaded-for-testing:extractShadowJar") } } @@ -47,13 +50,12 @@ dependencies { api("org.slf4j:slf4j-api") compileOnly(project(":testing:armeria-shaded-for-testing", configuration = "shadow")) + compileOnly(project(":testing:proto-shaded-for-testing", configuration = "shadow")) compileOnly(project(":javaagent-bootstrap")) compileOnly("com.google.auto.value:auto-value-annotations") annotationProcessor("com.google.auto.value:auto-value") - implementation("io.opentelemetry.proto:opentelemetry-proto") - implementation("net.bytebuddy:byte-buddy") implementation("ch.qos.logback:logback-classic") implementation("org.slf4j:log4j-over-slf4j") diff --git a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java index 7bc9e8e61d97..ffe8996ae0e8 100644 --- a/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java +++ b/testing-common/src/main/java/io/opentelemetry/javaagent/testing/common/AgentTestingExporterAccess.java @@ -12,7 +12,6 @@ import static io.opentelemetry.api.common.AttributeKey.stringArrayKey; import static java.util.stream.Collectors.toList; -import com.google.protobuf.InvalidProtocolBufferException; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.api.common.Value; @@ -23,30 +22,6 @@ import io.opentelemetry.api.trace.TraceFlags; import io.opentelemetry.api.trace.TraceState; import io.opentelemetry.api.trace.TraceStateBuilder; -import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest; -import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest; -import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest; -import io.opentelemetry.proto.common.v1.AnyValue; -import io.opentelemetry.proto.common.v1.ArrayValue; -import io.opentelemetry.proto.common.v1.InstrumentationScope; -import io.opentelemetry.proto.common.v1.KeyValue; -import io.opentelemetry.proto.common.v1.KeyValueList; -import io.opentelemetry.proto.logs.v1.LogRecord; -import io.opentelemetry.proto.logs.v1.ResourceLogs; -import io.opentelemetry.proto.logs.v1.ScopeLogs; -import io.opentelemetry.proto.logs.v1.SeverityNumber; -import io.opentelemetry.proto.metrics.v1.HistogramDataPoint; -import io.opentelemetry.proto.metrics.v1.Metric; -import io.opentelemetry.proto.metrics.v1.NumberDataPoint; -import io.opentelemetry.proto.metrics.v1.ResourceMetrics; -import io.opentelemetry.proto.metrics.v1.ScopeMetrics; -import io.opentelemetry.proto.metrics.v1.Sum; -import io.opentelemetry.proto.metrics.v1.SummaryDataPoint; -import io.opentelemetry.proto.resource.v1.Resource; -import io.opentelemetry.proto.trace.v1.ResourceSpans; -import io.opentelemetry.proto.trace.v1.ScopeSpans; -import io.opentelemetry.proto.trace.v1.Span; -import io.opentelemetry.proto.trace.v1.Status; import io.opentelemetry.sdk.common.InstrumentationScopeInfo; import io.opentelemetry.sdk.logs.data.LogRecordData; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; @@ -72,6 +47,31 @@ import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; +import io.opentelemetry.testing.internal.proto.collector.logs.v1.ExportLogsServiceRequest; +import io.opentelemetry.testing.internal.proto.collector.metrics.v1.ExportMetricsServiceRequest; +import io.opentelemetry.testing.internal.proto.collector.trace.v1.ExportTraceServiceRequest; +import io.opentelemetry.testing.internal.proto.common.v1.AnyValue; +import io.opentelemetry.testing.internal.proto.common.v1.ArrayValue; +import io.opentelemetry.testing.internal.proto.common.v1.InstrumentationScope; +import io.opentelemetry.testing.internal.proto.common.v1.KeyValue; +import io.opentelemetry.testing.internal.proto.common.v1.KeyValueList; +import io.opentelemetry.testing.internal.proto.logs.v1.LogRecord; +import io.opentelemetry.testing.internal.proto.logs.v1.ResourceLogs; +import io.opentelemetry.testing.internal.proto.logs.v1.ScopeLogs; +import io.opentelemetry.testing.internal.proto.logs.v1.SeverityNumber; +import io.opentelemetry.testing.internal.proto.metrics.v1.HistogramDataPoint; +import io.opentelemetry.testing.internal.proto.metrics.v1.Metric; +import io.opentelemetry.testing.internal.proto.metrics.v1.NumberDataPoint; +import io.opentelemetry.testing.internal.proto.metrics.v1.ResourceMetrics; +import io.opentelemetry.testing.internal.proto.metrics.v1.ScopeMetrics; +import io.opentelemetry.testing.internal.proto.metrics.v1.Sum; +import io.opentelemetry.testing.internal.proto.metrics.v1.SummaryDataPoint; +import io.opentelemetry.testing.internal.proto.resource.v1.Resource; +import io.opentelemetry.testing.internal.proto.trace.v1.ResourceSpans; +import io.opentelemetry.testing.internal.proto.trace.v1.ScopeSpans; +import io.opentelemetry.testing.internal.proto.trace.v1.Span; +import io.opentelemetry.testing.internal.proto.trace.v1.Status; +import io.opentelemetry.testing.internal.protobuf.InvalidProtocolBufferException; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; @@ -568,7 +568,8 @@ private static List getValues(SummaryDataPoint point) { } private static AggregationTemporality getTemporality( - io.opentelemetry.proto.metrics.v1.AggregationTemporality aggregationTemporality) { + io.opentelemetry.testing.internal.proto.metrics.v1.AggregationTemporality + aggregationTemporality) { switch (aggregationTemporality) { case AGGREGATION_TEMPORALITY_CUMULATIVE: return AggregationTemporality.CUMULATIVE; diff --git a/testing/proto-shaded-for-testing/build.gradle.kts b/testing/proto-shaded-for-testing/build.gradle.kts new file mode 100644 index 000000000000..d35dcb3fffe0 --- /dev/null +++ b/testing/proto-shaded-for-testing/build.gradle.kts @@ -0,0 +1,22 @@ +plugins { + id("com.gradleup.shadow") + id("otel.java-conventions") +} + +dependencies { + implementation("io.opentelemetry.proto:opentelemetry-proto") +} + +tasks { + shadowJar { + relocate("io.opentelemetry.proto", "io.opentelemetry.testing.internal.proto") + relocate("com.google.protobuf", "io.opentelemetry.testing.internal.protobuf") + } + + val extractShadowJar by registering(Copy::class) { + dependsOn(shadowJar) + from(zipTree(shadowJar.get().archiveFile)) + into("build/extracted/shadow") + includeEmptyDirs = false + } +}