SpringRestTemplateTest.groovy 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. * SPDX-License-Identifier: Apache-2.0
  4. */
  5. import io.opentelemetry.instrumentation.test.AgentTestTrait
  6. import io.opentelemetry.instrumentation.test.base.HttpClientTest
  7. import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest
  8. import org.springframework.http.HttpEntity
  9. import org.springframework.http.HttpHeaders
  10. import org.springframework.http.HttpMethod
  11. import org.springframework.http.client.ClientHttpRequestFactory
  12. import org.springframework.http.client.SimpleClientHttpRequestFactory
  13. import org.springframework.web.client.ResourceAccessException
  14. import org.springframework.web.client.RestTemplate
  15. import spock.lang.Shared
  16. class SpringRestTemplateTest extends HttpClientTest<HttpEntity<String>> implements AgentTestTrait {
  17. @Shared
  18. ClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory()
  19. @Shared
  20. RestTemplate restTemplate = new RestTemplate(factory)
  21. def setupSpec() {
  22. factory.connectTimeout = CONNECT_TIMEOUT_MS
  23. }
  24. @Override
  25. HttpEntity<String> buildRequest(String method, URI uri, Map<String, String> headers) {
  26. def httpHeaders = new HttpHeaders()
  27. headers.each { httpHeaders.put(it.key, [it.value]) }
  28. return new HttpEntity<String>(httpHeaders)
  29. }
  30. @Override
  31. int sendRequest(HttpEntity<String> request, String method, URI uri, Map<String, String> headers) {
  32. try {
  33. return restTemplate.exchange(uri, HttpMethod.valueOf(method), request, String)
  34. .statusCode
  35. .value()
  36. } catch (ResourceAccessException exception) {
  37. throw exception.getCause()
  38. }
  39. }
  40. @Override
  41. void sendRequestWithCallback(HttpEntity<String> request, String method, URI uri, Map<String, String> headers = [:], AbstractHttpClientTest.RequestResult requestResult) {
  42. try {
  43. restTemplate.execute(uri, HttpMethod.valueOf(method), { req ->
  44. req.getHeaders().putAll(request.getHeaders())
  45. }, { response ->
  46. requestResult.complete(response.statusCode.value())
  47. })
  48. } catch (ResourceAccessException exception) {
  49. requestResult.complete(exception.getCause())
  50. }
  51. }
  52. @Override
  53. int maxRedirects() {
  54. 20
  55. }
  56. @Override
  57. Integer responseCodeOnRedirectError() {
  58. return 302
  59. }
  60. }