Update Ratpack latest test
This commit is contained in:
parent
6ccb0d71d8
commit
0e83304a87
|
@ -1,7 +1,3 @@
|
|||
import static datadog.trace.agent.test.server.http.TestHttpServer.distributedRequestTrace
|
||||
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
|
||||
import static datadog.trace.agent.test.utils.PortUtils.UNUSABLE_PORT
|
||||
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import datadog.trace.agent.test.utils.OkHttpUtils
|
||||
import datadog.trace.api.DDSpanTypes
|
||||
|
@ -12,8 +8,6 @@ import io.opentracing.Scope
|
|||
import io.opentracing.Span
|
||||
import io.opentracing.tag.Tags
|
||||
import io.opentracing.util.GlobalTracer
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import java.util.regex.Pattern
|
||||
import okhttp3.HttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
|
@ -26,21 +20,55 @@ import ratpack.http.client.HttpClient
|
|||
import ratpack.path.PathBinding
|
||||
import ratpack.test.exec.ExecHarness
|
||||
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import java.util.regex.Pattern
|
||||
|
||||
import static datadog.trace.agent.test.server.http.TestHttpServer.distributedRequestTrace
|
||||
import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer
|
||||
import static datadog.trace.agent.test.utils.PortUtils.UNUSABLE_PORT
|
||||
|
||||
class RatpackTest extends AgentTestRunner {
|
||||
|
||||
OkHttpClient client = OkHttpUtils.client()
|
||||
|
||||
def "test path call"() {
|
||||
def "test bindings for #path"() {
|
||||
setup:
|
||||
def app = GroovyEmbeddedApp.ratpack {
|
||||
handlers {
|
||||
get {
|
||||
context.render("success")
|
||||
prefix("a") {
|
||||
all {
|
||||
context.render(context.get(PathBinding).description)
|
||||
}
|
||||
}
|
||||
prefix("b/::\\d+") {
|
||||
all {
|
||||
context.render(context.get(PathBinding).description)
|
||||
}
|
||||
}
|
||||
prefix("c/:val?") {
|
||||
all {
|
||||
context.render(context.get(PathBinding).description)
|
||||
}
|
||||
}
|
||||
prefix("d/:val") {
|
||||
all {
|
||||
context.render(context.get(PathBinding).description)
|
||||
}
|
||||
}
|
||||
prefix("e/:val?:\\d+") {
|
||||
all {
|
||||
context.render(context.get(PathBinding).description)
|
||||
}
|
||||
}
|
||||
prefix("f/:val:\\d+") {
|
||||
all {
|
||||
context.render(context.get(PathBinding).description)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
def request = new Request.Builder()
|
||||
.url(app.address.toURL())
|
||||
.url(HttpUrl.get(app.address).newBuilder().addPathSegments(path).build())
|
||||
.get()
|
||||
.build()
|
||||
|
||||
|
@ -49,12 +77,12 @@ class RatpackTest extends AgentTestRunner {
|
|||
|
||||
then:
|
||||
resp.code() == 200
|
||||
resp.body.string() == "success"
|
||||
resp.body.string() == route
|
||||
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
resourceName "GET /"
|
||||
resourceName "GET /$route"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "netty.request"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
|
@ -65,7 +93,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 200
|
||||
"$Tags.HTTP_URL.key" "$app.address"
|
||||
"$Tags.HTTP_URL.key" "${app.address.resolve(path)}"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_HOST_IPV4.key" "127.0.0.1"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
|
@ -73,7 +101,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
span(1) {
|
||||
resourceName "GET /"
|
||||
resourceName "GET /$route"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "ratpack.handler"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
|
@ -84,7 +112,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 200
|
||||
"$Tags.HTTP_URL.key" "$app.address"
|
||||
"$Tags.HTTP_URL.key" "${app.address.resolve(path)}"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
defaultTags()
|
||||
|
@ -92,85 +120,35 @@ class RatpackTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "test path with bindings call"() {
|
||||
setup:
|
||||
def app = GroovyEmbeddedApp.ratpack {
|
||||
handlers {
|
||||
prefix(":foo/:bar?") {
|
||||
get("baz") {ctx ->
|
||||
context.render(ctx.get(PathBinding).description)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
def request = new Request.Builder()
|
||||
.url(HttpUrl.get(app.address).newBuilder().addPathSegments("a/b/baz").build())
|
||||
.get()
|
||||
.build()
|
||||
|
||||
when:
|
||||
def resp = client.newCall(request).execute()
|
||||
|
||||
then:
|
||||
resp.code() == 200
|
||||
resp.body.string() == ":foo/:bar?/baz"
|
||||
|
||||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
resourceName "GET /:foo/:bar?/baz"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "netty.request"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
parent()
|
||||
errored false
|
||||
tags {
|
||||
"$Tags.COMPONENT.key" "netty"
|
||||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 200
|
||||
"$Tags.HTTP_URL.key" "${app.address}a/b/baz"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_HOST_IPV4.key" "127.0.0.1"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
defaultTags()
|
||||
}
|
||||
}
|
||||
span(1) {
|
||||
resourceName "GET /:foo/:bar?/baz"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "ratpack.handler"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
childOf(span(0))
|
||||
errored false
|
||||
tags {
|
||||
"$Tags.COMPONENT.key" "ratpack"
|
||||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 200
|
||||
"$Tags.HTTP_URL.key" "${app.address}a/b/baz"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
defaultTags()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
where:
|
||||
path | route
|
||||
"a" | "a"
|
||||
"b/123" | "b/::\\d+"
|
||||
"c" | "c/:val?"
|
||||
"c/123" | "c/:val?"
|
||||
"c/foo" | "c/:val?"
|
||||
"d/123" | "d/:val"
|
||||
"d/foo" | "d/:val"
|
||||
"e" | "e/:val?:\\d+"
|
||||
"e/123" | "e/:val?:\\d+"
|
||||
"e/foo" | "e/:val?:\\d+"
|
||||
"f/123" | "f/:val:\\d+"
|
||||
}
|
||||
|
||||
def "test handler error response"() {
|
||||
setup:
|
||||
def app = GroovyEmbeddedApp.ratpack {
|
||||
handlers {
|
||||
get {
|
||||
0 / 0
|
||||
prefix("handler-error") {
|
||||
all {
|
||||
0 / 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
def request = new Request.Builder()
|
||||
.url(app.address.toURL())
|
||||
.url(app.address.resolve("/handler-error?query=param").toURL())
|
||||
.get()
|
||||
.build()
|
||||
when:
|
||||
|
@ -181,7 +159,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
resourceName "GET /"
|
||||
resourceName "GET /handler-error"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "netty.request"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
|
@ -192,7 +170,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 500
|
||||
"$Tags.HTTP_URL.key" "$app.address"
|
||||
"$Tags.HTTP_URL.key" "${app.address.resolve('handler-error')}"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_HOST_IPV4.key" "127.0.0.1"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
|
@ -201,7 +179,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
span(1) {
|
||||
resourceName "GET /"
|
||||
resourceName "GET /handler-error"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "ratpack.handler"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
|
@ -212,7 +190,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 500
|
||||
"$Tags.HTTP_URL.key" "$app.address"
|
||||
"$Tags.HTTP_URL.key" "${app.address.resolve('handler-error')}"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
errorTags(HandlerException, Pattern.compile("java.lang.ArithmeticException: Division( is)? undefined"))
|
||||
|
@ -227,7 +205,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
setup:
|
||||
def app = GroovyEmbeddedApp.ratpack {
|
||||
handlers {
|
||||
get {
|
||||
get("promise-error") {
|
||||
Promise.async {
|
||||
0 / 0
|
||||
}.then {
|
||||
|
@ -237,7 +215,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
def request = new Request.Builder()
|
||||
.url(app.address.toURL())
|
||||
.url(app.address.resolve("promise-error?query=param").toURL())
|
||||
.get()
|
||||
.build()
|
||||
when:
|
||||
|
@ -248,7 +226,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
assertTraces(1) {
|
||||
trace(0, 2) {
|
||||
span(0) {
|
||||
resourceName "GET /"
|
||||
resourceName "GET /promise-error"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "netty.request"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
|
@ -259,7 +237,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 500
|
||||
"$Tags.HTTP_URL.key" "$app.address"
|
||||
"$Tags.HTTP_URL.key" "${app.address.resolve('promise-error')}"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_HOST_IPV4.key" "127.0.0.1"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
|
@ -268,7 +246,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
span(1) {
|
||||
resourceName "GET /"
|
||||
resourceName "GET /promise-error"
|
||||
serviceName "unnamed-java-app"
|
||||
operationName "ratpack.handler"
|
||||
spanType DDSpanTypes.HTTP_SERVER
|
||||
|
@ -279,7 +257,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
"$Tags.SPAN_KIND.key" Tags.SPAN_KIND_SERVER
|
||||
"$Tags.HTTP_METHOD.key" "GET"
|
||||
"$Tags.HTTP_STATUS.key" 500
|
||||
"$Tags.HTTP_URL.key" "$app.address"
|
||||
"$Tags.HTTP_URL.key" "${app.address.resolve('promise-error')}"
|
||||
"$Tags.PEER_HOSTNAME.key" "$app.address.host"
|
||||
"$Tags.PEER_PORT.key" Integer
|
||||
"$Tags.ERROR.key" true
|
||||
|
@ -294,7 +272,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
setup:
|
||||
def app = GroovyEmbeddedApp.ratpack {
|
||||
handlers {
|
||||
get {
|
||||
all {
|
||||
context.render(Promise.sync {
|
||||
return "fail " + 0 / 0
|
||||
})
|
||||
|
@ -302,7 +280,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
def request = new Request.Builder()
|
||||
.url(app.address.toURL())
|
||||
.url(app.address.resolve("?query=param").toURL())
|
||||
.get()
|
||||
.build()
|
||||
when:
|
||||
|
@ -374,13 +352,13 @@ class RatpackTest extends AgentTestRunner {
|
|||
|
||||
def app = GroovyEmbeddedApp.ratpack {
|
||||
handlers {
|
||||
get {HttpClient httpClient ->
|
||||
get { HttpClient httpClient ->
|
||||
// 1st internal http client call to nested
|
||||
httpClient.get(HttpUrlBuilder.base(external.address).path("nested").build())
|
||||
.map {it.body.text}
|
||||
.flatMap {t ->
|
||||
.map { it.body.text }
|
||||
.flatMap { t ->
|
||||
// make a 2nd http request and concatenate the two bodies together
|
||||
httpClient.get(HttpUrlBuilder.base(external.address).path("nested2").build()) map {t + it.body.text}
|
||||
httpClient.get(HttpUrlBuilder.base(external.address).path("nested2").build()) map { t + it.body.text }
|
||||
}
|
||||
.then {
|
||||
context.render(it)
|
||||
|
@ -452,7 +430,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
serviceName "unnamed-java-app"
|
||||
operationName "netty.client.request"
|
||||
spanType DDSpanTypes.HTTP_CLIENT
|
||||
childOf(span(3))
|
||||
childOf(span(1))
|
||||
errored false
|
||||
tags {
|
||||
"$Tags.COMPONENT.key" "netty-client"
|
||||
|
@ -496,9 +474,9 @@ class RatpackTest extends AgentTestRunner {
|
|||
|
||||
def app = GroovyEmbeddedApp.ratpack {
|
||||
handlers {
|
||||
get {HttpClient httpClient ->
|
||||
get { HttpClient httpClient ->
|
||||
httpClient.get(badAddress)
|
||||
.map {it.body.text}
|
||||
.map { it.body.text }
|
||||
.then {
|
||||
context.render(it)
|
||||
}
|
||||
|
@ -681,7 +659,7 @@ class RatpackTest extends AgentTestRunner {
|
|||
scope.span().setBaggageItem("test-baggage", "foo")
|
||||
ParallelBatch.of(testPromise(), testPromise())
|
||||
.yield()
|
||||
.map({now ->
|
||||
.map({ now ->
|
||||
// close the scope now that we got the baggage inside the promises
|
||||
scope.close()
|
||||
return now
|
||||
|
|
Loading…
Reference in New Issue