diff --git a/assets/spring-sleuth/pom.xml b/assets/spring-sleuth/pom.xml index 756c8fe9e..aa9ed363f 100644 --- a/assets/spring-sleuth/pom.xml +++ b/assets/spring-sleuth/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 3.4.5 + 4.1.0 @@ -42,6 +42,11 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-webmvc-test + test + diff --git a/assets/spring-sleuth/src/test/java/hello/HelloControllerTest.java b/assets/spring-sleuth/src/test/java/hello/HelloControllerTest.java index fe6c8c3e2..c14e84ce7 100644 --- a/assets/spring-sleuth/src/test/java/hello/HelloControllerTest.java +++ b/assets/spring-sleuth/src/test/java/hello/HelloControllerTest.java @@ -1,14 +1,19 @@ package hello; import static org.hamcrest.Matchers.containsString; +import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import io.micrometer.tracing.Span; +import io.micrometer.tracing.TraceContext; +import io.micrometer.tracing.Tracer; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc; +import org.springframework.test.context.bean.override.mockito.MockitoBean; import org.springframework.test.web.servlet.MockMvc; @SpringBootTest @@ -18,8 +23,20 @@ class HelloControllerTest { @Autowired private MockMvc mvc; + @MockitoBean + private Tracer tracer; + @Test void returnsTraceAndSpanDetailsAndParentFromTraceparent() throws Exception { + Span span = org.mockito.Mockito.mock(Span.class); + TraceContext traceContext = org.mockito.Mockito.mock(TraceContext.class); + + when(tracer.currentSpan()).thenReturn(span); + when(span.context()).thenReturn(traceContext); + when(traceContext.traceId()).thenReturn("4bf92f3577b34da6a3ce929d0e0e4736"); + when(traceContext.spanId()).thenReturn("00f067aa0ba902b7"); + when(traceContext.sampled()).thenReturn(Boolean.TRUE); + mvc.perform(get("/") .header("traceparent", "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01")) .andExpect(status().isOk())