Commit Graph

920 Commits

Author SHA1 Message Date
Nikolay Martynov bb2126bd9a Improve ByteBuddyElementMatchers javadoc 2018-07-31 20:14:03 -04:00
Nikolay Martynov 2bfb7b93ec Disable Lagom circuit breaker
It looks like they fail tests from time to time
2018-07-31 20:14:03 -04:00
Nikolay Martynov 78e6a9c336 Get rid of DDAdvice
Newer ByteBuddy api simplifies things.
2018-07-31 20:14:03 -04:00
Nikolay Martynov c66bd24d3a Use `safeHasSuperType` instead of `isSubType`
`isSubType` may fail on certain class lookup problems, even on classes
unrelated to given instrumentation, preventing instrumentation from
being applied.
2018-07-31 20:14:03 -04:00
Nikolay Martynov 6693a93485 Remove onInstrumentationError from LagomTest
We not longer need it since our instrumentation can handle underlying
loading problem.
2018-07-31 20:14:03 -04:00
Nikolay Martynov 6bc1d1ab8e Implement `saveHasSuperType` and use it instead of `hasSuperType`
The idea is to just 'trim' type hierarchy 'up-trees' that we cannot
resolve dring instrumentation instead of failing to instrument completely.
2018-07-31 20:13:59 -04:00
Nikolay Martynov deec4a795c Improve Apache HTTP client
Properly open and close outer span in multi-request cases
2018-07-31 20:12:17 -04:00
Nikolay Martynov 1ebe4732f8 Stop using `failSafe` matcher
It should not be necessary after we jave fixed class location issue
for ByteBuddy
2018-07-31 20:12:17 -04:00
Nikolay Martynov bae79514c0 Fix DDLocationStrategy to use DataDog ClassLoader
This allows ByteBuddy to properly find classes injected into the
agent.

Thanks @realark for providing a fix!
2018-07-31 20:12:17 -04:00
Nikolay Martynov 4ae9263e1c Set POOL_ONLY DescriptionStrategy for ByteBuddy
This makes sure no classes are loaded during instrumentation
transformation which allows us to safely instrument depndent classes.
2018-07-31 20:12:17 -04:00
Nikolay Martynov b6118f0397 Apache HTTP Client: add test for redirected request 2018-07-31 20:12:17 -04:00
Tyler Benson 9a6efe69f4 Fix netty dependency and class version checking 2018-07-31 17:42:40 +10:00
Tyler Benson b1304b478a Change http server span type back to `web` 2018-07-31 12:53:50 +10:00
Tyler Benson e6da80bb12 datastores 2018-07-31 12:53:50 +10:00
Tyler Benson 00a2e891b0 http servers 2018-07-31 12:53:50 +10:00
Tyler Benson 3856e7fd1a http clients 2018-07-31 12:53:50 +10:00
Tyler Benson 01d57fb497 elasticsearch 2018-07-31 12:53:50 +10:00
Tyler Benson d3ce57d84f mongo 2018-07-31 12:53:50 +10:00
Tyler Benson 094552cad3 memcache 2018-07-31 12:53:50 +10:00
Tyler Benson 2e7899b405 redis 2018-07-31 12:40:47 +10:00
Tyler Benson ff9ef671f3 Apply formatter on groovy files. 2018-07-31 12:09:28 +10:00
Tyler Benson 51919a77bb Apply formatter on java files. 2018-07-31 12:07:43 +10:00
Tyler Benson bc3af56b08 Apply formatter on scala files. 2018-07-31 12:07:30 +10:00
Tyler Benson b5c8a8b8fc Apply formatter on gradle files. 2018-07-31 12:04:00 +10:00
Gary Huang 4c88e1a0a8
Merge pull request #392 from DataDog/gary/uint64-id-support
Change the internal storage and handling of trace ID, span ID, and pa…
2018-07-30 15:01:10 -04:00
Tyler Benson 4e60246e17
Merge pull request #405 from DataDog/tyler/servlet-async
Refactor servlet instrumentation and disable async on response.
2018-07-30 10:27:54 +10:00
Nikolay Martynov f6edf913b7 Remove functions that do reflection which is not Java10 compliant
These functions are not used anylonger
2018-07-27 14:56:28 -04:00
Andrew Kent b64be6228c Don't check for helper classes in muzzle reference check 2018-07-27 11:03:02 -07:00
Nikolay Martynov fadce5c6b3
Merge pull request #400 from DataDog/mar-kolya/java10-support
Java10 support
2018-07-27 13:38:39 -04:00
Andrew Kent ee594f8567 Use connect operationName in httpurlconnection connect-first case 2018-07-26 15:34:27 -07:00
Andrew Kent 54485c3296 Don't trace httpurlconnection as a top-level trace 2018-07-26 15:34:27 -07:00
Andrew Kent d598515d09 Handle cases where connect() is called first 2018-07-26 15:34:27 -07:00
Andrew Kent df95af53a7 Remove getResponseCode() from httpurlconneciton instrumentation 2018-07-26 15:34:27 -07:00
Andrew Kent 2a35ecb497 Use connected field to determine io status of httpurlconnection 2018-07-26 15:34:27 -07:00
Gary Huang 2780ac7ac1 POC sun JDK http urlconnection instrumentation, currently creates one span. 2018-07-26 15:34:27 -07:00
Nikolay Martynov 0f80f7dd40 Remove old checks from HelperInjector
They are not really producing anything useful anf they depend on API
that is forbidden in Java9+
2018-07-26 10:11:24 -04:00
Nikolay Martynov 44b364332a Remove unused field and method 2018-07-26 10:11:20 -04:00
Nikolay Martynov 3f158bb47f Fix `SpockRunner` BootstrapJar creation under Java9+ 2018-07-26 10:01:55 -04:00
Nikolay Martynov 8cc2f6cbb2 Skip `jdk.internal.reflect.DelegatingClassLoader` in `ClassLoaderMatcher`
This is the same thing as `sun.reflect.DelegatingClassLoader` in older JVMs
2018-07-26 10:01:55 -04:00
Gary Huang 6317b21d5c Fix merge conflicts with service mapping change 2018-07-26 09:16:41 -04:00
Tyler Benson 1e36343485 Null or empty tags should remove previously set values.
Add context to servlet2 test.

Clean up some declared tracers that mess up the classpath.
2018-07-26 12:20:37 +10:00
Tyler Benson fb2817a134 Refactor servlet instrumentation and disable async on response.
Separate out common advice between instrumentation.
2018-07-25 15:12:55 +10:00
Nikolay Martynov b30ed0dfa0
Merge pull request #404 from DataDog/mar-kolya/fix-kafka-streaming-flaky-test
Fix flaky test in kafka streaming
2018-07-25 00:17:01 -04:00
Nikolay Martynov 5c1ac58c3f Fix flaky test in kafka streaming 2018-07-24 23:41:01 -04:00
Nikolay Martynov 7b644161d3 Migrate ApacheHttpClientTest to use span assertion api 2018-07-24 23:28:37 -04:00
Nikolay Martynov c98d5ef64b Increase ElasticSearch timeout in tests
Hopefully this would improve build stability
2018-07-24 23:07:18 -04:00
Gary Huang 93e70dcef6 Address comments and add test case for extracting non numeric IDs 2018-07-24 14:04:52 -04:00
Nikolay Martynov 3d8e76c2a4 Get rid of `WRITER_PHASER`
We have alternative way of doing the same thing and `Phaser` seems to be
not very correct way of doing this anyway.
2018-07-24 11:41:48 -04:00
Nikolay Martynov dcbf8d674a Akka-http-client: handle `singleRquest` throwing an exception 2018-07-24 11:41:48 -04:00
Nikolay Martynov 642b862c13 Do not reference `AkkaHttpClientTransformFlow` in instrumentation code
to avoid class loader problems
2018-07-24 11:41:48 -04:00
Nikolay Martynov 35b980ea89 Fix ElasticSearch config for 2.x client 2018-07-24 11:41:45 -04:00
Nikolay Martynov 732bce82d0 Fix typo 2018-07-23 10:04:53 -04:00
Nikolay Martynov 7794eacc91 Increase Cassandra request timeout in tests 2018-07-23 10:04:53 -04:00
Nikolay Martynov b4b99d991c Move AkkaHttpServerInstrumentation into Scala compilation
This is a hack to work around the problem of `auto-service` annotation
processing creating files with same name in `java` and `scala`
directories. This results in Jar having two files with the same name
instead of one concatenated file.
2018-07-23 10:04:53 -04:00
Nikolay Martynov 68ce09b461 Add missing Scala classes to list in injection classes 2018-07-23 10:04:53 -04:00
Nikolay Martynov fd5d80ba86 Make muzzle plugin apply to Scala code 2018-07-23 10:04:53 -04:00
Nikolay Martynov 161847752f Pass Span instead of Scope 2018-07-23 10:04:53 -04:00
Nikolay Martynov 5e67e6e5ba Migrate to new instrumentation API 2018-07-23 10:04:53 -04:00
Nikolay Martynov 277e7a1a3c Typo fix 2018-07-23 10:04:53 -04:00
Nikolay Martynov db895f2e34 Remove redundant plugin from akka gradle file 2018-07-23 10:04:53 -04:00
Nikolay Martynov ae37ca4b02 Add akka-http-client instrumentation: superPool 2018-07-23 10:04:53 -04:00
Nikolay Martynov 2b25de966a Add akka-http-client instrumentation
This is a very-very first pass: instrument single request
2018-07-23 10:04:53 -04:00
Nikolay Martynov 6932d581ed Add some helpful messages to AgentTestRunner assertions 2018-07-23 10:04:53 -04:00
Nikolay Martynov f9f135cbd6 Do not run Spymemcached tests locally under Java7
since it requires external Memcached container running because
testcontainers doesn't work on Java7.
2018-07-23 10:04:53 -04:00
Nikolay Martynov c844501bc5 Fixes for some minor checkstyle complaints 2018-07-23 10:04:53 -04:00
Nikolay Martynov ce7866d018 Use `io.opentracing.log.Fields.*` instead of hardcoded strings 2018-07-23 10:04:53 -04:00
Nikolay Martynov d4d770fe42 Pull out ratpack helper into seprate class to avoid copy-paste 2018-07-23 10:04:53 -04:00
Nikolay Martynov a882a5439c OkHttp instumentation: simplify error case 2018-07-23 10:04:53 -04:00
Nikolay Martynov 9d2755be17 Fix Google Java Formater violations
Some changes landed on master that do not comply with new formatter rules
2018-07-23 13:43:29 +10:00
Nikolay Martynov 4283e3acb1
Merge pull request #396 from DataDog/mar-kolya/test-http-client-timeout-increase
Increase build stability by increasing some http client timeouts
2018-07-22 21:35:32 -04:00
Tyler Benson 9988c8775f
Merge pull request #388 from DataDog/tyler/grpc
Instrument gRPC 1.5.0+
2018-07-23 11:19:48 +10:00
Nikolay Martynov 564b4e9dc3 Increase build stability by increasing some http client timeouts
This makes build more resilient to slow boxes and high parallelism
2018-07-22 00:41:37 -04:00
Nikolay Martynov f1466304e8 Move random port generation to actual usage in tests using listening ports 2018-07-20 11:57:37 -04:00
Nikolay Martynov c3825d9d52 Improve tmp dir handling in ES tests
Also make sure ES ports are allocated right before ES is started
2018-07-20 11:53:33 -04:00
Tyler Benson a34f7b849b Instrument gRPC
Adds spans for the duration of the connection and child spans for each message.
Also propagates the trace using the metadata object.
2018-07-20 12:25:04 +10:00
Tyler Benson aa3fc0717e Fix some formatting changes. 2018-07-20 10:31:14 +10:00
Nikolay Martynov 7c62e10542 Do not use advice class names in Lettuce instrumentation directly
Since this leads to Java8 code loaded into Java7 JVM in tests.
Insted reference class names by string.
2018-07-19 10:45:21 -04:00
Tyler Benson 12a2fce96d Upgrade java formatter version. 2018-07-19 14:10:53 +10:00
Andrew Kent 46428dc6a3 Enable Lettuce instrumentation by default 2018-07-18 18:45:46 -07: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 8e182edc03 Replace BIPUSH with LDC to prevent overflow 2018-07-10 17:26:49 -04:00
Andrew Kent 33ec3f0304 Add missing ratpack helper 2018-07-10 17:26:49 -04:00
Andrew Kent 6faf63d6d8 Add missing memcached helper 2018-07-10 17:26:49 -04:00
Andrew Kent ce73c403bf Elasticsearch5 helpers 2018-07-10 17:26:49 -04:00
Andrew Kent 628f4929dc Muzzle Assertions and gradle plugin 2018-07-10 17:26:49 -04:00
Andrew Kent 541a6998a4 Hook up muzzle to Instrumenter.Default's matcher 2018-07-10 17:26:49 -04:00
Andrew Kent d61f65f4ff Muzzle outline in Instrumenter.Default 2018-07-10 17:26:49 -04:00
Andrew Kent 836f49205b TraceConfigInstrumentation implements Instrumenter directly 2018-07-10 17:26:49 -04:00
Gary Huang bfc49e869e Make connections always close on test case completion. 2018-07-09 17:55:52 -04:00
Gary Huang 6bd7cf0675 Fixes #379.
Connection pools were creating proxy connection objects, so the proxy objects were cached. By unwrapping the proxies, the connection objects will be correctly cached and identified.

Refactored tests to use connection pools, and hsqldb connections only on statements (since they will not make a USER() query in a getMetaData call).
2018-07-09 17:55:52 -04:00
Andrew Kent 02a3e6a5d3 New Instrumentation API 2018-07-06 17:17:32 -04:00
Andrew Kent 33a139cdcb New Instrumentation outline 2018-06-28 14:54:14 -07:00
Andrew Kent f8e3ac3097 New instrumentation api outline 2018-06-28 14:54:14 -07:00
Andrew Kent 0360bd01ee
Merge pull request #378 from DataDog/ark/cassandra-fix
Remove most shadow relocates
2018-06-27 11:56:33 -07:00
Andrew Kent 3894f829bb Remove most shadow relocates
Shadow relocates are no longer needed because of our new bootstrapping
process.
It's no longer possible for agent dependencies to interfere with the
user's classpath.

The immediate reason for this change is a bug created in the Cassandra
instrumentation.
The Cassandra instrumentation references guava transitive deps from
the datastax driver. These references are re-written by shadow,
causing the instrumentation to reference 'datadog.agent.deps.google.*'
instead of the guava class.
2018-06-27 09:35:54 -07:00
Gary Huang cc7bb7943f
Merge pull request #354 from DataDog/gary/jsp-integration-branch
Generic JSP instrumentation with Tomcat Jasper compilation instrumentation.
2018-06-26 18:35:09 -04:00
Nikolay Martynov 8d6392fa94 Remove timeouts from lagom tests
It looks like server is started lazily and on laptop it may take over
5 seconds in parallel build. This means in may take long time on CI as
well.
It is in fact unikely that server will never return so adding timeout
introduces flakiness and doesn't really protect from any real-life
problems. Instead of hardcoding timeouts just rely on build eventually
giving up on its own one way or another.
2018-06-26 15:48:04 -04:00
Nikolay Martynov 44b63ea5ca Rename AkkaHttpInstrumentation to AkkaHttpServerInstrumentation
To be able to put client instrumentation in more consistent way
2018-06-26 15:41:59 -04:00
Nikolay Martynov 3ac866b0f9
Merge pull request #371 from DataDog/tyler/servlet-user
Set servlet’s user-principal as a tag when available
2018-06-26 13:41:13 -04:00
Andrew Kent 15c0f9a6b2 Akka-http-server renames 2018-06-26 09:55:32 -07:00
Nikolay Martynov a0d99e70fb Add tests to servlet intrumentation to verify that username is set correctly 2018-06-25 21:54:20 -04:00
Gary Huang 46e7036701 fix version scan and test versions 2018-06-25 16:54:45 -04:00
Tyler Benson 9899256381 Set servlet’s user-principal as a tag when available 2018-06-25 11:24:35 +10:00
Gary Huang eddb48f3e2 refactored tests, added parent-children relationship between spans in tests. Still need to figure out version scan and versions to support. 2018-06-22 18:24:06 -04:00
Gary Huang e90bcf624a add unit tests for jsp rendering (servicing requests), change to instrument generic jsp level rendering. 2018-06-22 18:24:06 -04:00
Gary Huang b1d06299cc JSP instrumentation
WIP: more unit tests to come
2018-06-22 18:24:06 -04:00
Nikolay Martynov 7405b7711b
Merge pull request #369 from DataDog/mar-kolya/increase-timeouts-in-url-connection-test
Increase timeouts in UrlConnection test
2018-06-22 17:17:04 -04:00
Nikolay Martynov 60a0722390 Increase timeouts in UrlConnection test
Before those timeouts where set to 10ms which legitimatelly can come
before server (even localhost) has a chance to reply with 'connection
refused'.

This should fix flaky test.
2018-06-22 16:57:31 -04:00
Nikolay Martynov 1fbb33d182 More fixes to Lettuce tests
Lettuce intrumentatio is implemented in a way that after operation has
been performed `span` is not closed syncronously - in fact this happens
on separate thread. This means `spans` for even syncronous operations
may be closed on opposite order.
This means that writing tests that pefrom two operations and expect
two traces is slightly more complicated. In many places we can just
avoid doing that by preparing necessary data in `setup`.

This fixes some of the false negatives in tests.
2018-06-22 16:44:58 -04:00
Nikolay Martynov 770f77a7ff
Merge pull request #367 from DataDog/mar-kolya/reduce-number-of-compile-workers
Reduce number of gradle workers during compile
2018-06-22 16:07:46 -04:00
Andrew Kent 8a666784a6 Close Jetty Handler scope 2018-06-22 11:53:39 -07:00
Nikolay Martynov 7882e4fe23 Make ES tests more deterministic by using listener pool with 1 thread
This should reduce number of false negatives in ES tests
2018-06-22 14:23:06 -04:00
Nikolay Martynov c050b4acd8
Merge pull request #366 from DataDog/mar-kolya/fixes-for-lettuce-tests
Fix some flakiness in Lettuce tests
2018-06-22 11:01:30 -04:00
Nikolay Martynov 389f65687a Fix some flakiness in Lettuce tests
It looks like automatic reconnection was enabled which lead to random
traces popping up in random places when Redis server was shutdown.

Also make sure that server persists only during single test to weedout
all inter-test dependencies.
2018-06-21 17:44:19 -04:00
Nikolay Martynov 79d7b9c062 JMS1/2: change resource names according to PR comments 2018-06-21 14:10:50 -04:00
Nikolay Martynov 37fdbf9188 JMS2: Fix `receiveNoWait` instrumentation and instrument `receive(timeout)` 2018-06-21 13:28:19 -04:00
Nikolay Martynov 3be5a78a53 JMS1: make resouce names more descriptive 2018-06-21 13:28:19 -04:00
Nikolay Martynov fe118adc6e JMS1: Fix `receiveNoWait` instrumentation and instrument `receive(timeout)` 2018-06-21 13:28:19 -04:00
Nikolay Martynov bb4026234d Refactor JMS1 integration tests 2018-06-21 13:28:19 -04:00
Nikolay Martynov beb91446c7 Increase Cassandra embedded server start up timeout
To try to make tests less prone to false positives.
2018-06-21 12:00:26 -04:00
Tyler Benson 83db4e8c4d
Merge pull request #352 from DataDog/tyler/netty
Netty HTTP client and server instrumentation
2018-06-21 14:11:12 +10:00
Nikolay Martynov 9cc99bafbf Simplify Jacoco configuration 2018-06-20 17:13:30 -04:00
Nikolay Martynov e070a9be4a Fix jacoco excluded classes concatenation 2018-06-20 17:05:16 -04:00
Nikolay Martynov 71a991fcaa Update jacoco exclusions to exclude things not hit during test runs 2018-06-20 17:01:01 -04:00
Nikolay Martynov da5cd0724b
Merge pull request #362 from DataDog/mar-kolya/enable-coverage-in-CI
Enable coverage checks in CI for java8
2018-06-20 15:15:49 -04:00
Nikolay Martynov 21d58768cb Lettuce: properly close connection instead of letting it being GCed 2018-06-19 22:41:58 -04:00
Andrew Kent 46b9cd35b9
Merge pull request #350 from DataDog/ark/lagom
akka-http instrumentation and lagom tests
2018-06-19 15:17:09 -07:00
Nikolay Martynov b0c2ab9b68 Lettuce: wait for trace after setup code
Otherwise that trace may land at some random point in time after and
cause flaky tests.
2018-06-19 15:15:29 -04:00
Andrew Kent 519f15bcc6
Merge pull request #357 from DataDog/ark/servlet-async
Close scope for async servlet requests
2018-06-17 23:44:24 -07:00
Tyler Benson c0da1f7093 Add version scan. 2018-06-18 12:52:42 +10:00
Tyler Benson 43e31eae80 Separate out instrumentation for netty 4.0 from 4.1 2018-06-18 12:52:42 +10:00
Tyler Benson 9b3df4ff9e Netty HTTP client and server instrumentation first pass
Doesn’t target right versions. Needs lots of testing.
2018-06-18 12:52:42 +10:00
Andrew Kent 93281f775a Clean up akkahttp-server/lagom tests 2018-06-15 14:30:23 -07:00
Andrew Kent 2cfd7bf911 Allow Unit tests to skip expected instrumentation errors. 2018-06-15 13:25:41 -07:00
Andrew Kent 7ac2bdfc22 Add akka-http to play 2.6 tests 2018-06-15 12:48:57 -07:00
Andrew Kent 5a77ac3749 akka-http sync and async tests 2018-06-15 12:48:57 -07:00
Andrew Kent 6b7dda3657 Instrument akka-http function handler instead of akka-streams 2018-06-15 12:48:57 -07:00
Andrew Kent 004b88f634 Initial Lagom Test 2018-06-15 12:48:57 -07:00
Andrew Kent 109f2cead4 Akka-http instrumentation and test 2018-06-15 12:48:57 -07:00
Nikolay Martynov d278cd48a7
Merge pull request #359 from DataDog/mar-kolya/spymemcached-instrumentation
Make spymemcached disabled by default
2018-06-15 15:29:52 -04:00
Nikolay Martynov 0e62ee8ec6 Make spymemcached instrumentation disabled by default 2018-06-15 14:25:51 -04:00
Nikolay Martynov f9cc33c7c8
Merge pull request #353 from DataDog/mar-kolya/spymemcached-instrumentation
Mar kolya/spymemcached instrumentation
2018-06-15 12:44:42 -04:00
Andrew Kent 6cd8be67d5 Close scope for async servlet requests 2018-06-14 20:23:54 -07:00
Andrew Kent f28445c45f CorrelationIdentifier for MDC frameworks. 2018-06-14 15:33:15 -07:00
Nikolay Martynov 1e4c88ffcb Merge branch 'master' into mar-kolya/spymemcached-instrumentation 2018-06-14 15:38:01 -04:00
Nikolay Martynov dd8f5ced07 Spymemcached: be slightly mode defensive in instumentation 2018-06-14 13:37:35 -04:00
Nikolay Martynov ba37ccc552 Spymemcached: use cache span type 2018-06-14 13:37:35 -04:00
Nikolay Martynov 940633b388 Spymemcached: Make abstract method in CompletionListener 2018-06-14 13:37:31 -04:00
Nikolay Martynov 2c9f8a2b71 Fix ES rest client latest dep tests by forcing 6.2.+ since our instrumentation doesnt work properly with 6.3.+ 2018-06-14 10:31:45 -04:00
Nikolay Martynov 30695555f9 Spymemcached: remove unnecessary unboxing and minor cleanup 2018-06-13 22:43:36 -04:00
Nikolay Martynov dafd52cb7a Spymemcached: add instumentation 2018-06-13 22:38:18 -04:00
Tyler Benson ff56389a56 Upgrade some versions. 2018-06-14 11:56:56 +10:00
Nikolay Martynov 63c4cdff87 Memcached testing: add support for testoingcontainers 2018-06-13 13:06:23 -04:00
Gary Huang adbab8692c
Merge pull request #336 from DataDog/gary/lettuce-integration-branch
lettuce 5 redis client integration
2018-06-13 09:18:01 -04:00
Nikolay Martynov 0fa972ec77 Merge branch 'master' into mar-kolya/slick-instrumentation 2018-06-09 00:06:17 -04:00
Gary Huang 429ee40f81 add workaround to avoid certain commands from crashing the trace agent. 2018-06-08 23:53:13 -04:00
Gary Huang fdc56c0e13 change the way classes are loaded so that classLoaderHasClasses would still work for the classes that are being instrumented and being matched at the same time. 2018-06-08 23:53:13 -04:00
Gary Huang 42b586badf remove recording of redis command arguments for now to avoid leaking sensitive data 2018-06-08 23:53:13 -04:00
Gary Huang 0bc9d9c08d remove string constants in advice class and comment fixes 2018-06-08 23:53:13 -04:00
Gary Huang b694ecdf79 add version scan and rename instrumentation classes 2018-06-08 23:53:13 -04:00
Gary Huang 3d61d839c8 make commands with no return values (void or Mono<Void>) to finish spans early in order to record command ran.
added support for cancellation of commands in async and reactive APIs.
since flux is a stream of events, when the stream is complete, the number of events emitted are recorded in the tag db.command.results.count
created helper class LettuceInstrumentationUtil
2018-06-08 23:53:13 -04:00
Gary Huang bfdf4c858a lettuce reactive api for mono publishers completed. 2018-06-08 23:53:13 -04:00
Gary Huang 989a259ec2 Fix code with suggestions from Tyler regarding previous commit.
no longer includes the command argument if the redis command being called is AUTH since it contains sensitive information.
2018-06-08 23:53:13 -04:00
Gary Huang ae1d9d7c52 complete async unit test and changes to implementation
using handleAsync with BiFunction because lettuce futures almost never throw exceptions on futures

improvement changes to come
2018-06-08 23:53:13 -04:00
Gary Huang 1213311418 lettuce redis client sync and async api instrumentation with sync unit tests complete 2018-06-08 23:53:13 -04:00
Tyler Benson c475ac688c Add additional Elasticsearch tests for Spring Data. 2018-06-09 10:59:08 +10:00
Tyler Benson 206de0fb54 Add some more missing helper classes 2018-06-09 10:59:08 +10:00
Tyler Benson c2771753b7 Suggested changes. 2018-06-08 16:38:51 +10:00
Nikolay Martynov 28c7c30af4 [HttpUrlConnection] Fix HEAD responses
Explain to ratpack that sending body for HEAD requests is not up to
spec [1] and seems to be confusing to clients. This resolves 'Keep-Alive'
mistery and makes disabling 'keepa-live' unnecessary.

[1] https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
2018-06-07 12:24:16 -04:00
Tyler Benson 9ff09b93e1 Refactor HttpUrlConnection Instrumentation
getOutputStream shouldn’t call getResponseCode, otherwise the request gets screwed up.
2018-06-07 16:25:38 +10:00
Nikolay Martynov 93a41b5064 Fix some typos 2018-06-06 20:47:49 -04:00
Nikolay Martynov 7a280d7e13 Fix some code formatting 2018-06-06 17:11:17 -04:00
Nikolay Martynov ca6fabfd64 Move code from `WrapAdviceUtils` to `DatadogWrapper` 2018-06-06 16:42:23 -04:00
Nikolay Martynov 5f82776fc5 Use assertTraces api in slick tests 2018-06-06 16:41:03 -04:00
Nikolay Martynov 30d640e7ee Provide way to use CLosure to assert tags values 2018-06-06 16:40:34 -04:00
Nikolay Martynov b1bc24dd67 Raname function in TraceAssert to match actual action 2018-06-06 16:40:12 -04:00
Nikolay Martynov d6aaee1bee Check for java concurrent classes prefixes match only if class was not whitelisted already 2018-06-06 15:51:30 -04:00
Nikolay Martynov bbcc2882ab Use test set instead of submodule for Slick tests 2018-06-06 15:49:39 -04:00
Nikolay Martynov 2e5007fbd8 Fix function name in TagsAssert 2018-06-06 10:43:23 -04:00
Nikolay Martynov f92af7d860 Fix Scala Slick instrumentation 2018-06-06 10:43:23 -04:00
Nikolay Martynov b8fdb4acd5 Added Scala Slick test that fails due to executor wrapping problems 2018-06-06 10:43:19 -04:00
Nikolay Martynov 3187f7350f Simplify Calldepththreadlocalmap to not use atomic integers 2018-06-06 09:31:25 -04:00
Tyler Benson d235618a6e Add instrumentation for Java’s UrlConnection
For HttpUrlConnection, trace propagation headers are added to the outgoing request.

Due to the awkward design of the API, the ability to instrument in a natural way was limited, thus the main points instrumented are the get{Input,Output}Stream methods.
2018-06-06 09:12:48 +10:00
Tyler Benson 979aa7838f Clear TEST_WRITER before waiting to ensure accurate timing
Otherwise the waitForTraces at the end might be triggered prematurely.
2018-06-05 14:49:17 +10:00
Tyler Benson 5fe58dc344
Merge pull request #338 from DataDog/tyler/es-meta
Add additional metadata to ES client calls.
2018-05-30 11:58:41 +10:00
Tyler Benson 682fb01350 Wait for initial traces before starting tests
to ensure a late reported trace doesn’t mess up the test assertions.
2018-05-30 11:40:31 +10:00
Tyler Benson b58a7db7a7 Add another helper used by Joiner. 2018-05-30 10:31:00 +10:00
Tyler Benson b5346e89a3 Begin 0.10.0 2018-05-29 18:41:37 +10:00
Tyler Benson cda86ca4ea Wait for cluster to be ready before starting test. 2018-05-29 15:40:05 +10:00
Tyler Benson f9ab729f92 Forgot to inject the helpers. 2018-05-25 20:27:57 +10:00
Tyler Benson de74eb1938 Add additional metadata to ES client calls. 2018-05-25 13:58:44 +10:00
Tyler Benson c03e894870
Merge pull request #329 from DataDog/tyler/elasticsearch-client
Elasticsearch Client Instrumentation
2018-05-24 09:03:20 +10:00
Andrew Kent d9dce43728
Merge pull request #332 from DataDog/ark/playtime
Enable Play, Hystrix, and JaxRS Client Instrumentation
2018-05-22 18:56:00 -07:00
Tyler Benson ec9ce10ca1 Limit version compatibility. 2018-05-23 11:29:13 +10:00
Tyler Benson 0cf8fef8d8 Elasticsearch Instrumentation 2018-05-23 11:29:13 +10:00
Tyler Benson 164689eeb3
Merge pull request #333 from DataDog/tyler/force-latest-tests
Fix version upgrading for latestDepTests
2018-05-23 11:21:28 +10:00
Andrew Kent d90de5741f Enable JaxRS Instrumentation 2018-05-22 18:02:30 -07:00
Andrew Kent 066aac761c Enable Hystrix 2018-05-22 18:01:43 -07:00
Andrew Kent c11de3003d Enable Play Instrumentation 2018-05-22 15:29:46 -07:00
Tyler Benson ce0ef409d8
Merge pull request #330 from DataDog/tyler/aws-versions
Fix AWS version ranges
2018-05-23 07:30:16 +10:00
Tyler Benson 03392f2138
Merge pull request #331 from DataDog/tyler/move-apache-httpclient-tests
Move Apache HttpClient tests to instrumentation
2018-05-23 07:28:04 +10:00
Andrew Kent 176b071300
Merge pull request #324 from DataDog/ark/default_service_name
Remove unknown feature-flag and use generic names as fallback
2018-05-22 14:19:50 -07:00
Andrew Kent c7a5bdcdbb Remove unknown feature-flag and use generic names as fallback 2018-05-22 14:01:08 -07:00
Tyler Benson 5d6fe43dc6 TestHttpServer is no longer used
Move the java version ignores.
2018-05-22 17:12:54 +10:00
Tyler Benson e481092f25 Avoid occasional false test failure. 2018-05-22 16:47:36 +10:00
Tyler Benson a3a1b08fa9 Fix AWS version ranges 2018-05-22 16:45:01 +10:00
Tyler Benson 3781a71e5f Fix version upgrading for latestDepTests 2018-05-22 15:14:11 +10:00
Andrew Kent b7570c7152
Merge pull request #319 from DataDog/ark/muzzle-integration-branch
muzzle integration branch
2018-05-21 11:32:00 -07:00
Andrew Kent 217dd411de Disable muzzle 2018-05-21 10:58:30 -07:00
Andrew Kent 1641c54448 Skip instrumenting slick thread pool 2018-05-18 11:17:27 -07:00
Andrew Kent 0bd7a62464 Flags, Fields, Methods, and builder logic for References 2018-05-18 10:45:05 -07:00
Andrew Kent bf70b3031b Cache classloaders for reference checking 2018-05-18 10:45:05 -07:00
Andrew Kent ad7f6a5e71 Generate at compile-time and lazy-load reference matchers 2018-05-18 10:45:05 -07:00
Andrew Kent 98b44c1dfb Remove ReplaceIsSafeVisitor 2018-05-18 10:45:05 -07:00
Andrew Kent 08df3cef35 Use bytebuddy plugin to add safety checks to instrumentation 2018-05-18 10:45:05 -07:00
Tyler Benson 024d414844 Move Apache HttpClient tests to instrumentation
And add latest test.
2018-05-18 12:01:12 +10:00
Gary Huang 71396aee01 Moved JDBC integration tests to become unit tests 2018-05-15 16:37:55 -04:00
Gary Huang 38dfe96eb0 Fixed java 9 JDBC integration test issue.
Refactored JDBCMaps's getDBInfo utlity function because JDBCMaps is in the bootstrap classloader, and the use of java.sql.* packages in getDBInfo is failing because java.sql.* packages are part of the platform classloader in java 9.
2018-05-15 16:18:55 -04:00
Gary Huang 4b71a21487 Fixed unknown database issue from JDBC Connection constructor exception
Client will now report correct database if JDBC connection is recovered from exception.
2018-05-15 16:18:55 -04:00
Tyler Benson b154f8366c Begin 0.8.1 2018-05-15 12:27:02 +10:00
Tyler Benson dc814aeb6d Fix tests. 2018-05-11 15:19:30 +10:00
Tyler Benson 46878d24d3 Name service based on servlet context
This only applies if a service name hasn’t been set or is empty.

This is particularly useful for environments that deploy multiple war files to the same app server.
2018-05-11 13:59:03 +10:00
Tyler Benson 632d9b8da4
Merge pull request #316 from DataDog/tyler/async-flag
Enable async tracking for some non-async frameworks
2018-05-11 09:30:17 +10:00
Tyler Benson d5d24c50c7 Replace @Unroll’s with a rule to always unroll. 2018-05-10 15:24:59 +10:00
Tyler Benson 9e5e48b96e Add a feature flag to gate the name change 2018-05-10 10:54:15 +10:00
Tyler Benson b9db79e251 Enable async tracking for some non-async frameworks
This will allow tracing of additional work being done inside the servlet context.
2018-05-09 10:40:50 +10:00
Tyler Benson 5e6259233e Remove some other unknowns. 2018-05-08 16:29:55 +10:00
Tyler Benson bae79a0c3a Rename unknown to database to reduce confusion 2018-05-08 16:16:02 +10:00
Tyler Benson 9606dd3467 Fix TraceConfig tests 2018-05-08 11:00:59 +10:00
Tyler Benson 2dd36c2b79 Give more distinct names and migrate test style 2018-05-08 10:03:22 +10:00
Tyler Benson c81615b255 Allow configuration of additional trace annotations
List can be set to empty if needed.
2018-05-07 13:27:23 +10:00
Tyler Benson 441bf59e80 Add tracing for other annotations and config
Allows for specifying additional traced methods via env var or sys prop config.
2018-05-07 13:27:23 +10:00
Tyler Benson c1ac920e97 Change from enum to object for map lookup key 2018-05-07 13:25:08 +10:00
Tyler Benson 122c482dd5 Queue should block. 2018-05-07 13:23:29 +10:00
Tyler Benson 9a52303376 Apply jacoco to every java project
Some projects have ignores/whitelists, but generally coverage is pretty high.

AFAIK, this doesn’t really capture instrumentation test coverage though.
2018-05-04 16:23:32 +10:00
Tyler Benson 7dfdc2d50e Missing autoservice annotation processor 2018-05-04 15:38:41 +10:00
Tyler Benson 114f088766 Fix TLS usage 2018-05-04 14:05:06 +10:00
Tyler Benson f35e2e6ebe Remove various warnings and other cleanup
Also upgrade some plugins.
2018-05-04 14:05:06 +10:00
Tyler Benson 7c4d42ef8a Add additional test task for testing latest versions of a dependency 2018-05-04 14:04:30 +10:00
Tyler Benson 660dfc834c It actually isn’t compatable until 1.4 2018-05-04 14:03:48 +10:00
Tyler Benson 2561e72824 Do we do want to ignore proxies?
If so, we have to change the test to be compatible.
2018-05-04 14:03:48 +10:00
Tyler Benson be34eaf032 Instrument HystrixCommand and HystrixThreadPool 2018-05-04 14:03:48 +10:00
Tyler Benson 6baf09588e
Merge pull request #302 from DataDog/tyler/jdbc-depth
Prevent JDBC spans from nesting
2018-05-04 08:07:28 +10:00
Tyler Benson 30b70d8939 Prevent case where call depth might never be reset 2018-05-03 14:53:33 +10:00
Tyler Benson 732f0f2185
Merge pull request #299 from DataDog/tyler/aws-naming
Use different resource naming for aws spans
2018-05-03 13:59:09 +10:00
Tyler Benson 82353ad7d1 Use different resource naming for aws spans
Uses the pattern of `service.operation`, so for an S3 get object request, the resource name would be `S3.GetObject`.
2018-05-03 13:38:16 +10:00
Tyler Benson 84b7080860 Fix AgentInstaller ignores and @Trace naming 2018-05-03 13:03:53 +10:00
Tyler Benson 0f77ccd797
Merge pull request #297 from DataDog/tyler/kafka
Add null check to kafka
2018-05-02 08:06:37 +10:00
Tyler Benson 6f64b0e021 Prevent JDBC spans from nesting 2018-05-01 11:18:53 +10:00