From bbfe5a680079e15026f6d942d91028c8efc4adda Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 17 May 2024 16:21:36 +0200 Subject: [PATCH] port 8080 was blocked (#11375) --- .../RestClientSmokeTestController.java | 35 ------------------- .../smoketest/OtelSpringStarterSmokeTest.java | 20 ++++++++++- .../AbstractOtelSpringStarterSmokeTest.java | 24 ++++++------- .../OtelSpringStarterSmokeTestController.java | 24 +------------ 4 files changed, 30 insertions(+), 73 deletions(-) delete mode 100644 smoke-tests-otel-starter/spring-boot-3/src/main/java/io/opentelemetry/spring/smoketest/RestClientSmokeTestController.java diff --git a/smoke-tests-otel-starter/spring-boot-3/src/main/java/io/opentelemetry/spring/smoketest/RestClientSmokeTestController.java b/smoke-tests-otel-starter/spring-boot-3/src/main/java/io/opentelemetry/spring/smoketest/RestClientSmokeTestController.java deleted file mode 100644 index c3ad474d90..0000000000 --- a/smoke-tests-otel-starter/spring-boot-3/src/main/java/io/opentelemetry/spring/smoketest/RestClientSmokeTestController.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.spring.smoketest; - -import java.util.Optional; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestClient; - -@RestController -public class RestClientSmokeTestController { - - public static final String REST_CLIENT = "/rest-client"; - private final Optional restClient; - - public RestClientSmokeTestController( - RestClient.Builder restClientBuilder, OtelSpringStarterSmokeTestController controller) { - restClient = controller.getRootUri().map(uri -> restClientBuilder.baseUrl(uri).build()); - } - - @GetMapping(REST_CLIENT) - public String restClient() { - return restClient - .map( - c -> - c.get() - .uri(OtelSpringStarterSmokeTestController.PING) - .retrieve() - .body(String.class)) - .orElseThrow(() -> new IllegalStateException("RestClient not available")); - } -} diff --git a/smoke-tests-otel-starter/spring-boot-3/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java b/smoke-tests-otel-starter/spring-boot-3/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java index 18333f2c82..f283d799c4 100644 --- a/smoke-tests-otel-starter/spring-boot-3/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/spring-boot-3/src/test/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTest.java @@ -5,8 +5,13 @@ package io.opentelemetry.spring.smoketest; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.web.client.RestClient; @SpringBootTest( classes = { @@ -21,8 +26,21 @@ import org.springframework.boot.test.context.SpringBootTest; }) class OtelSpringStarterSmokeTest extends AbstractOtelSpringStarterSmokeTest { + @Autowired RestClient.Builder restClientBuilder; + @LocalServerPort private int port; + @Test void restClient() { - assertClient(OtelSpringStarterSmokeTestController.REST_CLIENT); + testing.clearAllExportedData(); + + RestClient client = restClientBuilder.baseUrl("http://localhost:" + port).build(); + assertThat( + client + .get() + .uri(OtelSpringStarterSmokeTestController.PING) + .retrieve() + .body(String.class)) + .isEqualTo("pong"); + assertClient(); } } diff --git a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java index 09cf8ca8c5..ba9a3a9d4b 100644 --- a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java +++ b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/AbstractOtelSpringStarterSmokeTest.java @@ -35,12 +35,15 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.event.EventListener; import org.springframework.core.annotation.Order; import org.springframework.core.env.Environment; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.client.RestTemplate; /** * This test class enforces the order of the tests to make sure that {@link #shouldSendTelemetry()}, @@ -55,6 +58,8 @@ class AbstractOtelSpringStarterSmokeTest extends AbstractSpringStarterSmokeTest @Autowired private PropagationProperties propagationProperties; @Autowired private OtelResourceProperties otelResourceProperties; @Autowired private OtlpExporterProperties otlpExporterProperties; + @Autowired private RestTemplateBuilder restTemplateBuilder; + @LocalServerPort private int port; @Configuration(proxyBeanMethods = false) static class TestConfiguration { @@ -168,26 +173,17 @@ class AbstractOtelSpringStarterSmokeTest extends AbstractSpringStarterSmokeTest @Test void restTemplate() { - assertClient(OtelSpringStarterSmokeTestController.REST_TEMPLATE); - } - - protected void assertClient(String url) { testing.clearAllExportedData(); - testRestTemplate.getForObject(url, String.class); + RestTemplate restTemplate = restTemplateBuilder.rootUri("http://localhost:" + port).build(); + restTemplate.getForObject(OtelSpringStarterSmokeTestController.PING, String.class); + assertClient(); + } + protected void assertClient() { testing.waitAndAssertTraces( traceAssert -> traceAssert.hasSpansSatisfyingExactly( - clientSpan -> - clientSpan - .hasKind(SpanKind.CLIENT) - .hasAttributesSatisfying( - a -> assertThat(a.get(UrlAttributes.URL_FULL)).endsWith(url)), - serverSpan -> - serverSpan - .hasKind(SpanKind.SERVER) - .hasAttribute(HttpAttributes.HTTP_ROUTE, url), nestedClientSpan -> nestedClientSpan .hasKind(SpanKind.CLIENT) diff --git a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTestController.java b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTestController.java index 903b451dd0..891666797b 100644 --- a/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTestController.java +++ b/smoke-tests-otel-starter/spring-boot-common/src/main/java/io/opentelemetry/spring/smoketest/OtelSpringStarterSmokeTestController.java @@ -8,12 +8,8 @@ package io.opentelemetry.spring.smoketest; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.metrics.LongHistogram; import io.opentelemetry.api.metrics.Meter; -import java.util.Optional; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestTemplate; @RestController public class OtelSpringStarterSmokeTestController { @@ -24,21 +20,10 @@ public class OtelSpringStarterSmokeTestController { public static final String TEST_HISTOGRAM = "histogram-test-otel-spring-starter"; public static final String METER_SCOPE_NAME = "scope"; private final LongHistogram histogram; - private final Optional restTemplate; - private final Optional server; - public OtelSpringStarterSmokeTestController( - OpenTelemetry openTelemetry, - RestTemplateBuilder restTemplateBuilder, - Optional server) { - this.server = server; + public OtelSpringStarterSmokeTestController(OpenTelemetry openTelemetry) { Meter meter = openTelemetry.getMeter(METER_SCOPE_NAME); histogram = meter.histogramBuilder(TEST_HISTOGRAM).ofLongs().build(); - restTemplate = getRootUri().map(uri -> restTemplateBuilder.rootUri(uri).build()); - } - - public Optional getRootUri() { - return server.map(s -> "http://localhost:" + s.getWebServer().getPort()); } @GetMapping(PING) @@ -46,11 +31,4 @@ public class OtelSpringStarterSmokeTestController { histogram.record(10); return "pong"; } - - @GetMapping(REST_TEMPLATE) - public String restTemplate() { - return restTemplate - .map(t -> t.getForObject(PING, String.class)) - .orElseThrow(() -> new IllegalStateException("RestTemplate not available")); - } }