From 6fbe4949347797dd1af76af6a2a7ca0886615795 Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Tue, 23 Jan 2018 14:56:40 -0500 Subject: [PATCH 1/2] Exclude tests that are Java 9 incompatible. --- dd-java-agent-ittests/dd-java-agent-ittests.gradle | 4 ++-- .../datastax-cassandra-3.2/datastax-cassandra-3.2.gradle | 4 ++-- .../src/test/groovy/CassandraClientTest.groovy | 2 +- dd-java-agent/instrumentation/okhttp-3/okhttp-3.gradle | 4 ++-- .../instrumentation/servlet3/FilterChain3Instrumentation.java | 2 +- .../instrumentation/servlet3/HttpServlet3Instrumentation.java | 2 +- dd-java-agent/tooling/tooling.gradle | 1 + dd-trace-ot/dd-trace-ot.gradle | 4 ++-- gradle/dependencies.gradle | 4 ++-- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/dd-java-agent-ittests/dd-java-agent-ittests.gradle b/dd-java-agent-ittests/dd-java-agent-ittests.gradle index feb5382939..023475f030 100644 --- a/dd-java-agent-ittests/dd-java-agent-ittests.gradle +++ b/dd-java-agent-ittests/dd-java-agent-ittests.gradle @@ -5,11 +5,11 @@ description = 'dd-java-agent-ittests' evaluationDependsOn(':dd-java-agent:tooling') compileTestJava.dependsOn tasks.getByPath(':dd-java-agent:tooling:testClasses') -if (!JavaVersion.current().isJava8Compatible()) { +if (JavaVersion.current() != JavaVersion.VERSION_1_8) { sourceSets { test { groovy { - // These classes use Ratpack which requires Java 8. + // These classes use Ratpack which requires Java 8. (Currently also incompatible with Java 9.) exclude '**/TestHttpServer.groovy', '**/ApacheHttpClientTest.groovy' } } diff --git a/dd-java-agent/instrumentation/datastax-cassandra-3.2/datastax-cassandra-3.2.gradle b/dd-java-agent/instrumentation/datastax-cassandra-3.2/datastax-cassandra-3.2.gradle index f935b15843..3a99e7ab03 100644 --- a/dd-java-agent/instrumentation/datastax-cassandra-3.2/datastax-cassandra-3.2.gradle +++ b/dd-java-agent/instrumentation/datastax-cassandra-3.2/datastax-cassandra-3.2.gradle @@ -31,11 +31,11 @@ versionScan { apply from: "${rootDir}/gradle/java.gradle" -if (!JavaVersion.current().isJava8Compatible()) { +if (JavaVersion.current() != JavaVersion.VERSION_1_8) { sourceSets { test { groovy { - // These classes use Cassandra 3 which requires Java 8. + // These classes use Cassandra 3 which requires Java 8. (Currently incompatible with Java 9.) exclude '**/CassandraClientTest.groovy' } } diff --git a/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy b/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy index 178046d80d..fb44837d06 100644 --- a/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy +++ b/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy @@ -9,7 +9,7 @@ import org.cassandraunit.utils.EmbeddedCassandraServerHelper class CassandraClientTest extends AgentTestRunner { def setupSpec() { - EmbeddedCassandraServerHelper.startEmbeddedCassandra(40000L) + EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.DEFAULT_CASSANDRA_YML_FILE, "build/tmp/embeddedCassandra") } def cleanupSpec() { diff --git a/dd-java-agent/instrumentation/okhttp-3/okhttp-3.gradle b/dd-java-agent/instrumentation/okhttp-3/okhttp-3.gradle index 6c986bb184..27f81db15f 100644 --- a/dd-java-agent/instrumentation/okhttp-3/okhttp-3.gradle +++ b/dd-java-agent/instrumentation/okhttp-3/okhttp-3.gradle @@ -14,11 +14,11 @@ versionScan { apply from: "${rootDir}/gradle/java.gradle" -if (!JavaVersion.current().isJava8Compatible()) { +if (JavaVersion.current() != JavaVersion.VERSION_1_8) { sourceSets { test { groovy { - // These classes use Ratpack which requires Java 8. + // These classes use Ratpack which requires Java 8. (Currently also incompatible with Java 9.) exclude '**/OkHttp3Test.groovy' } } diff --git a/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/FilterChain3Instrumentation.java b/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/FilterChain3Instrumentation.java index 9335daf4f2..136bab682b 100644 --- a/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/FilterChain3Instrumentation.java +++ b/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/FilterChain3Instrumentation.java @@ -50,7 +50,7 @@ public final class FilterChain3Instrumentation implements Instrumenter { "io.opentracing.contrib.web.servlet.filter.ServletFilterSpanDecorator$1", "io.opentracing.contrib.web.servlet.filter.TracingFilter", "io.opentracing.contrib.web.servlet.filter.TracingFilter$1", - getClass().getName() + "$FilterChain3Advice$TagSettingAsyncListener")) + FilterChain3Advice.class.getName() + "$TagSettingAsyncListener")) .transform( DDAdvice.create() .advice( diff --git a/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/HttpServlet3Instrumentation.java b/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/HttpServlet3Instrumentation.java index a3bddfbe8f..2038d464e5 100644 --- a/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/HttpServlet3Instrumentation.java +++ b/dd-java-agent/instrumentation/servlet-3/src/main/java/datadog/trace/instrumentation/servlet3/HttpServlet3Instrumentation.java @@ -48,7 +48,7 @@ public final class HttpServlet3Instrumentation implements Instrumenter { "io.opentracing.contrib.web.servlet.filter.ServletFilterSpanDecorator$1", "io.opentracing.contrib.web.servlet.filter.TracingFilter", "io.opentracing.contrib.web.servlet.filter.TracingFilter$1", - getClass().getName() + "$HttpServlet3Advice$TagSettingAsyncListener")) + HttpServlet3Advice.class.getName() + "$TagSettingAsyncListener")) .transform( DDAdvice.create() .advice( diff --git a/dd-java-agent/tooling/tooling.gradle b/dd-java-agent/tooling/tooling.gradle index 54485215bc..d21d4d4bd2 100644 --- a/dd-java-agent/tooling/tooling.gradle +++ b/dd-java-agent/tooling/tooling.gradle @@ -2,6 +2,7 @@ apply from: "${rootDir}/gradle/java.gradle" dependencies { compile deps.bytebuddy + compile deps.bytebuddyagent compile deps.slf4j testCompile deps.opentracing diff --git a/dd-trace-ot/dd-trace-ot.gradle b/dd-trace-ot/dd-trace-ot.gradle index 63ad48051f..137e3ce36f 100644 --- a/dd-trace-ot/dd-trace-ot.gradle +++ b/dd-trace-ot/dd-trace-ot.gradle @@ -17,11 +17,11 @@ whitelistedInstructionClasses += whitelistedBranchClasses += [ 'datadog.trace.common.sampling.PrioritySampling' ] -if (!JavaVersion.current().isJava8Compatible()) { +if (JavaVersion.current() != JavaVersion.VERSION_1_8) { sourceSets { test { groovy { - // These classes use Ratpack which requires Java 8. + // These classes use Ratpack which requires Java 8. (Currently also incompatible with Java 9.) exclude 'datadog/trace/api/writer/DDApiTest.groovy' } } diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 7840dcad8c..d90e37ea9f 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -35,9 +35,9 @@ ext { ], bytebuddy : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy', version: "${version.bytebuddy}"), autoservice: [ - dependencies.create(group: 'com.google.auto.service', name: 'auto-service', version: '1.0-rc4'), + dependencies.create(group: 'com.google.auto.service', name: 'auto-service', version: '1.0-rc3'), dependencies.create(group: 'com.google.auto', name: 'auto-common', version: '0.3'), - dependencies.create(group: 'com.google.guava', name: 'guava', version: '19.0'), + dependencies.create(group: 'com.google.guava', name: 'guava', version: "${version.guava}"), ], // Testing From ce9e5dd3de32b5208526811ea64941ad0cca3055 Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Tue, 23 Jan 2018 15:35:12 -0500 Subject: [PATCH 2/2] Reenable java 7 and 9 CI Also try to make it so builds can be rerun independently by not using the workspace. --- .circleci/config.yml | 138 ++++++++---------- .../test/groovy/CassandraClientTest.groovy | 2 +- 2 files changed, 63 insertions(+), 77 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 24cb8b326d..db5d679e82 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,14 +6,33 @@ defaults: &defaults docker: - image: circleci/openjdk:8 +cache_keys: &cache_keys + # Reset the cache approx every release + keys: + - dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }} + - dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }} + - dd-trace-java-{{ checksum "dd-trace-java.gradle" }} + - dd-trace-java + test_job: &test_job steps: - - attach_workspace: - at: . + - checkout + + - restore_cache: + <<: *cache_keys + + - run: + name: Fix EC parameters error # (ref https://github.com/travis-ci/travis-ci/issues/8503) + command: | + if [ "${CIRCLE_JOB}" == "test_7" ]; then + wget "https://downloads.bouncycastle.org/java/bcprov-ext-jdk15on-158.jar" -O "${JAVA_HOME}"/jre/lib/ext/bcprov-ext-jdk15on-158.jar && \ + perl -pi.bak -e 's/^(security\.provider\.)([0-9]+)/$1.($2+1)/ge' /etc/java-7-openjdk/security/java.security && \ + echo "security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider" | tee -a /etc/java-7-openjdk/security/java.security + fi - run: name: Run Tests - command: GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xmx2G -Xms512M" ./gradlew -g=gradle-home test --parallel --stacktrace --no-daemon --max-workers=3 + command: GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xmx2G -Xms512M" ./gradlew test --parallel --stacktrace --no-daemon --max-workers=3 - run: name: Save Artifacts to (project-root)/build @@ -26,10 +45,6 @@ test_job: &test_job - store_artifacts: path: build - - persist_to_workspace: - root: . - paths: . - jobs: build: <<: *defaults @@ -40,57 +55,22 @@ jobs: - checkout - restore_cache: - # Reset the cache approx every release - keys: - - dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }}-verified - - dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }} - - dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }} - - dd-trace-java-{{ checksum "dd-trace-java.gradle" }} - - dd-trace-java + <<: *cache_keys - run: name: Build Project - command: GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xmx2G -Xms512M" ./gradlew -g=gradle-home clean check -x test --stacktrace --no-daemon + command: GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xmx2G -Xms512M" ./gradlew clean check -x test --stacktrace --no-daemon - save_cache: key: dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }} - paths: gradle-home + paths: ~/.gradle background: true - - persist_to_workspace: - root: . - paths: . - -# test_7: -# <<: *defaults -# docker: -# - image: openjdk:7-jdk -# -# steps: -# - attach_workspace: -# at: . -# -# - run: -# name: Fix EC parameters error # (ref https://github.com/travis-ci/travis-ci/issues/8503) -# command: | -# wget "https://downloads.bouncycastle.org/java/bcprov-ext-jdk15on-158.jar" -O "${JAVA_HOME}"/jre/lib/ext/bcprov-ext-jdk15on-158.jar && \ -# perl -pi.bak -e 's/^(security\.provider\.)([0-9]+)/$1.($2+1)/ge' /etc/java-7-openjdk/security/java.security && \ -# echo "security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider" | tee -a /etc/java-7-openjdk/security/java.security -# -# - run: -# name: Run Tests -# command: GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xmx2G -Xms512M" ./gradlew -g=gradle-home test --parallel --stacktrace --no-daemon --max-workers=3 -# -# - run: -# name: Save Artifacts to (project-root)/build -# when: always -# command: .circleci/save_artifacts.sh -# -# - store_test_results: -# path: build/test-results -# -# - store_artifacts: -# path: build + test_7: + <<: *defaults + <<: *test_job + docker: + - image: openjdk:7-jdk test_8: <<: *defaults @@ -98,21 +78,26 @@ jobs: docker: - image: circleci/openjdk:8-jdk -# test_9: -# <<: *defaults -# <<: *test_job -# docker: -# - image: circleci/openjdk:9-jdk + test_9: + <<: *defaults + <<: *test_job + docker: + - image: circleci/openjdk:9-jdk - scan_and_save: + scan_versions: <<: *defaults steps: - - attach_workspace: - at: . + - checkout + + - restore_cache: + # Reset the cache approx every release + keys: + - dd-trace-java-version-scan-{{ checksum "dd-trace-java.gradle" }} + - dd-trace-java-version-scan - run: name: Verify Version Scan - command: ./gradlew -g=gradle-home verifyVersionScan --parallel --stacktrace --no-daemon + command: ./gradlew verifyVersionScan --parallel --stacktrace --no-daemon - run: name: Save Artifacts to (project-root)/build @@ -126,14 +111,16 @@ jobs: path: build - save_cache: - key: dd-trace-java-{{ checksum "dd-trace-java.gradle" }}-{{ .Branch }}-{{ .Revision }}-verified - paths: gradle-home + key: dd-trace-java-version-scan-{{ checksum "dd-trace-java.gradle" }} + paths: ~/.gradle deploy: <<: *defaults steps: - - attach_workspace: - at: . + - checkout + + - restore_cache: + <<: *cache_keys - run: name: Decode Signing Key @@ -143,7 +130,7 @@ jobs: name: Publish master to Artifactory command: | if [ "${CIRCLE_BRANCH}" == "master" ]; then - ./gradlew -g=gradle-home -Psigning.keyId=${PGP_KEY_ID} \ + ./gradlew -Psigning.keyId=${PGP_KEY_ID} \ -Psigning.password=${PGP_KEY_PASS} \ -Psigning.secretKeyRingFile=/home/circleci/dd-trace-java/.circleci/secring.gpg \ -PbintrayUser=${BINTRAY_USER} \ @@ -158,26 +145,25 @@ workflows: jobs: - build -# - test_7: -# requires: -# - build + - test_7: + requires: + - build - test_8: requires: - build -# - test_9: -# requires: -# - build - - - scan_and_save: + - test_9: + requires: + - build + - scan_versions: requires: - build -# - test_7 - - test_8 -# - test_9 - deploy: requires: - - scan_and_save + - test_7 + - test_8 + - test_9 + - scan_versions filters: branches: only: master diff --git a/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy b/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy index fb44837d06..178046d80d 100644 --- a/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy +++ b/dd-java-agent/instrumentation/datastax-cassandra-3.2/src/test/groovy/CassandraClientTest.groovy @@ -9,7 +9,7 @@ import org.cassandraunit.utils.EmbeddedCassandraServerHelper class CassandraClientTest extends AgentTestRunner { def setupSpec() { - EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.DEFAULT_CASSANDRA_YML_FILE, "build/tmp/embeddedCassandra") + EmbeddedCassandraServerHelper.startEmbeddedCassandra(40000L) } def cleanupSpec() {