Merge pull request #435 from DataDog/tyler/jax-rs-improvements
Add span for jax-rs representing controller execution
This commit is contained in:
commit
2893eb6035
|
@ -1,6 +1,7 @@
|
||||||
package datadog.trace.instrumentation.jaxrs;
|
package datadog.trace.instrumentation.jaxrs;
|
||||||
|
|
||||||
import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType;
|
import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType;
|
||||||
|
import static io.opentracing.log.Fields.ERROR_OBJECT;
|
||||||
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
|
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
|
||||||
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
|
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
|
||||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||||
|
@ -9,10 +10,12 @@ import com.google.auto.service.AutoService;
|
||||||
import datadog.trace.agent.tooling.Instrumenter;
|
import datadog.trace.agent.tooling.Instrumenter;
|
||||||
import datadog.trace.api.DDTags;
|
import datadog.trace.api.DDTags;
|
||||||
import io.opentracing.Scope;
|
import io.opentracing.Scope;
|
||||||
|
import io.opentracing.Span;
|
||||||
import io.opentracing.tag.Tags;
|
import io.opentracing.tag.Tags;
|
||||||
import io.opentracing.util.GlobalTracer;
|
import io.opentracing.util.GlobalTracer;
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -55,11 +58,11 @@ public final class JaxRsAnnotationsInstrumentation extends Instrumenter.Default
|
||||||
public static class JaxRsAnnotationsAdvice {
|
public static class JaxRsAnnotationsAdvice {
|
||||||
|
|
||||||
@Advice.OnMethodEnter(suppress = Throwable.class)
|
@Advice.OnMethodEnter(suppress = Throwable.class)
|
||||||
public static void nameSpan(@Advice.This final Object obj, @Advice.Origin final Method method) {
|
public static Scope nameSpan(@Advice.Origin final Method method) {
|
||||||
// TODO: do we need caching for this?
|
|
||||||
|
|
||||||
|
// TODO: do we need caching for this?
|
||||||
final LinkedList<Path> classPaths = new LinkedList<>();
|
final LinkedList<Path> classPaths = new LinkedList<>();
|
||||||
Class<?> target = obj.getClass();
|
Class<?> target = method.getDeclaringClass();
|
||||||
while (target != Object.class) {
|
while (target != Object.class) {
|
||||||
final Path annotation = target.getAnnotation(Path.class);
|
final Path annotation = target.getAnnotation(Path.class);
|
||||||
if (annotation != null) {
|
if (annotation != null) {
|
||||||
|
@ -93,6 +96,40 @@ public final class JaxRsAnnotationsInstrumentation extends Instrumenter.Default
|
||||||
scope.span().setTag(DDTags.RESOURCE_NAME, resourceName);
|
scope.span().setTag(DDTags.RESOURCE_NAME, resourceName);
|
||||||
Tags.COMPONENT.set(scope.span(), "jax-rs");
|
Tags.COMPONENT.set(scope.span(), "jax-rs");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now create a span representing the method execution.
|
||||||
|
|
||||||
|
final Class<?> clazz = method.getDeclaringClass();
|
||||||
|
final String methodName = method.getName();
|
||||||
|
|
||||||
|
String className = clazz.getSimpleName();
|
||||||
|
if (className.isEmpty()) {
|
||||||
|
className = clazz.getName();
|
||||||
|
if (clazz.getPackage() != null) {
|
||||||
|
final String pkgName = clazz.getPackage().getName();
|
||||||
|
if (!pkgName.isEmpty()) {
|
||||||
|
className = clazz.getName().replace(pkgName, "").substring(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final String operationName = className + "." + methodName;
|
||||||
|
|
||||||
|
return GlobalTracer.get()
|
||||||
|
.buildSpan(operationName)
|
||||||
|
.withTag(Tags.COMPONENT.getKey(), "jax-rs-controller")
|
||||||
|
.startActive(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
|
||||||
|
public static void stopSpan(
|
||||||
|
@Advice.Enter final Scope scope, @Advice.Thrown final Throwable throwable) {
|
||||||
|
if (throwable != null) {
|
||||||
|
final Span span = scope.span();
|
||||||
|
Tags.ERROR.set(span, true);
|
||||||
|
span.log(Collections.singletonMap(ERROR_OBJECT, throwable));
|
||||||
|
}
|
||||||
|
scope.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import datadog.opentracing.DDSpanContext
|
|
||||||
import datadog.trace.agent.test.AgentTestRunner
|
import datadog.trace.agent.test.AgentTestRunner
|
||||||
import io.opentracing.util.GlobalTracer
|
import io.opentracing.tag.Tags
|
||||||
|
|
||||||
import javax.ws.rs.DELETE
|
import javax.ws.rs.DELETE
|
||||||
import javax.ws.rs.GET
|
import javax.ws.rs.GET
|
||||||
|
@ -10,26 +9,43 @@ import javax.ws.rs.POST
|
||||||
import javax.ws.rs.PUT
|
import javax.ws.rs.PUT
|
||||||
import javax.ws.rs.Path
|
import javax.ws.rs.Path
|
||||||
|
|
||||||
|
import static datadog.trace.agent.test.ListWriterAssert.assertTraces
|
||||||
|
import static datadog.trace.agent.test.TestUtils.runUnderTrace
|
||||||
|
|
||||||
class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
|
|
||||||
def "span named '#resourceName' from annotations on class"() {
|
def "span named '#name' from annotations on class"() {
|
||||||
setup:
|
setup:
|
||||||
def scope = GlobalTracer.get().buildSpan("test").startActive(false)
|
runUnderTrace("test") {
|
||||||
DDSpanContext spanContext = scope.span().context()
|
obj.call()
|
||||||
obj.call()
|
}
|
||||||
|
|
||||||
expect:
|
expect:
|
||||||
spanContext.resourceName == resourceName
|
assertTraces(TEST_WRITER, 1) {
|
||||||
|
trace(0, 2) {
|
||||||
cleanup:
|
span(0) {
|
||||||
scope.close()
|
operationName "test"
|
||||||
|
resourceName name
|
||||||
|
parent()
|
||||||
|
tags {
|
||||||
|
"$Tags.COMPONENT.key" "jax-rs"
|
||||||
|
defaultTags()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
span(1) {
|
||||||
|
operationName "${className}.call"
|
||||||
|
resourceName "${className}.call"
|
||||||
|
childOf span(0)
|
||||||
|
tags {
|
||||||
|
"$Tags.COMPONENT.key" "jax-rs-controller"
|
||||||
|
defaultTags()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
where:
|
where:
|
||||||
resourceName | obj
|
name | obj
|
||||||
"test" | new Jax() {
|
|
||||||
// invalid because no annotations
|
|
||||||
void call() {}
|
|
||||||
}
|
|
||||||
"/a" | new Jax() {
|
"/a" | new Jax() {
|
||||||
@Path("/a")
|
@Path("/a")
|
||||||
void call() {}
|
void call() {}
|
||||||
|
@ -39,10 +55,6 @@ class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
@Path("/b")
|
@Path("/b")
|
||||||
void call() {}
|
void call() {}
|
||||||
}
|
}
|
||||||
"test" | new InterfaceWithPath() {
|
|
||||||
// invalid because no annotations
|
|
||||||
void call() {}
|
|
||||||
}
|
|
||||||
"POST /c" | new InterfaceWithPath() {
|
"POST /c" | new InterfaceWithPath() {
|
||||||
@POST
|
@POST
|
||||||
@Path("/c")
|
@Path("/c")
|
||||||
|
@ -52,10 +64,6 @@ class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
@HEAD
|
@HEAD
|
||||||
void call() {}
|
void call() {}
|
||||||
}
|
}
|
||||||
"test" | new AbstractClassWithPath() {
|
|
||||||
// invalid because no annotations
|
|
||||||
void call() {}
|
|
||||||
}
|
|
||||||
"POST /abstract/d" | new AbstractClassWithPath() {
|
"POST /abstract/d" | new AbstractClassWithPath() {
|
||||||
@POST
|
@POST
|
||||||
@Path("/d")
|
@Path("/d")
|
||||||
|
@ -65,10 +73,6 @@ class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
@PUT
|
@PUT
|
||||||
void call() {}
|
void call() {}
|
||||||
}
|
}
|
||||||
"test" | new ChildClassWithPath() {
|
|
||||||
// invalid because no annotations
|
|
||||||
void call() {}
|
|
||||||
}
|
|
||||||
"OPTIONS /abstract/child/e" | new ChildClassWithPath() {
|
"OPTIONS /abstract/child/e" | new ChildClassWithPath() {
|
||||||
@OPTIONS
|
@OPTIONS
|
||||||
@Path("/e")
|
@Path("/e")
|
||||||
|
@ -79,6 +83,43 @@ class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
void call() {}
|
void call() {}
|
||||||
}
|
}
|
||||||
"POST /abstract/child" | new ChildClassWithPath()
|
"POST /abstract/child" | new ChildClassWithPath()
|
||||||
|
|
||||||
|
className = getName(obj.class)
|
||||||
|
}
|
||||||
|
|
||||||
|
def "no annotations has no effect"() {
|
||||||
|
setup:
|
||||||
|
runUnderTrace("test") {
|
||||||
|
obj.call()
|
||||||
|
}
|
||||||
|
|
||||||
|
expect:
|
||||||
|
assertTraces(TEST_WRITER, 1) {
|
||||||
|
trace(0, 1) {
|
||||||
|
span(0) {
|
||||||
|
operationName "test"
|
||||||
|
resourceName "test"
|
||||||
|
tags {
|
||||||
|
defaultTags()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
where:
|
||||||
|
obj | _
|
||||||
|
new Jax() {
|
||||||
|
void call() {}
|
||||||
|
} | _
|
||||||
|
new InterfaceWithPath() {
|
||||||
|
void call() {}
|
||||||
|
} | _
|
||||||
|
new AbstractClassWithPath() {
|
||||||
|
void call() {}
|
||||||
|
} | _
|
||||||
|
new ChildClassWithPath() {
|
||||||
|
void call() {}
|
||||||
|
} | _
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Jax {
|
interface Jax {
|
||||||
|
@ -102,4 +143,18 @@ class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||||
@POST
|
@POST
|
||||||
void call() {}
|
void call() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def getName(Class clazz) {
|
||||||
|
String className = clazz.getSimpleName()
|
||||||
|
if (className.isEmpty()) {
|
||||||
|
className = clazz.getName()
|
||||||
|
if (clazz.getPackage() != null) {
|
||||||
|
final String pkgName = clazz.getPackage().getName()
|
||||||
|
if (!pkgName.isEmpty()) {
|
||||||
|
className = clazz.getName().replace(pkgName, "").substring(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return className
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,12 +58,14 @@ public final class JSPInstrumentation extends Instrumenter.Default {
|
||||||
public static class HttpJspPageAdvice {
|
public static class HttpJspPageAdvice {
|
||||||
|
|
||||||
@Advice.OnMethodEnter(suppress = Throwable.class)
|
@Advice.OnMethodEnter(suppress = Throwable.class)
|
||||||
public static Scope startSpan(@Advice.Argument(0) final HttpServletRequest req) {
|
public static Scope startSpan(
|
||||||
|
@Advice.This final Object obj, @Advice.Argument(0) final HttpServletRequest req) {
|
||||||
final Scope scope =
|
final Scope scope =
|
||||||
GlobalTracer.get()
|
GlobalTracer.get()
|
||||||
.buildSpan("jsp.render")
|
.buildSpan("jsp.render")
|
||||||
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
|
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
|
||||||
.withTag(DDTags.SPAN_TYPE, DDSpanTypes.WEB_SERVLET)
|
.withTag(DDTags.SPAN_TYPE, DDSpanTypes.WEB_SERVLET)
|
||||||
|
.withTag("span.origin.type", obj.getClass().getSimpleName())
|
||||||
.withTag("servlet.context", req.getContextPath())
|
.withTag("servlet.context", req.getContextPath())
|
||||||
.startActive(true);
|
.startActive(true);
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -114,6 +115,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" jspClassName
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -175,6 +177,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -191,6 +194,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "getQuery_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -249,6 +253,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -265,6 +270,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "post_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -320,6 +326,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
errorTags(JasperException, String)
|
errorTags(JasperException, String)
|
||||||
|
@ -337,6 +344,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" jspClassName
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
errorTags(exceptionClass, errorMessage)
|
errorTags(exceptionClass, errorMessage)
|
||||||
|
@ -398,6 +406,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -414,6 +423,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "includeHtml_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -468,6 +478,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -484,6 +495,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "includeMulti_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -500,6 +512,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "javaLoopH2_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -533,6 +546,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "javaLoopH2_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -604,6 +618,7 @@ class JSPInstrumentationBasicTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
errorTags(JasperException, String)
|
errorTags(JasperException, String)
|
||||||
|
|
|
@ -96,6 +96,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -112,6 +113,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" jspForwardFromClassName
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -128,6 +130,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" jspForwardDestClassName
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.forwardOrigin" "/$forwardFromFileName"
|
"jsp.forwardOrigin" "/$forwardFromFileName"
|
||||||
"jsp.requestURL" baseUrl + "/$forwardDestFileName"
|
"jsp.requestURL" baseUrl + "/$forwardDestFileName"
|
||||||
|
@ -205,6 +208,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -221,6 +225,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "forwardToHtml_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -275,6 +280,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -291,6 +297,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "forwardToIncludeMulti_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -307,6 +314,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "includeMulti_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp"
|
"jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp"
|
||||||
"jsp.requestURL" baseUrl + "/includes/includeMulti.jsp"
|
"jsp.requestURL" baseUrl + "/includes/includeMulti.jsp"
|
||||||
|
@ -324,6 +332,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "javaLoopH2_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp"
|
"jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp"
|
||||||
"jsp.requestURL" baseUrl + "/includes/includeMulti.jsp"
|
"jsp.requestURL" baseUrl + "/includes/includeMulti.jsp"
|
||||||
|
@ -358,6 +367,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "javaLoopH2_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp"
|
"jsp.forwardOrigin" "/forwards/forwardToIncludeMulti.jsp"
|
||||||
"jsp.requestURL" baseUrl + "/includes/includeMulti.jsp"
|
"jsp.requestURL" baseUrl + "/includes/includeMulti.jsp"
|
||||||
|
@ -447,6 +457,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -463,6 +474,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "forwardToJspForward_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -479,6 +491,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "forwardToSimpleJava_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.forwardOrigin" "/forwards/forwardToJspForward.jsp"
|
"jsp.forwardOrigin" "/forwards/forwardToJspForward.jsp"
|
||||||
"jsp.requestURL" baseUrl + "/forwards/forwardToSimpleJava.jsp"
|
"jsp.requestURL" baseUrl + "/forwards/forwardToSimpleJava.jsp"
|
||||||
|
@ -496,6 +509,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "loop_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.forwardOrigin" "/forwards/forwardToJspForward.jsp"
|
"jsp.forwardOrigin" "/forwards/forwardToJspForward.jsp"
|
||||||
"jsp.requestURL" baseUrl + "/common/loop.jsp"
|
"jsp.requestURL" baseUrl + "/common/loop.jsp"
|
||||||
|
@ -585,6 +599,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
errorTags(JasperException, String)
|
errorTags(JasperException, String)
|
||||||
|
@ -602,6 +617,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "forwardToCompileError_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
errorTags(JasperException, String)
|
errorTags(JasperException, String)
|
||||||
|
@ -677,6 +693,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"http.status_code" 404
|
"http.status_code" 404
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -693,6 +710,7 @@ class JSPInstrumentationForwardTests extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "jsp-http-servlet"
|
"component" "jsp-http-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "forwardToNonExistent_jsp"
|
||||||
"servlet.context" "/$jspWebappContext"
|
"servlet.context" "/$jspWebappContext"
|
||||||
"jsp.requestURL" reqUrl
|
"jsp.requestURL" reqUrl
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
|
|
@ -19,9 +19,9 @@ import net.bytebuddy.asm.Advice;
|
||||||
public class Servlet2Advice {
|
public class Servlet2Advice {
|
||||||
|
|
||||||
@Advice.OnMethodEnter(suppress = Throwable.class)
|
@Advice.OnMethodEnter(suppress = Throwable.class)
|
||||||
public static Scope startSpan(@Advice.Argument(0) final ServletRequest req) {
|
public static Scope startSpan(
|
||||||
if (GlobalTracer.get().scopeManager().active() != null
|
@Advice.This final Object servlet, @Advice.Argument(0) final ServletRequest req) {
|
||||||
|| !(req instanceof HttpServletRequest)) {
|
if (GlobalTracer.get().activeSpan() != null || !(req instanceof HttpServletRequest)) {
|
||||||
// Tracing might already be applied by the FilterChain. If so ignore this.
|
// Tracing might already be applied by the FilterChain. If so ignore this.
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,7 @@ public class Servlet2Advice {
|
||||||
.withTag(Tags.HTTP_URL.getKey(), httpServletRequest.getRequestURL().toString())
|
.withTag(Tags.HTTP_URL.getKey(), httpServletRequest.getRequestURL().toString())
|
||||||
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
|
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
|
||||||
.withTag(DDTags.SPAN_TYPE, DDSpanTypes.WEB_SERVLET)
|
.withTag(DDTags.SPAN_TYPE, DDSpanTypes.WEB_SERVLET)
|
||||||
|
.withTag("span.origin.type", servlet.getClass().getName())
|
||||||
.withTag("servlet.context", httpServletRequest.getContextPath())
|
.withTag("servlet.context", httpServletRequest.getContextPath())
|
||||||
.startActive(true);
|
.startActive(true);
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,7 @@ class JettyServlet2Test extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
|
"span.origin.type" "TestServlet2\$Sync"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
"servlet.context" "/ctx"
|
"servlet.context" "/ctx"
|
||||||
if (auth) {
|
if (auth) {
|
||||||
|
@ -129,6 +130,7 @@ class JettyServlet2Test extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "TestServlet2\$Sync"
|
||||||
"servlet.context" "/ctx"
|
"servlet.context" "/ctx"
|
||||||
errorTags(RuntimeException, "some $path error")
|
errorTags(RuntimeException, "some $path error")
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -169,6 +171,7 @@ class JettyServlet2Test extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "TestServlet2\$Sync"
|
||||||
"servlet.context" "/ctx"
|
"servlet.context" "/ctx"
|
||||||
defaultTags()
|
defaultTags()
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,8 @@ import net.bytebuddy.asm.Advice;
|
||||||
public class Servlet3Advice {
|
public class Servlet3Advice {
|
||||||
|
|
||||||
@Advice.OnMethodEnter(suppress = Throwable.class)
|
@Advice.OnMethodEnter(suppress = Throwable.class)
|
||||||
public static Scope startSpan(@Advice.Argument(0) final ServletRequest req) {
|
public static Scope startSpan(
|
||||||
|
@Advice.This final Object servlet, @Advice.Argument(0) final ServletRequest req) {
|
||||||
if (GlobalTracer.get().activeSpan() != null || !(req instanceof HttpServletRequest)) {
|
if (GlobalTracer.get().activeSpan() != null || !(req instanceof HttpServletRequest)) {
|
||||||
// Tracing might already be applied by the FilterChain. If so ignore this.
|
// Tracing might already be applied by the FilterChain. If so ignore this.
|
||||||
return null;
|
return null;
|
||||||
|
@ -44,6 +45,7 @@ public class Servlet3Advice {
|
||||||
.withTag(Tags.HTTP_URL.getKey(), httpServletRequest.getRequestURL().toString())
|
.withTag(Tags.HTTP_URL.getKey(), httpServletRequest.getRequestURL().toString())
|
||||||
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
|
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER)
|
||||||
.withTag(DDTags.SPAN_TYPE, DDSpanTypes.WEB_SERVLET)
|
.withTag(DDTags.SPAN_TYPE, DDSpanTypes.WEB_SERVLET)
|
||||||
|
.withTag("span.origin.type", servlet.getClass().getName())
|
||||||
.withTag("servlet.context", httpServletRequest.getContextPath())
|
.withTag("servlet.context", httpServletRequest.getContextPath())
|
||||||
.startActive(false);
|
.startActive(false);
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,7 @@ class JettyServlet3Test extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
|
"span.origin.type" "TestServlet3\$$origin"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
if (auth) {
|
if (auth) {
|
||||||
|
@ -99,11 +100,11 @@ class JettyServlet3Test extends AgentTestRunner {
|
||||||
}
|
}
|
||||||
|
|
||||||
where:
|
where:
|
||||||
path | expectedResponse | auth
|
path | expectedResponse | auth | origin
|
||||||
"async" | "Hello Async" | false
|
"async" | "Hello Async" | false | "Async"
|
||||||
"sync" | "Hello Sync" | false
|
"sync" | "Hello Sync" | false | "Sync"
|
||||||
"auth/async" | "Hello Async" | true
|
"auth/async" | "Hello Async" | true | "Async"
|
||||||
"auth/sync" | "Hello Sync" | true
|
"auth/sync" | "Hello Sync" | true | "Sync"
|
||||||
}
|
}
|
||||||
|
|
||||||
def "servlet instrumentation clears state after async request"() {
|
def "servlet instrumentation clears state after async request"() {
|
||||||
|
@ -157,6 +158,7 @@ class JettyServlet3Test extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "TestServlet3\$Sync"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
errorTags(RuntimeException, "some $path error")
|
errorTags(RuntimeException, "some $path error")
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -197,6 +199,7 @@ class JettyServlet3Test extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" "TestServlet3\$Sync"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
"error" true
|
"error" true
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
|
|
@ -6,6 +6,7 @@ import datadog.trace.api.DDSpanTypes
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import org.apache.catalina.Context
|
import org.apache.catalina.Context
|
||||||
|
import org.apache.catalina.core.ApplicationFilterChain
|
||||||
import org.apache.catalina.startup.Tomcat
|
import org.apache.catalina.startup.Tomcat
|
||||||
import org.apache.tomcat.JarScanFilter
|
import org.apache.tomcat.JarScanFilter
|
||||||
import org.apache.tomcat.JarScanType
|
import org.apache.tomcat.JarScanType
|
||||||
|
@ -84,6 +85,7 @@ class TomcatServlet3Test extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" ApplicationFilterChain.name
|
||||||
"servlet.context" "/my-context"
|
"servlet.context" "/my-context"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -124,6 +126,7 @@ class TomcatServlet3Test extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" ApplicationFilterChain.name
|
||||||
"servlet.context" "/my-context"
|
"servlet.context" "/my-context"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
errorTags(RuntimeException, "some $path error")
|
errorTags(RuntimeException, "some $path error")
|
||||||
|
@ -165,6 +168,7 @@ class TomcatServlet3Test extends AgentTestRunner {
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"span.type" DDSpanTypes.WEB_SERVLET
|
"span.type" DDSpanTypes.WEB_SERVLET
|
||||||
|
"span.origin.type" ApplicationFilterChain.name
|
||||||
"servlet.context" "/my-context"
|
"servlet.context" "/my-context"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
"error" true
|
"error" true
|
||||||
|
|
|
@ -43,6 +43,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -70,6 +71,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -101,6 +103,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 404
|
"http.status_code" 404
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -120,6 +123,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 404
|
"http.status_code" 404
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -153,6 +157,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
errorTags NestedServletException, "Request processing failed; nested exception is java.lang.RuntimeException: qwerty"
|
errorTags NestedServletException, "Request processing failed; nested exception is java.lang.RuntimeException: qwerty"
|
||||||
|
@ -173,6 +178,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "GET"
|
"http.method" "GET"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 500
|
"http.status_code" 500
|
||||||
"error" true
|
"error" true
|
||||||
|
@ -201,6 +207,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "POST"
|
"http.method" "POST"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 200
|
"http.status_code" 200
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
@ -234,6 +241,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "POST"
|
"http.method" "POST"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 400
|
"http.status_code" 400
|
||||||
"error" false
|
"error" false
|
||||||
|
@ -257,6 +265,7 @@ class SpringBootBasedTest extends AgentTestRunner {
|
||||||
"http.method" "POST"
|
"http.method" "POST"
|
||||||
"span.kind" "server"
|
"span.kind" "server"
|
||||||
"span.type" "web"
|
"span.type" "web"
|
||||||
|
"span.origin.type" "org.apache.catalina.core.ApplicationFilterChain"
|
||||||
"component" "java-web-servlet"
|
"component" "java-web-servlet"
|
||||||
"http.status_code" 400
|
"http.status_code" 400
|
||||||
defaultTags()
|
defaultTags()
|
||||||
|
|
Loading…
Reference in New Issue