diff --git a/.github/workflows/build-common.yml b/.github/workflows/build-common.yml index 20ea2f153..f467d08d8 100644 --- a/.github/workflows/build-common.yml +++ b/.github/workflows/build-common.yml @@ -111,7 +111,7 @@ jobs: - name: Test run: > - ./gradlew test + ./gradlew check -x spotlessCheck "-PtestJavaVersion=${{ matrix.test-java-version }}" "-Porg.gradle.java.installations.paths=${{ steps.setup-java-test.outputs.path }}" "-Porg.gradle.java.installations.auto-download=false" @@ -122,36 +122,6 @@ jobs: if: ${{ !cancelled() && hashFiles('build-scan.txt') != '' }} run: cat build-scan.txt - integration-test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - - name: Set up JDK for running Gradle - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 - with: - distribution: temurin - java-version: 17 - - - name: Set up Gradle - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 - with: - cache-read-only: ${{ inputs.cache-read-only }} - - - name: Integration test - run: ./gradlew integrationTest "-PmaxTestRetries=${{ inputs.max-test-retries }}" ${{ inputs.no-build-cache && '--no-build-cache' || '' }} - - - name: Build scan - if: ${{ !cancelled() && hashFiles('build-scan.txt') != '' }} - run: cat build-scan.txt - - - name: Save integration test results - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - if: always() - with: - name: integration-test-results - path: jmx-metrics/build/reports/tests/integrationTest - markdown-lint-check: uses: ./.github/workflows/reusable-markdown-lint.yml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 04a50c300..d6e0a0a36 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,12 +31,6 @@ To run the tests: ./gradlew test ``` -Some modules include integration tests that can be run with: - -```bash -./gradlew integrationTest -``` - ## Snapshot Builds Snapshot builds of the `main` branch are available from the Sonatype snapshot repository at: diff --git a/aws-xray/src/awsTest/java/io/opentelemetry/contrib/aws/xray/AwsXrayRemoteSamplerIntegrationTest.java b/aws-xray/src/awsTest/java/io/opentelemetry/contrib/aws/xray/AwsXrayRemoteSamplerIntegrationTest.java index fe281e3e2..dcc0e9494 100644 --- a/aws-xray/src/awsTest/java/io/opentelemetry/contrib/aws/xray/AwsXrayRemoteSamplerIntegrationTest.java +++ b/aws-xray/src/awsTest/java/io/opentelemetry/contrib/aws/xray/AwsXrayRemoteSamplerIntegrationTest.java @@ -16,13 +16,13 @@ import java.time.Duration; import java.util.Collections; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIf; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; @@ -31,9 +31,13 @@ // to update sampling rules and assert rough ratios of sampling decisions. In the meantime, it // expects you to update the rules through the dashboard to see the effect on the sampling decisions // that are printed. -@Testcontainers(disabledWithoutDocker = true) +@EnabledIf("hasAwsCredentials") class AwsXrayRemoteSamplerIntegrationTest { + static boolean hasAwsCredentials() { + return System.getenv("AWS_ACCESS_KEY_ID") != null; + } + private static final Logger logger = LoggerFactory.getLogger(AwsXrayRemoteSamplerIntegrationTest.class); diff --git a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts index ffd6f2bf0..7c29ab9e9 100644 --- a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts @@ -173,6 +173,12 @@ testing { } } +tasks { + check { + dependsOn(testing.suites) + } +} + fun isJavaVersionAllowed(version: JavaVersion): Boolean { if (otelJava.minJavaVersionSupported.get() > version) { return false diff --git a/ibm-mq-metrics/build.gradle.kts b/ibm-mq-metrics/build.gradle.kts index 31e191841..7e489bd53 100644 --- a/ibm-mq-metrics/build.gradle.kts +++ b/ibm-mq-metrics/build.gradle.kts @@ -50,7 +50,11 @@ testing { targets { all { testTask.configure { - shouldRunAfter(tasks.test) + // Jakarta JMS requires Java 11+ + val testJavaVersion: String? by project + if (testJavaVersion == "8") { + enabled = false + } } } } diff --git a/jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/target_systems/SolrIntegrationTest.java b/jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/target_systems/SolrIntegrationTest.java index 78fc82acd..d851a679d 100644 --- a/jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/target_systems/SolrIntegrationTest.java +++ b/jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/target_systems/SolrIntegrationTest.java @@ -11,11 +11,16 @@ import io.opentelemetry.proto.metrics.v1.Metric; import java.time.Duration; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledOnJre; +import org.junit.jupiter.api.condition.JRE; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.Network; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.junit.jupiter.Container; +// possible workaround on Java 8: +// https://stackoverflow.com/questions/35466461/how-to-connect-with-jmx-from-host-to-docker-container-in-docker-machine +@DisabledOnJre(JRE.JAVA_8) class SolrIntegrationTest extends AbstractIntegrationTest { SolrIntegrationTest() { diff --git a/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/JmxConnectionTest.java b/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/JmxConnectionTest.java index 00d7fc124..c55f70669 100644 --- a/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/JmxConnectionTest.java +++ b/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/JmxConnectionTest.java @@ -23,12 +23,14 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.Network; import org.testcontainers.containers.output.Slf4jLogConsumer; +import org.testcontainers.junit.jupiter.Testcontainers; /** * Tests all supported ways to connect to remote JMX interface. This indirectly tests * JmxConnectionBuilder and relies on containers to minimize the JMX/RMI network complications which * are not NAT-friendly. */ +@Testcontainers(disabledWithoutDocker = true) class JmxConnectionTest { // OTLP endpoint is not used in test mode, but still has to be provided diff --git a/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/SolrIntegrationTest.java b/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/SolrIntegrationTest.java index 9cba55701..f077e36f5 100644 --- a/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/SolrIntegrationTest.java +++ b/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/SolrIntegrationTest.java @@ -14,10 +14,15 @@ import io.opentelemetry.contrib.jmxscraper.assertions.AttributeMatcherGroup; import java.nio.file.Path; import java.time.Duration; +import org.junit.jupiter.api.condition.DisabledOnJre; +import org.junit.jupiter.api.condition.JRE; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.Network; import org.testcontainers.containers.wait.strategy.Wait; +// possible workaround on Java 8: +// https://stackoverflow.com/questions/35466461/how-to-connect-with-jmx-from-host-to-docker-container-in-docker-machine +@DisabledOnJre(JRE.JAVA_8) class SolrIntegrationTest extends TargetSystemIntegrationTest { @Override diff --git a/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/TargetSystemIntegrationTest.java b/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/TargetSystemIntegrationTest.java index e74e93180..0356affdc 100644 --- a/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/TargetSystemIntegrationTest.java +++ b/jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/TargetSystemIntegrationTest.java @@ -7,6 +7,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; +import static org.testcontainers.Testcontainers.exposeHostPorts; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; @@ -35,11 +36,12 @@ import org.junit.jupiter.api.io.TempDir; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testcontainers.Testcontainers; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.Network; import org.testcontainers.containers.output.Slf4jLogConsumer; +import org.testcontainers.junit.jupiter.Testcontainers; +@Testcontainers(disabledWithoutDocker = true) public abstract class TargetSystemIntegrationTest { private static final Logger logger = LoggerFactory.getLogger(TargetSystemIntegrationTest.class); private static final Logger targetSystemLogger = LoggerFactory.getLogger("TargetSystemContainer"); @@ -72,7 +74,7 @@ static void beforeAll() { network = Network.newNetwork(); otlpServer = new OtlpGrpcServer(); otlpServer.start(); - Testcontainers.exposeHostPorts(otlpServer.httpPort()); + exposeHostPorts(otlpServer.httpPort()); otlpEndpoint = "http://" + OTLP_HOST + ":" + otlpServer.httpPort(); } diff --git a/runtime-attach/runtime-attach/build.gradle.kts b/runtime-attach/runtime-attach/build.gradle.kts index 27927a7f0..b0bc63065 100644 --- a/runtime-attach/runtime-attach/build.gradle.kts +++ b/runtime-attach/runtime-attach/build.gradle.kts @@ -59,9 +59,4 @@ tasks { excludeTestsMatching("AgentDisabledBySystemPropertyTest") } } - - check { - dependsOn(testAgentDisabledByEnvironmentVariable) - dependsOn(testAgentDisabledBySystemProperty) - } }