Browse Source

Enable indy for azure tests (#9853)

Lauri Tulmin 1 year ago
parent
commit
17c5a76590

+ 23 - 1
instrumentation/azure-core/azure-core-1.14/javaagent/build.gradle.kts

@@ -29,6 +29,28 @@ dependencies {
   // Ensure no cross interference
   testInstrumentation(project(":instrumentation:azure-core:azure-core-1.19:javaagent"))
   testInstrumentation(project(":instrumentation:azure-core:azure-core-1.36:javaagent"))
+}
+
+val latestDepTest = findProperty("testLatestDeps") as Boolean
+
+testing {
+  suites {
+    // using a test suite to ensure that classes from library-instrumentation-shaded that were
+    // extracted to the output directory are not available during tests
+    val testAzure by registering(JvmTestSuite::class) {
+      dependencies {
+        if (latestDepTest) {
+          implementation("com.azure:azure-core:1.18.0") // see azure-core-1.19 module
+        } else {
+          implementation("com.azure:azure-core:1.14.0")
+        }
+      }
+    }
+  }
+}
 
-  latestDepTestLibrary("com.azure:azure-core:1.18.+") // see azure-core-1.19 module
+tasks {
+  check {
+    dependsOn(testing.suites)
+  }
 }

+ 14 - 3
instrumentation/azure-core/azure-core-1.14/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkInstrumentationModule.java

@@ -15,12 +15,16 @@ import io.opentelemetry.javaagent.extension.instrumentation.HelperResourceBuilde
 import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.injection.ClassInjector;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.injection.InjectionMode;
 import java.util.List;
 import net.bytebuddy.description.type.TypeDescription;
 import net.bytebuddy.matcher.ElementMatcher;
 
 @AutoService(InstrumentationModule.class)
-public class AzureSdkInstrumentationModule extends InstrumentationModule {
+public class AzureSdkInstrumentationModule extends InstrumentationModule
+    implements ExperimentalInstrumentationModule {
   public AzureSdkInstrumentationModule() {
     super("azure-core", "azure-core-1.14");
   }
@@ -36,8 +40,15 @@ public class AzureSdkInstrumentationModule extends InstrumentationModule {
   }
 
   @Override
-  public boolean isIndyModule() {
-    return false;
+  public void injectClasses(ClassInjector injector) {
+    injector
+        .proxyBuilder(
+            "io.opentelemetry.javaagent.instrumentation.azurecore.v1_14.shaded.com.azure.core.tracing.opentelemetry.OpenTelemetryHttpPolicy")
+        .inject(InjectionMode.CLASS_ONLY);
+    injector
+        .proxyBuilder(
+            "io.opentelemetry.javaagent.instrumentation.azurecore.v1_14.shaded.com.azure.core.tracing.opentelemetry.OpenTelemetryTracer")
+        .inject(InjectionMode.CLASS_ONLY);
   }
 
   @Override

+ 2 - 0
instrumentation/azure-core/azure-core-1.14/javaagent/src/test/java/AzureSdkTest.java → instrumentation/azure-core/azure-core-1.14/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_14/AzureSdkTest.java

@@ -3,6 +3,8 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
+package io.opentelemetry.javaagent.instrumentation.azurecore.v1_14;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 import com.azure.core.http.policy.HttpPipelinePolicy;

+ 23 - 1
instrumentation/azure-core/azure-core-1.19/javaagent/build.gradle.kts

@@ -29,6 +29,28 @@ dependencies {
   // Ensure no cross interference
   testInstrumentation(project(":instrumentation:azure-core:azure-core-1.14:javaagent"))
   testInstrumentation(project(":instrumentation:azure-core:azure-core-1.36:javaagent"))
+}
+
+val latestDepTest = findProperty("testLatestDeps") as Boolean
+
+testing {
+  suites {
+    // using a test suite to ensure that classes from library-instrumentation-shaded that were
+    // extracted to the output directory are not available during tests
+    val testAzure by registering(JvmTestSuite::class) {
+      dependencies {
+        if (latestDepTest) {
+          implementation("com.azure:azure-core:1.35.0")
+        } else {
+          implementation("com.azure:azure-core:1.19.0")
+        }
+      }
+    }
+  }
+}
 
-  latestDepTestLibrary("com.azure:azure-core:1.35.0")
+tasks {
+  check {
+    dependsOn(testing.suites)
+  }
 }

+ 14 - 3
instrumentation/azure-core/azure-core-1.19/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkInstrumentationModule.java

@@ -15,12 +15,16 @@ import io.opentelemetry.javaagent.extension.instrumentation.HelperResourceBuilde
 import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.injection.ClassInjector;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.injection.InjectionMode;
 import java.util.List;
 import net.bytebuddy.description.type.TypeDescription;
 import net.bytebuddy.matcher.ElementMatcher;
 
 @AutoService(InstrumentationModule.class)
-public class AzureSdkInstrumentationModule extends InstrumentationModule {
+public class AzureSdkInstrumentationModule extends InstrumentationModule
+    implements ExperimentalInstrumentationModule {
   public AzureSdkInstrumentationModule() {
     super("azure-core", "azure-core-1.19");
   }
@@ -36,8 +40,15 @@ public class AzureSdkInstrumentationModule extends InstrumentationModule {
   }
 
   @Override
-  public boolean isIndyModule() {
-    return false;
+  public void injectClasses(ClassInjector injector) {
+    injector
+        .proxyBuilder(
+            "io.opentelemetry.javaagent.instrumentation.azurecore.v1_19.shaded.com.azure.core.tracing.opentelemetry.OpenTelemetryHttpPolicy")
+        .inject(InjectionMode.CLASS_ONLY);
+    injector
+        .proxyBuilder(
+            "io.opentelemetry.javaagent.instrumentation.azurecore.v1_19.shaded.com.azure.core.tracing.opentelemetry.OpenTelemetryTracer")
+        .inject(InjectionMode.CLASS_ONLY);
   }
 
   @Override

+ 2 - 0
instrumentation/azure-core/azure-core-1.19/javaagent/src/test/java/AzureSdkTest.java → instrumentation/azure-core/azure-core-1.19/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_19/AzureSdkTest.java

@@ -3,6 +3,8 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
+package io.opentelemetry.javaagent.instrumentation.azurecore.v1_19;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 import com.azure.core.http.policy.HttpPipelinePolicy;

+ 23 - 1
instrumentation/azure-core/azure-core-1.36/javaagent/build.gradle.kts

@@ -29,6 +29,28 @@ dependencies {
   // Ensure no cross interference
   testInstrumentation(project(":instrumentation:azure-core:azure-core-1.14:javaagent"))
   testInstrumentation(project(":instrumentation:azure-core:azure-core-1.19:javaagent"))
+}
+
+val latestDepTest = findProperty("testLatestDeps") as Boolean
+
+testing {
+  suites {
+    // using a test suite to ensure that classes from library-instrumentation-shaded that were
+    // extracted to the output directory are not available during tests
+    val testAzure by registering(JvmTestSuite::class) {
+      dependencies {
+        if (latestDepTest) {
+          implementation("com.azure:azure-core:+")
+        } else {
+          implementation("com.azure:azure-core:1.36.0")
+        }
+      }
+    }
+  }
+}
 
-  latestDepTestLibrary("com.azure:azure-core:1.36.0")
+tasks {
+  check {
+    dependsOn(testing.suites)
+  }
 }

+ 14 - 3
instrumentation/azure-core/azure-core-1.36/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkInstrumentationModule.java

@@ -15,12 +15,16 @@ import io.opentelemetry.javaagent.extension.instrumentation.HelperResourceBuilde
 import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.injection.ClassInjector;
+import io.opentelemetry.javaagent.extension.instrumentation.internal.injection.InjectionMode;
 import java.util.List;
 import net.bytebuddy.description.type.TypeDescription;
 import net.bytebuddy.matcher.ElementMatcher;
 
 @AutoService(InstrumentationModule.class)
-public class AzureSdkInstrumentationModule extends InstrumentationModule {
+public class AzureSdkInstrumentationModule extends InstrumentationModule
+    implements ExperimentalInstrumentationModule {
   public AzureSdkInstrumentationModule() {
     super("azure-core", "azure-core-1.36");
   }
@@ -38,8 +42,15 @@ public class AzureSdkInstrumentationModule extends InstrumentationModule {
   }
 
   @Override
-  public boolean isIndyModule() {
-    return false;
+  public void injectClasses(ClassInjector injector) {
+    injector
+        .proxyBuilder(
+            "io.opentelemetry.javaagent.instrumentation.azurecore.v1_36.shaded.com.azure.core.tracing.opentelemetry.OpenTelemetryTracer")
+        .inject(InjectionMode.CLASS_ONLY);
+    injector
+        .proxyBuilder(
+            "io.opentelemetry.javaagent.instrumentation.azurecore.v1_36.shaded.com.azure.core.tracing.opentelemetry.OpenTelemetryTracerProvider")
+        .inject(InjectionMode.CLASS_ONLY);
   }
 
   @Override

+ 2 - 0
instrumentation/azure-core/azure-core-1.36/javaagent/src/test/java/AzureSdkTest.java → instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTest.java

@@ -3,6 +3,8 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
+package io.opentelemetry.javaagent.instrumentation.azurecore.v1_36;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 import com.azure.core.util.Context;

+ 2 - 0
instrumentation/azure-core/azure-core-1.36/javaagent/src/test/java/AzureSdkTestOld.java → instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTestOld.java

@@ -3,6 +3,8 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
+package io.opentelemetry.javaagent.instrumentation.azurecore.v1_36;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 import com.azure.core.util.Context;