Commit Graph

105 Commits

Author SHA1 Message Date
Brian Devins-Suresh 08e9f8c6e2 Undo star import 2020-03-26 10:10:32 -04:00
Brian Devins-Suresh 89a0761ab4 Add typesafe repo and skip bad builds 2020-03-26 10:10:31 -04:00
Trask Stalnaker bdf2b8eafd
Fix file formatting (#256) 2020-03-19 18:57:05 -07:00
Trask Stalnaker e039998192
Remove a couple remaining dd prefixes (#170) 2020-02-18 11:55:56 -08:00
Trask Stalnaker c43f3229c6 Merge commit '25534b2641ff57e0de36fb359a412612ef349ee9' into dd-merge-part-2 2020-02-12 17:59:03 -08:00
Tyler Benson e5980d4812 Fix muzzle 2020-02-10 10:45:58 -08:00
Trask Stalnaker cd4a97546e
Rename boostrap and tooling modules (#146)
* Rename agent-bootstrap module to auto-bootstrap

* Rename agent-tooling module to auto-tooling

* Further renames
2020-02-07 17:01:55 -08:00
Trask Stalnaker 147b42d1ff Merge tag 'v0.42.0' 2020-02-01 13:28:58 -08:00
dougqh 4c7a0ba7a7 Fixing muzzle?
MuzzlePlugin groovy checks that no threads are spawned because this holds the ClassLoader live.

This was breaking with the caching change because the cache no longer uses the Cleaner service.

This caused a problem because the Thread behind the cleaner is created lazily when the first task is created, but without the cache the creation was delayed.

To solve this, I addressed the original cause of the leak.  The newly created Thread automatically inherits the contextClassLoader of its parent, but that's unnecessary for a cleaner thread.

So I changed the ThreadFactory for cleaner to explicitly null out the contextClassLoader.

We should probably null out contextClassLoader in other thread factories and also reduce our use of contextClassLoaders in general, but that will left to another PR.
2020-01-27 17:14:17 -05:00
Trask Stalnaker 819ca7c256
Simplify directory/module structure (#77)
* Move things up a directory

* Scripted mass update

find -type f -name "*.gradle" | xargs sed -i 's/:java-agent:/:/g'

* Remove plugin version now that it's in root module

* Update java-agent and instrumentation configs

* Misc
2020-01-22 13:55:47 -08:00
Trask Stalnaker 8b0a140ed7
Update muzzle maven URL to use https (#61)
Also add a test.

Co-authored-by: Tyler Benson <tylerbenson@gmail.com>
2020-01-15 14:43:34 -08:00
Tyler Benson 4915ed9c75 Update muzzle maven URL to use https
Also add a test.
2020-01-15 11:22:10 -08:00
Trask Stalnaker 71d264fd00
Rename package to io.opentelemetry.auto (#54)
* Remove publishing info

* Remove Datadog-Meta-Lang handling

* Misc renames

* Rename DD_ constant field names

* Rename DDSpanTypes to SpanTypes

* Rename DDTags to MoreTags

* Rename DDSpecification to AgentSpecification

* Rename DDLocationStrategy to AgentLocationStrategy

* Rename DDCachingPoolStrategy to AgentCachingPoolStrategy

* Rename DDTransformers to AgentTransformers

* Script: rename datadog.trace to io.opentelemetry.auto

find -wholename */datadog/trace -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry/auto \;

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/datadog\.trace\./io.opentelemetry.auto./g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/datadog\/trace\//io\/opentelemetry\/auto\//g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.trace\./io.opentelemetry.auto./g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\/trace\//io\/opentelemetry\/auto\//g'

* Script: rename more packages

find -wholename */datadog/test -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/smoketest -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/perftest -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/benchmark -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;
find -wholename */datadog/loadgenerator -exec mkdir -p {}/../../io/opentelemetry \; -exec mv {} {}/../../io/opentelemetry \;

# keep these outside of io.opentelemetry.auto for now at least (things under io.opentelemetry.auto are not instrumented)
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.test\b/io.opentelemetry.test/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.smoketest\b/io.opentelemetry.smoketest/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.perftest\b/io.opentelemetry.perftest/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.benchmark\b/io.opentelemetry.benchmark/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.loadgenerator\b/io.opentelemetry.loadgenerator/g'

# ok to move this into io.opentelemetry.auto
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh | xargs sed -i 's/datadog\.slf4j\b/io.opentelemetry.auto.slf4j/g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.test\b/io.opentelemetry.test/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.smoketest\b/io.opentelemetry.smoketest/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.perftest\b/io.opentelemetry.perftest/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.benchmark\b/io.opentelemetry.benchmark/g'
find -type f -name "*.gradle" | xargs sed -i 's/datadog\.loadgenerator\b/io.opentelemetry.loadgenerator/g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.slf4j\b/io.opentelemetry.auto.slf4j/g'

* Intellij: format and organize imports

* Script: More renaming

find -name *.xml | xargs sed -i 's/<logger name="datadog"/<logger name="io.opentelemetry.auto"/g'
find -name *.java | xargs sed -i 's/LoggerFactory.getLogger("datadog")/LoggerFactory.getLogger("io.opentelemetry.auto")/g'
find -name *.java | xargs sed -i 's/"datadog.span"/"opentelemetry.auto.span"/g'
find -name *.java -o -name *.groovy | xargs sed -i 's/"datadog.doesnotexist"/"io.opentelemetry.auto.doesnotexist"/g'

# keep this outside of io.opentelemetry.auto for now at least (things under io.opentelemetry.auto are not instrumented)
find -name *.yaml | xargs sed -i 's/"datadog.benchmark"/"io.opentelemetry.benchmark"/g'

find -type f -name "*.gradle" | xargs sed -i 's/datadog\.forked/io.opentelemetry.auto.forked/g'
find -name *.yml | xargs sed -i 's/datadog\.forked/io.opentelemetry.auto.forked/g'

* Improve comment

* Script: rename dd- modules

git mv dd-java-agent java-agent
git mv java-agent/dd-java-agent.gradle java-agent/java-agent.gradle
git mv dd-trace-api trace-api
git mv trace-api/dd-trace-api.gradle trace-api/trace-api.gradle
git mv dd-smoke-tests smoke-tests
git mv smoke-tests/dd-smoke-tests.gradle smoke-tests/smoke-tests.gradle

git mv dd-trace-java.gradle trace-java.gradle

find -type f -name "*.gradle" | xargs sed -i 's/\bdd-java-agent\b/java-agent/g'
find -type f -name "*.gradle" | xargs sed -i 's/\bdd-trace-api\b/trace-api/g'
find -type f -name "*.gradle" | xargs sed -i 's/\bdd-smoke-tests\b/smoke-tests/g'

find -type f -name "*.gradle" | xargs sed -i 's/\bdd-trace-java\b/trace-java/g'

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh -o -name *.yml | xargs sed -i 's/\bdd-java-agent\b/java-agent/g'
sed -i 's/\bdd-java-agent\b/java-agent/g' .gitignore

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh -o -name *.yml | xargs sed -i 's/\bdd-trace-api\b/trace-api/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt -o -name *.sh -o -name *.yml | xargs sed -i 's/\bdd-smoke-tests\b/smoke-tests/g'

* Remove unused config - service.name

* Remove unused config - writer.type

* Remove unused config - trace.partial.flush.min

* Script: rename dd. test packages

find -wholename */dd/trace/instrumentation -exec mkdir -p {}/../../io/opentelemetry/test \; -exec mv {} {}/../../io/opentelemetry/test \;
find -wholename */dd/test/trace/annotation -exec mkdir -p {}/../../io/opentelemetry/test \; -exec mv {} {}/../../io/opentelemetry/test \;

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/dd\.trace\.instrumentation\b/io.opentelemetry.test.instrumentation/g'
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/dd\.test.trace\.annotation\b/io.opentelemetry.test.annotation/g'

* Script: rename dd properties

DD_PROP=opentelemetry.auto
DD_ENV=OPENTELEMETRY_AUTO
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\"dd\.\"/\"$DD_PROP.\"/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\"DD_\"/\"${DD_ENV}_\"/g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.integration\./$DD_PROP.integration./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.integrations\./$DD_PROP.integrations./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_INTEGRATION_/${DD_ENV}_INTEGRATION_/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_INTEGRATIONS_/${DD_ENV}_INTEGRATIONS_/g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.trace\./$DD_PROP.trace./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDdd\.trace\./D$DD_PROP.trace./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_TRACE_/${DD_ENV}_TRACE_/g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.logs\./$DD_PROP.logs./g"

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.trace_id\b/$DD_PROP.trace_id/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.span_id\b/$DD_PROP.span_id/g"

find -type f -name "*.gradle" | xargs sed -i "s/\bdd\.trace\./$DD_PROP.trace./g"
find -type f -name "*.properties" | xargs sed -i "s/\bdd\.trace\./$DD_PROP.trace./g"

# test code
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.prop\./$DD_PROP.prop./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.float\./$DD_PROP.float./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.garbage\./$DD_PROP.garbage./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bdd\.negative\./$DD_PROP.negative./g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_ENV_/${DD_ENV}_ENV_/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bDD_FLOAT_/${DD_ENV}_FLOAT_/g"

# test code
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\"is-dd-server\"/\"is-test-server\"/g"
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i "s/\bisDDServer\b/isTestServer/g"

* Rename dd-java-tracer.properties to java-tracer.properties

* Rename DDTracingUtil to OpenTelemetryTracingUtil

* Codec.java was removed already

* Rename __datadog to __opentelemetry

* Misc renames

* Script: remove redundant sub-package

find -wholename */io/opentelemetry/auto/agent -exec bash -c "mv {}/* {}/.." \;
find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/io\.opentelemetry\.auto\.agent\b/io.opentelemetry.auto/g'

find -type f -name "*.gradle" | xargs sed -i 's/io\.opentelemetry\.auto\.agent\b/io.opentelemetry.auto/g'

find -name *.java -o -name *.groovy -o -name *.scala -o -name *.kt | xargs sed -i 's/io\/opentelemetry\/auto\/agent\b/io\/opentelemetry\/auto/g'

* Shorten logging config keys
2020-01-14 13:57:01 -08:00
Tyler Benson ded28674d3 Add option for muzzle validation on the specific JDK version
This is still useful to validate various aspects of the integrations even if it doesn't need to check against maven.
2019-12-18 13:40:19 -08:00
Tyler Benson fbd16d8cb7 Add assert to ensure muzzle range not empty and update spring-data
Also fix a few muzzle definitions that are now broken with the new requirement.

Moved a few projects around to match correct version numbers.
2019-10-23 14:09:01 -07:00
Tyler Benson e69edaec14 Remove project config centrally defined and other misc cleanup 2019-08-22 12:43:13 -07:00
Tyler Benson 28f4038122 Be more specific about thread assertion. 2019-08-20 09:43:27 -07:00
Tyler Benson 8c1dbfe7cb Make Muzzle handle cleaner thread properly. 2019-08-19 17:27:01 -07:00
Luca Abbati 27b4db8861
Remove legacy transitive dependencies no longer bundled with the JVM from muzzle tests 2019-06-20 21:29:46 -04:00
Nikolay Martynov c489fb41cb Konvert muzzle plugin definition to Kotlin 2019-04-05 11:03:35 -04:00
Luca Abbati 64dd67024f
Improve javadoc entry 2019-03-29 17:18:53 +01:00
Luca Abbati 1626c5da62
Fixed typo in comments 2019-03-29 14:09:40 +01:00
Luca Abbati 1a3e5fe69a
Let muzzle plugin test same dependency in different conditions
The muzzle plugin creates a config for each of the dependencies under test with name '...-<group_id>-<artifact_id>-<version>'.
The problem is that if we want to test multiple times the same configuration under different conditions, e.g.
with different extra dependencies, the plugin would throw an error as it would try to create several times the same config.

This commit let directives to define an optional name that defaults to a null. If a name is provided then a slug of it
is used to generate the gradle configuration name.
2019-03-29 13:42:26 +01:00
Tyler Benson b07b5962f0 Add log output to help CI not time out for long tasks
Muzzle takes a long time when run on a clean cache because it has to download a lot of dependencies.
2019-02-07 11:03:19 -08:00
Andrew Kent 3c4b480a18 Share tooling loader across muzzle runs 2018-11-28 13:01:01 -08:00
Andrew Kent e0d00078f9 Assert muzzle tooling invocations do not create orphaned dd threads 2018-11-28 12:05:47 -08:00
Andrew Kent 6ee5fd27b0 Guard against invoking WeakConcurrent constructor 2018-11-28 12:05:47 -08:00
Gary 90777f4b39
Retire/remove version scan
Remove version scan dead code and unnecessary classLoaderMatcher methods in instrumentations. Depends on #572
2018-11-26 18:21:56 -05:00
Tyler Benson 6b8eb60ca2 Upgrade Byte Buddy to 1.9.0 2018-10-01 13:31:03 -04:00
Andrew Kent 9338faa013 Muzzle inverse assertions 2018-08-24 10:47:37 -07:00
Andrew Kent 26705142bb Muzzle pass and fail directives in the same collection 2018-08-24 10:47:37 -07:00
Andrew Kent b6d1c18af9 Allow muzzle directives to have extra dependencies 2018-08-24 10:47:37 -07:00
Andrew Kent c6841c9d06 Add maven version scanning to muzzle 2018-08-24 10:47:37 -07:00
Andrew Kent 3c1bf569ea Add reference pretty-printer to muzzle plugin 2018-08-15 10:01:19 -07:00
Andrew Kent 2eb3433da1 Muzzle plugin to depend on compileScala 2018-08-15 09:49:50 -07:00
Tyler Benson ff9ef671f3 Apply formatter on groovy files. 2018-07-31 12:09:28 +10:00
Andrew Kent 23d0439b12 Remove muzzle dead code, doc cleanup, and better logging 2018-07-13 16:24:01 -07:00
Andrew Kent 2925df8de5 Clean up and document 2018-07-10 17:26:49 -04:00
Andrew Kent 628f4929dc Muzzle Assertions and gradle plugin 2018-07-10 17:26:49 -04:00
Tyler Benson c0da1f7093 Add version scan. 2018-06-18 12:52:42 +10:00
Tyler Benson 3db2d654f1 Fix spark instrumentation
and rebase off master.
2018-04-26 17:01:45 +10:00
Tyler Benson 64d39030e5 Use workflows in Circle to test Java 7 and 8
Java 9 is commented out because there are some test failures that will be investigated later.

Some tests had to be excluded from Java 7 because they don’t have a Java 7 compatible version.
2018-01-22 13:46:50 -05:00
Andrew Kent 7ea611fee2 Include scanVersions in gradle task list. 2018-01-08 17:41:34 -08:00
Tyler Benson 02460060bc Misc cleanup
Remove out of date “async-tracing” example since it’s more about byteman and no longer relevant.

Minor changes to improve the code test coverage…
2017-12-21 16:31:03 -08:00
Tyler Benson fd8f6a940e Exclude draft version. 2017-12-04 18:14:42 -08:00
Tyler Benson 3ea7ad73ed Fix version scan plugin
Now you can run `./gradlew :dd-java-agent:integrations:datastax-cassandra-3.2::scanVersionsReport -PshowClasses` to show you the classes you can use for that version range.
2017-11-28 18:34:56 -08:00
Tyler Benson 9c39bb64ae Fix aws version in readme, add finals and reformatting 2017-09-18 10:49:08 -07:00
Tyler Benson a0d4f2ca76 Report version from main
This allows running the agent as an executable jar to report the version number.

Also repot version scan errors better.
2017-08-28 13:39:19 -07:00
Tyler Benson 6fd641b855 Skip verifyVersionScan for release build 2017-08-25 10:55:04 -07:00
Tyler Benson 9a9da92b59 Add version checking via class/method for jetty 2017-08-24 17:38:16 -07:00
Tyler Benson 1b63a53167 Add version scan verification and test in CI 2017-08-24 17:15:22 -07:00
Tyler Benson aad3746c2b Fix tests 2017-08-18 11:12:06 -06:00
Tyler Benson 988a3d0fdf Cleanup plugin and add identifying classes to config
Still missing jetty since that requires method level searching.
2017-08-18 11:11:37 -06:00
Tyler Benson d33b468096 Allow scanning for key identifying methods 2017-08-18 11:11:37 -06:00
Tyler Benson 9b73fed3c5 Add plugin that scans for classes unique to version range
Does not include method signatures yet.  Still a work in progress.

Execute with `./gradlew scanVersions --parallel`.
Using `--parallel` is strongly recommended.
2017-08-18 11:11:37 -06:00