ArquillianRestTest.groovy 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. * SPDX-License-Identifier: Apache-2.0
  4. */
  5. import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
  6. import io.opentelemetry.testing.internal.armeria.client.WebClient
  7. import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse
  8. import org.jboss.arquillian.container.test.api.Deployment
  9. import org.jboss.arquillian.container.test.api.RunAsClient
  10. import org.jboss.arquillian.spock.ArquillianSputnik
  11. import org.jboss.arquillian.test.api.ArquillianResource
  12. import org.jboss.shrinkwrap.api.ShrinkWrap
  13. import org.jboss.shrinkwrap.api.asset.EmptyAsset
  14. import org.jboss.shrinkwrap.api.spec.WebArchive
  15. import org.junit.runner.RunWith
  16. import spock.lang.Unroll
  17. import test.CdiRestResource
  18. import test.EjbRestResource
  19. import test.RestApplication
  20. import static io.opentelemetry.api.trace.SpanKind.SERVER
  21. @RunWith(ArquillianSputnik)
  22. @RunAsClient
  23. abstract class ArquillianRestTest extends AgentInstrumentationSpecification {
  24. static WebClient client = WebClient.of()
  25. @ArquillianResource
  26. static URI url
  27. @Deployment
  28. static WebArchive createDeployment() {
  29. return ShrinkWrap.create(WebArchive)
  30. .addClass(RestApplication)
  31. .addClass(CdiRestResource)
  32. .addClass(EjbRestResource)
  33. .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
  34. }
  35. def getContextRoot() {
  36. return url.getPath()
  37. }
  38. @Unroll
  39. def "test #path"() {
  40. when:
  41. AggregatedHttpResponse response = client.get(url.resolve(path).toString()).aggregate().join()
  42. then:
  43. response.status().code() == 200
  44. response.contentUtf8() == "hello"
  45. and:
  46. assertTraces(1) {
  47. trace(0, 2) {
  48. span(0) {
  49. name getContextRoot() + path
  50. kind SERVER
  51. hasNoParent()
  52. }
  53. span(1) {
  54. name className + ".hello"
  55. childOf span(0)
  56. }
  57. }
  58. }
  59. where:
  60. path | className
  61. "rest-app/cdiHello" | "CdiRestResource"
  62. "rest-app/ejbHello" | "EjbRestResource"
  63. }
  64. }