90 lines
2.7 KiB
Groovy
90 lines
2.7 KiB
Groovy
/*
|
|
* Copyright The OpenTelemetry Authors
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package server
|
|
|
|
import static io.opentelemetry.api.trace.SpanKind.INTERNAL
|
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.ERROR
|
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.EXCEPTION
|
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.QUERY_PARAM
|
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.REDIRECT
|
|
import static io.opentelemetry.instrumentation.test.base.HttpServerTest.ServerEndpoint.SUCCESS
|
|
|
|
import io.opentelemetry.api.trace.StatusCode
|
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
|
import io.opentelemetry.instrumentation.test.asserts.TraceAssert
|
|
import io.opentelemetry.instrumentation.test.base.HttpServerTest
|
|
import io.opentelemetry.sdk.trace.data.SpanData
|
|
import java.util.function.Supplier
|
|
import play.BuiltInComponents
|
|
import play.Mode
|
|
import play.mvc.Results
|
|
import play.routing.RoutingDsl
|
|
import play.server.Server
|
|
|
|
class PlayServerTest extends HttpServerTest<Server> implements AgentTestTrait {
|
|
@Override
|
|
Server startServer(int port) {
|
|
return Server.forRouter(Mode.TEST, port) { BuiltInComponents components ->
|
|
RoutingDsl.fromComponents(components)
|
|
.GET(SUCCESS.getPath()).routeTo({
|
|
controller(SUCCESS) {
|
|
Results.status(SUCCESS.getStatus(), SUCCESS.getBody())
|
|
}
|
|
} as Supplier)
|
|
.GET(QUERY_PARAM.getPath()).routeTo({
|
|
controller(QUERY_PARAM) {
|
|
Results.status(QUERY_PARAM.getStatus(), QUERY_PARAM.getBody())
|
|
}
|
|
} as Supplier)
|
|
.GET(REDIRECT.getPath()).routeTo({
|
|
controller(REDIRECT) {
|
|
Results.found(REDIRECT.getBody())
|
|
}
|
|
} as Supplier)
|
|
.GET(ERROR.getPath()).routeTo({
|
|
controller(ERROR) {
|
|
Results.status(ERROR.getStatus(), ERROR.getBody())
|
|
}
|
|
} as Supplier)
|
|
.GET(EXCEPTION.getPath()).routeTo({
|
|
controller(EXCEPTION) {
|
|
throw new Exception(EXCEPTION.getBody())
|
|
}
|
|
} as Supplier)
|
|
.build()
|
|
}
|
|
}
|
|
|
|
@Override
|
|
void stopServer(Server server) {
|
|
server.stop()
|
|
}
|
|
|
|
@Override
|
|
boolean hasHandlerSpan(ServerEndpoint endpoint) {
|
|
true
|
|
}
|
|
|
|
@Override
|
|
void handlerSpan(TraceAssert trace, int index, Object parent, String method = "GET", ServerEndpoint endpoint = SUCCESS) {
|
|
trace.span(index) {
|
|
name "play.request"
|
|
kind INTERNAL
|
|
childOf((SpanData) parent)
|
|
if (endpoint == EXCEPTION) {
|
|
status StatusCode.ERROR
|
|
errorEvent(Exception, EXCEPTION.body)
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
String expectedServerSpanName(ServerEndpoint endpoint) {
|
|
return "akka.request"
|
|
}
|
|
|
|
}
|