This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/main by this push: new b9954acb99 CXF-8969: Update to Brave 6 (#1894) b9954acb99 is described below commit b9954acb99f53a223d9ce94a243286df1246010c Author: Andriy Redko <drr...@gmail.com> AuthorDate: Sat Jun 15 08:58:51 2024 -0400 CXF-8969: Update to Brave 6 (#1894) --- .../release/samples/jax_rs/tracing_brave/pom.xml | 12 +- .../demo/jaxrs/tracing/server/CatalogTracing.java | 9 +- distribution/src/main/release/samples/pom.xml | 3 +- .../tracing/brave/AbstractBraveClientProvider.java | 42 ++---- .../cxf/tracing/brave/AbstractBraveProvider.java | 25 ++-- .../cxf/tracing/brave/BraveClientFeature.java | 3 +- .../tracing/brave/BraveClientStartInterceptor.java | 2 +- .../tracing/brave/BraveClientStopInterceptor.java | 8 +- .../org/apache/cxf/tracing/brave/BraveFeature.java | 1 - .../cxf/tracing/brave/BraveStopInterceptor.java | 3 +- ...panParser.java => HttpClientRequestParser.java} | 19 +-- ...anParser.java => HttpClientResponseParser.java} | 21 ++- .../tracing/brave/internal/HttpAdapterFactory.java | 18 ++- .../brave/internal/HttpClientAdapterFactory.java | 101 ++++++++----- .../brave/internal/HttpServerAdapterFactory.java | 65 +++++---- .../tracing/brave/jaxrs/BraveClientProvider.java | 9 +- .../cxf/tracing/brave/jaxrs/BraveFeature.java | 3 - .../cxf/tracing/brave/jaxrs/BraveProvider.java | 3 +- .../apache/cxf/tracing/brave/BraveTraceTest.java | 24 +-- parent/pom.xml | 10 +- ...Test.java => SpringJaxrsObservabilityTest.java} | 11 +- ...t.java => SpringJaxrsWebObservabilityTest.java} | 11 +- .../spring/boot/SpringJaxwsObservabilityTest.java | 7 +- .../java/org/apache/cxf/systest/brave/HasSpan.java | 21 ++- .../cxf/systest/brave/IsAnnotationContaining.java | 9 +- ...{TestSpanReporter.java => TestSpanHandler.java} | 15 +- .../brave/jaxrs/AbstractBraveTracingTest.java | 162 ++++++++++----------- .../brave/jaxws/AbstractBraveTracingTest.java | 74 +++++----- .../jaxrs/tracing/brave/BraveTracingTest.java | 4 +- .../tracing/micrometer/MicrometerTracingTest.java | 4 +- .../cxf/systest/jaxws/tracing/brave/BookStore.java | 4 +- .../jaxws/tracing/brave/BraveTracingTest.java | 6 +- .../tracing/micrometer/MicrometerTracingTest.java | 6 +- 33 files changed, 379 insertions(+), 336 deletions(-) diff --git a/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml b/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml index 6d67420847..d5276f4d21 100644 --- a/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml +++ b/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml @@ -194,7 +194,17 @@ <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-sender-okhttp3</artifactId> - <version>2.17.1</version> + <version>${cxf.zipkin-reporter.version}</version> + </dependency> + <dependency> + <groupId>io.zipkin.reporter2</groupId> + <artifactId>zipkin-reporter</artifactId> + <version>${cxf.zipkin-reporter.version}</version> + </dependency> + <dependency> + <groupId>io.zipkin.reporter2</groupId> + <artifactId>zipkin-reporter-brave</artifactId> + <version>${cxf.zipkin-reporter.version}</version> </dependency> <dependency> <groupId>io.zipkin.brave</groupId> diff --git a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogTracing.java b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogTracing.java index 818ffe08c1..eac0b7175c 100644 --- a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogTracing.java +++ b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogTracing.java @@ -25,12 +25,13 @@ import brave.http.HttpTracing; import brave.propagation.ThreadLocalCurrentTraceContext; import zipkin2.Span; import zipkin2.reporter.AsyncReporter; -import zipkin2.reporter.Sender; +import zipkin2.reporter.BytesMessageSender; +import zipkin2.reporter.brave.ZipkinSpanHandler; import zipkin2.reporter.okhttp3.OkHttpSender; public class CatalogTracing implements AutoCloseable { private volatile AsyncReporter<Span> reporter; - private volatile Sender sender; + private volatile BytesMessageSender sender; private volatile HttpTracing httpTracing; private final String serviceName; @@ -74,10 +75,10 @@ public class CatalogTracing implements AutoCloseable { .currentTraceContext( ThreadLocalCurrentTraceContext .newBuilder() - .addScopeDecorator(MDCScopeDecorator.create()) + .addScopeDecorator(MDCScopeDecorator.get()) .build() ) - .spanReporter(reporter) + .addSpanHandler(ZipkinSpanHandler.create(reporter)) .build(); return HttpTracing.create(tracing); diff --git a/distribution/src/main/release/samples/pom.xml b/distribution/src/main/release/samples/pom.xml index 8369a38872..f26a610721 100644 --- a/distribution/src/main/release/samples/pom.xml +++ b/distribution/src/main/release/samples/pom.xml @@ -44,7 +44,8 @@ <cxf.lucene.version>9.10.0</cxf.lucene.version> <cxf.olingo.server.version>5.0.0</cxf.olingo.server.version> <cxf.aspectj.version>1.9.22.1</cxf.aspectj.version> - <cxf.brave.version>5.17.0</cxf.brave.version> + <cxf.brave.version>6.0.3</cxf.brave.version> + <cxf.zipkin-reporter.version>3.4.0</cxf.zipkin-reporter.version> <cxf.zest.version>2.1</cxf.zest.version> <cxf.activemq.artemis.version>2.31.0</cxf.activemq.artemis.version> <cxf.h2.version>2.2.224</cxf.h2.version> diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveClientProvider.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveClientProvider.java index 4071d0ca72..dde2101af3 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveClientProvider.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveClientProvider.java @@ -19,19 +19,16 @@ package org.apache.cxf.tracing.brave; import java.net.URI; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.logging.Logger; import brave.Span; import brave.Tracer.SpanInScope; -import brave.http.HttpClientAdapter; import brave.http.HttpClientHandler; import brave.http.HttpClientRequest; import brave.http.HttpClientResponse; import brave.http.HttpTracing; -import brave.propagation.Propagation.Setter; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.phase.PhaseInterceptorChain; import org.apache.cxf.tracing.AbstractTracingProvider; @@ -54,15 +51,10 @@ public abstract class AbstractBraveClientProvider extends AbstractTracingProvide URI uri, String method) { final Request request = HttpAdapterFactory.request(requestHeaders, uri, method); - final HttpClientAdapter<Request, ?> adapter = HttpClientAdapterFactory.create(request); + final HttpClientRequest wrapper = HttpClientAdapterFactory.create(request); - final HttpClientHandler<Request, ?> handler = HttpClientHandler.create(brave, adapter); - final Span span = handler.handleSend( - brave - .tracing() - .propagation() - .injector(inject(requestHeaders)), - request); + final HttpClientHandler<HttpClientRequest, ?> handler = HttpClientHandler.create(brave); + final Span span = handler.handleSend(wrapper); // In case of asynchronous client invocation, the span should be detached as JAX-RS // client request / response filters are going to be executed in different threads. @@ -73,20 +65,13 @@ public abstract class AbstractBraveClientProvider extends AbstractTracingProvide return new TraceScopeHolder<TraceScope>(new TraceScope(span, scope), scope == null /* detached */); } - - private <C> Setter<C, String> inject(final Map<String, List<String>> requestHeaders) { - return (carrier, key, value) -> { - if (!requestHeaders.containsKey(key)) { - requestHeaders.put(key, Collections.singletonList(value)); - } - }; - } private boolean isAsyncInvocation() { return !PhaseInterceptorChain.getCurrentMessage().getExchange().isSynchronous(); } - protected void stopTraceSpan(final TraceScopeHolder<TraceScope> holder, final int responseStatus) { + protected void stopTraceSpan(final TraceScopeHolder<TraceScope> holder, final String method, + final URI uri, final int responseStatus) { if (holder == null) { return; } @@ -100,18 +85,19 @@ public abstract class AbstractBraveClientProvider extends AbstractTracingProvide brave.tracing().tracer().joinSpan(scope.getSpan().context()); } - final Response response = HttpAdapterFactory.response(responseStatus); - final HttpClientAdapter<?, Response> adapter = HttpClientAdapterFactory.create(response); + final Response response = HttpAdapterFactory.response(method, uri.toASCIIString(), responseStatus); + final HttpClientResponse wrapper = HttpClientAdapterFactory.create(response); - final HttpClientHandler<?, Response> handler = HttpClientHandler.create(brave, adapter); - handler.handleReceive(response, null, scope.getSpan()); + final HttpClientHandler<?, HttpClientResponse> handler = HttpClientHandler.create(brave); + handler.handleReceive(wrapper, scope.getSpan()); } finally { scope.close(); } } } - protected void stopTraceSpan(final TraceScopeHolder<TraceScope> holder, final Throwable ex) { + protected void stopTraceSpan(final TraceScopeHolder<TraceScope> holder, final String method, + final URI uri, final Throwable ex) { if (holder == null) { return; } @@ -125,9 +111,9 @@ public abstract class AbstractBraveClientProvider extends AbstractTracingProvide brave.tracing().tracer().joinSpan(scope.getSpan().context()); } - final HttpClientHandler<HttpClientRequest, HttpClientResponse> handler = - HttpClientHandler.create(brave); - handler.handleReceive(null, ex, scope.getSpan()); + final HttpClientResponse wrapper = HttpClientAdapterFactory.create(method, uri, ex); + final HttpClientHandler<?, HttpClientResponse> handler = HttpClientHandler.create(brave); + handler.handleReceive(wrapper, scope.getSpan()); } finally { scope.close(); } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveProvider.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveProvider.java index d991f780aa..ea332a3b81 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveProvider.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/AbstractBraveProvider.java @@ -25,8 +25,9 @@ import java.util.logging.Logger; import brave.Span; import brave.Tracer.SpanInScope; -import brave.http.HttpServerAdapter; import brave.http.HttpServerHandler; +import brave.http.HttpServerRequest; +import brave.http.HttpServerResponse; import brave.http.HttpTracing; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.phase.PhaseInterceptorChain; @@ -50,16 +51,10 @@ public abstract class AbstractBraveProvider extends AbstractTracingProvider { URI uri, String method) { final Request request = HttpAdapterFactory.request(requestHeaders, uri, method); - final HttpServerAdapter<Request, ?> adapter = HttpServerAdapterFactory.create(request); + final HttpServerRequest wrapper = HttpServerAdapterFactory.create(request); - final HttpServerHandler<Request, ?> handler = HttpServerHandler.create(brave, adapter); - - Span span = handler.handleReceive( - brave - .tracing() - .propagation() - .extractor(adapter::requestHeader), - request); + final HttpServerHandler<HttpServerRequest, ?> handler = HttpServerHandler.create(brave); + Span span = handler.handleReceive(wrapper); // If the service resource is using asynchronous processing mode, the trace // scope will be closed in another thread and as such should be detached. @@ -76,6 +71,8 @@ public abstract class AbstractBraveProvider extends AbstractTracingProvider { protected void stopTraceSpan(final Map<String, List<String>> requestHeaders, final Map<String, List<Object>> responseHeaders, + final String method, + final URI uri, final int responseStatus, final TraceScopeHolder<TraceScope> holder) { if (holder == null) { @@ -93,11 +90,11 @@ public abstract class AbstractBraveProvider extends AbstractTracingProvider { span = brave.tracing().tracer().joinSpan(scope.getSpan().context()); } - final Response response = HttpAdapterFactory.response(responseStatus); - final HttpServerAdapter<?, Response> adapter = HttpServerAdapterFactory.create(response); + final Response response = HttpAdapterFactory.response(method, uri.getPath(), responseStatus); + final HttpServerResponse wrapper = HttpServerAdapterFactory.create(response); - final HttpServerHandler<?, Response> handler = HttpServerHandler.create(brave, adapter); - handler.handleSend(response, null, scope.getSpan()); + final HttpServerHandler<?, HttpServerResponse> handler = HttpServerHandler.create(brave); + handler.handleSend(wrapper, scope.getSpan()); } finally { scope.close(); if (span != null) { diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientFeature.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientFeature.java index 8d0fd6ea40..3fbbd45e4d 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientFeature.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientFeature.java @@ -48,7 +48,8 @@ public class BraveClientFeature extends DelegatingFeature<BraveClientFeature.Por this( HttpTracing .newBuilder(tracing) - .clientParser(new HttpClientSpanParser()) + .clientRequestParser(new HttpClientRequestParser()) + .clientResponseParser(new HttpClientResponseParser()) .build() ); } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStartInterceptor.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStartInterceptor.java index d33c4ad1fe..a57d9742c8 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStartInterceptor.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStartInterceptor.java @@ -52,6 +52,6 @@ public class BraveClientStartInterceptor extends AbstractBraveClientInterceptor (TraceScopeHolder<TraceScope>)message.getExchange().get(TRACE_SPAN); final Exception ex = message.getContent(Exception.class); - super.stopTraceSpan(holder, ex); + super.stopTraceSpan(holder, (String) message.get(Message.HTTP_REQUEST_METHOD), getUri(message), ex); } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStopInterceptor.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStopInterceptor.java index 016e1087fa..c754cf508a 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStopInterceptor.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveClientStopInterceptor.java @@ -21,6 +21,7 @@ package org.apache.cxf.tracing.brave; import brave.http.HttpTracing; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.message.Message; +import org.apache.cxf.message.MessageUtils; import org.apache.cxf.phase.Phase; public class BraveClientStopInterceptor extends AbstractBraveClientInterceptor { @@ -43,6 +44,11 @@ public class BraveClientStopInterceptor extends AbstractBraveClientInterceptor { responseCode = 200; } - super.stopTraceSpan(holder, responseCode); + boolean isRequestor = MessageUtils.isRequestor(message); + final Message requestMessage = isRequestor ? message.getExchange().getOutMessage() + : message.getExchange().getInMessage(); + + super.stopTraceSpan(holder, (String) requestMessage.get(Message.HTTP_REQUEST_METHOD), + getUri(requestMessage), responseCode); } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveFeature.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveFeature.java index 90d69e7c1d..4d152a0117 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveFeature.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveFeature.java @@ -83,7 +83,6 @@ public class BraveFeature extends DelegatingFeature<BraveFeature.Portable> { private static HttpTracing newTracer(Tracing tracing) { return HttpTracing .newBuilder(tracing) - .serverParser(new HttpServerSpanParser()) .build(); } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveStopInterceptor.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveStopInterceptor.java index 7dc4c0a388..ceb6a05da7 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveStopInterceptor.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/BraveStopInterceptor.java @@ -60,6 +60,7 @@ public class BraveStopInterceptor extends AbstractBraveInterceptor { responseCode = 200; } - super.stopTraceSpan(requestHeaders, responseHeaders, responseCode, holder); + super.stopTraceSpan(requestHeaders, responseHeaders, (String)requestMessage.get(Message.HTTP_REQUEST_METHOD), + getUri(requestMessage), responseCode, holder); } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientSpanParser.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientRequestParser.java similarity index 65% rename from integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientSpanParser.java rename to integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientRequestParser.java index 7fc959761a..90d131ce2c 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientSpanParser.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientRequestParser.java @@ -18,20 +18,17 @@ */ package org.apache.cxf.tracing.brave; -import brave.http.HttpAdapter; -import brave.http.HttpClientParser; +import brave.http.HttpRequest; +import brave.http.HttpRequestParser; +import brave.propagation.TraceContext; import org.apache.cxf.common.util.StringUtils; -public class HttpClientSpanParser extends HttpClientParser { +public class HttpClientRequestParser extends HttpRequestParser.Default { @Override - protected <Req> String spanName(HttpAdapter<Req, ?> adapter, Req request) { - return buildSpanDescription(adapter.url(request), adapter.method(request)); - } - - private String buildSpanDescription(final String path, final String method) { - if (StringUtils.isEmpty(method)) { - return path; + protected String spanName(HttpRequest req, TraceContext context) { + if (StringUtils.isEmpty(req.url())) { + return req.method(); } - return method + " " + path; + return req.method() + " " + req.url(); } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpServerSpanParser.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientResponseParser.java similarity index 62% rename from integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpServerSpanParser.java rename to integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientResponseParser.java index fd60963929..94ed0eb8b0 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpServerSpanParser.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/HttpClientResponseParser.java @@ -18,20 +18,17 @@ */ package org.apache.cxf.tracing.brave; -import brave.http.HttpAdapter; -import brave.http.HttpServerParser; -import org.apache.cxf.common.util.StringUtils; +import brave.SpanCustomizer; +import brave.Tags; +import brave.http.HttpResponseParser; -public class HttpServerSpanParser extends HttpServerParser { +public class HttpClientResponseParser extends HttpResponseParser.Default { @Override - protected <Req> String spanName(HttpAdapter<Req, ?> adapter, Req request) { - return buildSpanDescription(adapter.path(request), adapter.method(request)); - } - - private String buildSpanDescription(final String path, final String method) { - if (StringUtils.isEmpty(method)) { - return path; + protected void error(int httpStatus, Throwable error, SpanCustomizer span) { + if (error != null) { + span.tag(Tags.ERROR.key(), error.getMessage()); + } else { + super.error(httpStatus, error, span); } - return method + " " + path; } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpAdapterFactory.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpAdapterFactory.java index 4941369179..176780f125 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpAdapterFactory.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpAdapterFactory.java @@ -48,12 +48,24 @@ public interface HttpAdapterFactory { } final class Response { + private final String method; + private final String path; private final Integer status; - Response(Integer status) { + Response(String method, String path, Integer status) { + this.method = method; + this.path = path; this.status = status; } + String path() { + return path; + } + + String method() { + return method; + } + Integer status() { return status; } @@ -63,7 +75,7 @@ public interface HttpAdapterFactory { return new Request(headers, uri, method); } - static Response response(Integer status) { - return new Response(status); + static Response response(String method, String path, Integer status) { + return new Response(method, path, status); } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpClientAdapterFactory.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpClientAdapterFactory.java index 7499648082..6ad39b4eee 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpClientAdapterFactory.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpClientAdapterFactory.java @@ -18,71 +18,102 @@ */ package org.apache.cxf.tracing.brave.internal; +import java.net.URI; import java.util.List; -import brave.http.HttpClientAdapter; +import brave.http.HttpClientRequest; +import brave.http.HttpClientResponse; public interface HttpClientAdapterFactory extends HttpAdapterFactory { - static HttpClientAdapter<Request, Response> create(Request request) { - return new HttpClientAdapter<Request, Response>() { + static HttpClientRequest create(Request request) { + return new HttpClientRequest() { @Override - public String method(Request request) { + public String method() { return request.method(); } @Override - public String path(Request request) { + public String path() { return request.uri().getPath(); } + @Override + public String route() { + return path(); + } + @Override - public String url(Request request) { + public String url() { return request.uri().toString(); } @Override - public String requestHeader(Request request, String name) { + public String header(String name) { List<String> value = request.headers().get(name); - - if (value != null && !value.isEmpty()) { - return value.get(0); - } - - return null; + return (value != null && !value.isEmpty()) ? value.get(0) : null; } - @Override - public Integer statusCode(Response response) { - throw new UnsupportedOperationException("The operation is not supported for request adapter"); + @Override + public Request unwrap() { + return request; + } + + @Override + public void header(String name, String value) { + request.headers().put(name, List.of(value)); } }; } - static HttpClientAdapter<Request, Response> create(Response response) { - return new HttpClientAdapter<Request, Response>() { - @Override - public String method(Request request) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); + static HttpClientResponse create(Response response) { + return new HttpClientResponse() { + @Override + public String route() { + return response.path(); } - + @Override - public String path(Request request) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); + public int statusCode() { + return response.status(); } - - @Override - public String url(Request request) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); + + @Override + public Response unwrap() { + return response; } - - @Override - public String requestHeader(Request request, String name) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); + + @Override + public String method() { + return response.method(); } + }; + } - @Override - public Integer statusCode(Response response) { - return response.status(); + static HttpClientResponse create(String method, URI uri, Throwable ex) { + return new HttpClientResponse() { + @Override + public Throwable unwrap() { + return ex; + } + + @Override + public String method() { + return method; + } + + @Override + public String route() { + return uri.toASCIIString(); + } + + @Override + public int statusCode() { + return 0; + } + + @Override + public Throwable error() { + return ex; } }; } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpServerAdapterFactory.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpServerAdapterFactory.java index 69fee0f1e4..1006c3ad59 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpServerAdapterFactory.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/internal/HttpServerAdapterFactory.java @@ -20,28 +20,34 @@ package org.apache.cxf.tracing.brave.internal; import java.util.List; -import brave.http.HttpServerAdapter; +import brave.http.HttpServerRequest; +import brave.http.HttpServerResponse; public interface HttpServerAdapterFactory extends HttpAdapterFactory { - static HttpServerAdapter<Request, Response> create(Request request) { - return new HttpServerAdapter<Request, Response>() { + static HttpServerRequest create(Request request) { + return new HttpServerRequest() { @Override - public String method(Request request) { + public String method() { return request.method(); } @Override - public String path(Request request) { + public String path() { return request.uri().getPath(); } + + @Override + public String route() { + return path(); + } @Override - public String url(Request request) { + public String url() { return request.uri().toString(); } @Override - public String requestHeader(Request request, String name) { + public String header(String name) { List<String> value = request.headers().get(name); if (value != null && !value.isEmpty()) { @@ -50,40 +56,35 @@ public interface HttpServerAdapterFactory extends HttpAdapterFactory { return null; } - - @Override - public Integer statusCode(Response response) { - throw new UnsupportedOperationException("The operation is not supported for request adapter"); + + @Override + public Request unwrap() { + return request; } }; } - static HttpServerAdapter<Request, Response> create(Response response) { - return new HttpServerAdapter<Request, Response>() { - @Override - public String method(Request request) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); + static HttpServerResponse create(Response response) { + return new HttpServerResponse() { + @Override + public String method() { + return response.method(); } - - @Override - public String path(Request request) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); + + @Override + public String route() { + return response.path(); } - + @Override - public String url(Request request) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); - } - - @Override - public String requestHeader(Request request, String name) { - throw new UnsupportedOperationException("The operation is not supported for response adapter"); - } - - @Override - public Integer statusCode(Response response) { + public int statusCode() { return response.status(); } + + @Override + public Response unwrap() { + return response; + } }; } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveClientProvider.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveClientProvider.java index 40fb949f88..db3a4be9f0 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveClientProvider.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveClientProvider.java @@ -28,7 +28,8 @@ import jakarta.ws.rs.client.ClientResponseContext; import jakarta.ws.rs.client.ClientResponseFilter; import jakarta.ws.rs.ext.Provider; import org.apache.cxf.tracing.brave.AbstractBraveClientProvider; -import org.apache.cxf.tracing.brave.HttpClientSpanParser; +import org.apache.cxf.tracing.brave.HttpClientRequestParser; +import org.apache.cxf.tracing.brave.HttpClientResponseParser; import org.apache.cxf.tracing.brave.TraceScope; @Provider @@ -39,7 +40,8 @@ public class BraveClientProvider extends AbstractBraveClientProvider this( HttpTracing .newBuilder(brave) - .clientParser(new HttpClientSpanParser()) + .clientRequestParser(new HttpClientRequestParser()) + .clientResponseParser(new HttpClientResponseParser()) .build() ); } @@ -64,6 +66,7 @@ public class BraveClientProvider extends AbstractBraveClientProvider final ClientResponseContext responseContext) throws IOException { final TraceScopeHolder<TraceScope> holder = (TraceScopeHolder<TraceScope>)requestContext.getProperty(TRACE_SPAN); - super.stopTraceSpan(holder, responseContext.getStatus()); + super.stopTraceSpan(holder, requestContext.getMethod(), + requestContext.getUri(), responseContext.getStatus()); } } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveFeature.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveFeature.java index 951333d767..798946124b 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveFeature.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveFeature.java @@ -25,7 +25,6 @@ import brave.http.HttpTracing; import jakarta.ws.rs.core.Feature; import jakarta.ws.rs.core.FeatureContext; import jakarta.ws.rs.ext.Provider; -import org.apache.cxf.tracing.brave.HttpServerSpanParser; @Provider public class BraveFeature implements Feature { @@ -39,7 +38,6 @@ public class BraveFeature implements Feature { this( HttpTracing .newBuilder(Tracing.newBuilder().localServiceName(name).build()) - .serverParser(new HttpServerSpanParser()) .build() ); } @@ -48,7 +46,6 @@ public class BraveFeature implements Feature { this( HttpTracing .newBuilder(tracing) - .serverParser(new HttpServerSpanParser()) .build() ); } diff --git a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveProvider.java b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveProvider.java index 0d4a5a6179..9c498fa2b5 100644 --- a/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveProvider.java +++ b/integration/tracing/tracing-brave/src/main/java/org/apache/cxf/tracing/brave/jaxrs/BraveProvider.java @@ -58,7 +58,8 @@ public class BraveProvider extends AbstractBraveProvider public void filter(final ContainerRequestContext requestContext, final ContainerResponseContext responseContext) throws IOException { super.stopTraceSpan(requestContext.getHeaders(), responseContext.getHeaders(), - responseContext.getStatus(), (TraceScopeHolder<TraceScope>)requestContext.getProperty(TRACE_SPAN)); + requestContext.getMethod(), requestContext.getUriInfo().getRequestUri(), + responseContext.getStatus(), (TraceScopeHolder<TraceScope>)requestContext.getProperty(TRACE_SPAN)); } @Override diff --git a/integration/tracing/tracing-brave/src/test/java/org/apache/cxf/tracing/brave/BraveTraceTest.java b/integration/tracing/tracing-brave/src/test/java/org/apache/cxf/tracing/brave/BraveTraceTest.java index 7a90ef6766..5028e225ec 100644 --- a/integration/tracing/tracing-brave/src/test/java/org/apache/cxf/tracing/brave/BraveTraceTest.java +++ b/integration/tracing/tracing-brave/src/test/java/org/apache/cxf/tracing/brave/BraveTraceTest.java @@ -23,12 +23,13 @@ import java.util.Arrays; import java.util.List; import brave.Tracing; +import brave.handler.MutableSpan; +import brave.handler.SpanHandler; +import brave.propagation.TraceContext; import org.apache.cxf.endpoint.Server; import org.apache.cxf.feature.Feature; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; -import zipkin2.Span; -import zipkin2.reporter.Reporter; import org.junit.After; import org.junit.Assert; @@ -56,7 +57,7 @@ public class BraveTraceTest { public void testMyService() { MyService myService = createProxy(clientLogging); myService.echo("test"); - for (Span span : localReporter.spans) { + for (MutableSpan span : localReporter.spans) { System.out.println(span); } Assert.assertEquals(2, localReporter.spans.size()); @@ -84,26 +85,25 @@ public class BraveTraceTest { return (MyService)factory.create(); } - private static BraveFeature createLoggingFeature(Reporter<Span> reporter) { + private static BraveFeature createLoggingFeature(SpanHandler handler) { Tracing brave = - Tracing.newBuilder().localServiceName("myservice").spanReporter(reporter).build(); + Tracing.newBuilder().localServiceName("myservice").addSpanHandler(handler).build(); return new BraveFeature(brave); } - private static BraveClientFeature createClientLoggingFeature(Reporter<Span> reporter) { + private static BraveClientFeature createClientLoggingFeature(SpanHandler handler) { Tracing brave = - Tracing.newBuilder().localServiceName("myservice").spanReporter(reporter).build(); + Tracing.newBuilder().localServiceName("myservice").addSpanHandler(handler).build(); return new BraveClientFeature(brave); } - static final class Localreporter implements Reporter<Span> { - List<Span> spans = new ArrayList<>(); + static final class Localreporter extends SpanHandler { + List<MutableSpan> spans = new ArrayList<>(); @Override - public void report(Span span) { - spans.add(span); + public boolean end(TraceContext context, MutableSpan span, Cause cause) { + return spans.add(span); } - } } diff --git a/parent/pom.xml b/parent/pom.xml index 9222f4e1c4..0b343a70d5 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -96,7 +96,7 @@ <cxf.atmosphere.version.range>[3.0, 4.0)</cxf.atmosphere.version.range> <cxf.atmosphere.version>3.0.8</cxf.atmosphere.version> <cxf.bcprov.version>1.77</cxf.bcprov.version> - <cxf.brave.version>5.17.1</cxf.brave.version> + <cxf.brave.version>6.0.3</cxf.brave.version> <cxf.cdi.api.version>4.0.1</cxf.cdi.api.version> <cxf.classgraph.version>4.8.25</cxf.classgraph.version> <cxf.classmate.version>1.5.1</cxf.classmate.version> @@ -177,8 +177,8 @@ <cxf.logback.classic.version>1.5.6</cxf.logback.classic.version> <cxf.lucene.version>9.10.0</cxf.lucene.version> <cxf.maven.core.version>3.9.6</cxf.maven.core.version> - <cxf.micrometer.version>1.13.0</cxf.micrometer.version> - <cxf.micrometer-tracing.version>1.2.6</cxf.micrometer-tracing.version> + <cxf.micrometer.version>1.13.1</cxf.micrometer.version> + <cxf.micrometer-tracing.version>1.3.1</cxf.micrometer-tracing.version> <cxf.microprofile.config.version>3.1</cxf.microprofile.config.version> <cxf.microprofile.rest.client.version>3.0.1</cxf.microprofile.rest.client.version> <cxf.microprofile.openapi.version>3.1.1</cxf.microprofile.openapi.version> @@ -191,7 +191,7 @@ <cxf.netty.tcnative.version>2.0.46.Final</cxf.netty.tcnative.version> <cxf.olingo.version>2.0.12</cxf.olingo.version> <cxf.openjpa.version>3.2.2</cxf.openjpa.version> - <cxf.opentelemetry.version>1.34.1</cxf.opentelemetry.version> + <cxf.opentelemetry.version>1.39.0</cxf.opentelemetry.version> <cxf.opentelemetry.semconv.version>1.25.0-alpha</cxf.opentelemetry.semconv.version> <cxf.opentracing.version>0.33.0</cxf.opentracing.version> <cxf.openwebbeans.version>2.0.27</cxf.openwebbeans.version> @@ -240,7 +240,7 @@ <cxf.xmlschema.version>2.3.1</cxf.xmlschema.version> <cxf.xnio.version>3.8.15.Final</cxf.xnio.version> <cxf.zest.version>2.1</cxf.zest.version> - <cxf.zipkin-reporter.version>2.17.2</cxf.zipkin-reporter.version> + <cxf.zipkin-reporter.version>3.4.0</cxf.zipkin-reporter.version> <!-- various OSGi related versions --> <cxf.aries.api.version>1.0.1</cxf.aries.api.version> diff --git a/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsObservabiityTest.java b/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsObservabilityTest.java similarity index 96% rename from systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsObservabiityTest.java rename to systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsObservabilityTest.java index 747218a050..de3b42e4e5 100644 --- a/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsObservabiityTest.java +++ b/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsObservabilityTest.java @@ -23,6 +23,7 @@ import java.time.Duration; import com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider; +import brave.handler.SpanHandler; import brave.sampler.Sampler; import jakarta.ws.rs.client.ClientBuilder; import jakarta.ws.rs.client.WebTarget; @@ -43,8 +44,6 @@ import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.ActiveProfiles; -import zipkin2.Span; -import zipkin2.reporter.Reporter; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Tags; @@ -60,10 +59,10 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.hamcrest.Matchers.hasSize; -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SpringJaxrsObservabiityTest.TestConfig.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SpringJaxrsObservabilityTest.TestConfig.class) @ActiveProfiles("jaxrs") @AutoConfigureObservability -public class SpringJaxrsObservabiityTest { +public class SpringJaxrsObservabilityTest { @Autowired private MeterRegistry registry; @@ -101,8 +100,8 @@ public class SpringJaxrsObservabiityTest { } @Bean - Reporter<Span> reporter() { - return Reporter.CONSOLE; + SpanHandler spanHandler() { + return SpanHandler.NOOP; } } diff --git a/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsWebObservabiityTest.java b/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsWebObservabilityTest.java similarity index 96% rename from systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsWebObservabiityTest.java rename to systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsWebObservabilityTest.java index d1f07d096d..a553f6a683 100644 --- a/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsWebObservabiityTest.java +++ b/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxrs/spring/boot/SpringJaxrsWebObservabilityTest.java @@ -23,6 +23,7 @@ import java.time.Duration; import com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider; +import brave.handler.SpanHandler; import brave.sampler.Sampler; import jakarta.ws.rs.client.ClientBuilder; import jakarta.ws.rs.client.WebTarget; @@ -42,8 +43,6 @@ import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.ActiveProfiles; -import zipkin2.Span; -import zipkin2.reporter.Reporter; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Tags; @@ -59,10 +58,10 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.hamcrest.Matchers.hasSize; -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SpringJaxrsWebObservabiityTest.TestConfig.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = SpringJaxrsWebObservabilityTest.TestConfig.class) @ActiveProfiles("jaxrs") @AutoConfigureObservability -public class SpringJaxrsWebObservabiityTest { +public class SpringJaxrsWebObservabilityTest { @Autowired private MeterRegistry registry; @@ -100,8 +99,8 @@ public class SpringJaxrsWebObservabiityTest { } @Bean - Reporter<Span> reporter() { - return Reporter.CONSOLE; + SpanHandler spanHandler() { + return SpanHandler.NOOP; } } diff --git a/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxws/spring/boot/SpringJaxwsObservabilityTest.java b/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxws/spring/boot/SpringJaxwsObservabilityTest.java index 436cd5caae..5858a82369 100644 --- a/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxws/spring/boot/SpringJaxwsObservabilityTest.java +++ b/systests/spring-boot/src/test/java/org/apache/cxf/systest/jaxws/spring/boot/SpringJaxwsObservabilityTest.java @@ -28,6 +28,7 @@ import javax.xml.namespace.QName; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; +import brave.handler.SpanHandler; import brave.sampler.Sampler; import jakarta.xml.ws.Dispatch; import jakarta.xml.ws.Endpoint; @@ -50,8 +51,6 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.context.annotation.Bean; import org.springframework.test.context.ActiveProfiles; -import zipkin2.Span; -import zipkin2.reporter.Reporter; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Tags; @@ -139,8 +138,8 @@ public class SpringJaxwsObservabilityTest { } @Bean - Reporter<Span> reporter() { - return Reporter.CONSOLE; + SpanHandler spanHandler() { + return SpanHandler.NOOP; } } diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/HasSpan.java b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/HasSpan.java index d51ea74d41..ed50864a04 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/HasSpan.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/HasSpan.java @@ -18,20 +18,22 @@ */ package org.apache.cxf.systest.brave; +import java.util.Map; +import java.util.stream.Collectors; + +import brave.handler.MutableSpan; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.hamcrest.TypeSafeMatcher; import org.hamcrest.core.IsIterableContaining; -import zipkin2.Annotation; -import zipkin2.Span; -public class HasSpan extends IsIterableContaining<Span> { +public class HasSpan extends IsIterableContaining<MutableSpan> { public HasSpan(final String name) { this(name, null); } - public HasSpan(final String name, final Matcher<Iterable<? super Annotation>> matcher) { - super(new TypeSafeMatcher<Span>() { + public HasSpan(final String name, final Matcher<Iterable<? super String>> matcher) { + super(new TypeSafeMatcher<MutableSpan>() { @Override public void describeTo(Description description) { description @@ -46,13 +48,16 @@ public class HasSpan extends IsIterableContaining<Span> { } @Override - protected boolean matchesSafely(Span item) { + protected boolean matchesSafely(MutableSpan item) { if (!name.equals(item.name())) { return false; } if (matcher != null) { - return matcher.matches(item.annotations()); + return matcher.matches(item.annotations() + .stream() + .map(Map.Entry::getValue) + .collect(Collectors.toList())); } return true; @@ -64,7 +69,7 @@ public class HasSpan extends IsIterableContaining<Span> { return new HasSpan(name); } - public static HasSpan hasSpan(final String name, final Matcher<Iterable<? super Annotation>> matcher) { + public static HasSpan hasSpan(final String name, final Matcher<Iterable<? super String>> matcher) { return new HasSpan(name, matcher); } } \ No newline at end of file diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/IsAnnotationContaining.java b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/IsAnnotationContaining.java index ac8ed1c09e..1b82a2f71e 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/IsAnnotationContaining.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/IsAnnotationContaining.java @@ -21,11 +21,10 @@ package org.apache.cxf.systest.brave; import org.hamcrest.Description; import org.hamcrest.TypeSafeMatcher; import org.hamcrest.core.IsIterableContaining; -import zipkin2.Annotation; -public class IsAnnotationContaining extends IsIterableContaining<Annotation> { +public class IsAnnotationContaining extends IsIterableContaining<String> { public IsAnnotationContaining(final String value) { - super(new TypeSafeMatcher<Annotation>() { + super(new TypeSafeMatcher<String>() { @Override public void describeTo(Description description) { description @@ -34,8 +33,8 @@ public class IsAnnotationContaining extends IsIterableContaining<Annotation> { } @Override - protected boolean matchesSafely(Annotation item) { - return value.equals(item.value()); + protected boolean matchesSafely(String item) { + return value.equals(item); } }); } diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/TestSpanReporter.java b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/TestSpanHandler.java similarity index 72% rename from systests/tracing/src/test/java/org/apache/cxf/systest/brave/TestSpanReporter.java rename to systests/tracing/src/test/java/org/apache/cxf/systest/brave/TestSpanHandler.java index d15fda52e0..266cc36637 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/TestSpanReporter.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/TestSpanHandler.java @@ -21,18 +21,19 @@ package org.apache.cxf.systest.brave; import java.util.ArrayList; import java.util.List; -import zipkin2.Span; -import zipkin2.reporter.Reporter; +import brave.handler.MutableSpan; +import brave.handler.SpanHandler; +import brave.propagation.TraceContext; -public class TestSpanReporter implements Reporter<Span> { - private static final List<Span> SPANS = new ArrayList<>(12); +public class TestSpanHandler extends SpanHandler { + private static final List<MutableSpan> SPANS = new ArrayList<>(12); @Override - public void report(Span span) { - SPANS.add(span); + public boolean end(TraceContext context, MutableSpan span, Cause cause) { + return SPANS.add(span); } - public static List<Span> getAllSpans() { + public static List<MutableSpan> getAllSpans() { return SPANS; } diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxrs/AbstractBraveTracingTest.java b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxrs/AbstractBraveTracingTest.java index faa149cd81..0a248da9e7 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxrs/AbstractBraveTracingTest.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxrs/AbstractBraveTracingTest.java @@ -40,7 +40,7 @@ import jakarta.ws.rs.core.Response.Status; import org.apache.cxf.feature.Feature; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.systest.brave.BraveTestSupport.SpanId; -import org.apache.cxf.systest.brave.TestSpanReporter; +import org.apache.cxf.systest.brave.TestSpanHandler; import org.apache.cxf.testutil.common.AbstractClientServerTestBase; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; @@ -73,13 +73,13 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB public ExpectedException expectedException = ExpectedException.none(); private final Tracing brave = Tracing.newBuilder() - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .build(); @After public void tearDown() { - TestSpanReporter.clear(); + TestSpanHandler.clear(); } @Test @@ -87,9 +87,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = createWebClient("/bookstore/books").get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books")); assertFalse(r.getHeaders().containsKey(SPAN_ID_NAME)); assertFalse(r.getHeaders().containsKey(TRACE_ID_NAME)); @@ -104,9 +104,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = withTrace(createWebClient("/bookstore/books"), spanId).get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books")); } @Test @@ -116,9 +116,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = withTrace(createWebClient("/bookstore/book/1"), spanId).get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(1)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get /bookstore/book/1")); - assertThat(TestSpanReporter.getAllSpans().get(0).tags(), hasEntry("book-id", "1")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(1)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("GET /bookstore/book/1")); + assertThat(TestSpanHandler.getAllSpans().get(0).tags(), hasEntry("book-id", "1")); } @Test @@ -128,9 +128,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = withTrace(createWebClient("/bookstore/process"), spanId).put(""); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans(), hasSpan("processing books", hasItem("Processing started"))); - assertThat(TestSpanReporter.getAllSpans(), hasSpan("put /bookstore/process")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans(), hasSpan("Processing books", hasItem("Processing started"))); + assertThat(TestSpanHandler.getAllSpans(), hasSpan("PUT /bookstore/process")); } @Test @@ -138,9 +138,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = createWebClient("/bookstore/books", getClientProvider(brave)).get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(3)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(0).parentId(), not(nullValue())); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(3)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(0).parentId(), not(nullValue())); } @Test @@ -150,12 +150,12 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = withTrace(createWebClient("/bookstore/books/async"), spanId).get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books/async")); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("processing books")); - assertThat(TestSpanReporter.getAllSpans().get(0).parentId(), not(nullValue())); - assertThat(TestSpanReporter.getAllSpans().get(0).parentId(), - equalTo(TestSpanReporter.getAllSpans().get(1).id())); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books/async")); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Processing books")); + assertThat(TestSpanHandler.getAllSpans().get(0).parentId(), not(nullValue())); + assertThat(TestSpanHandler.getAllSpans().get(0).parentId(), + equalTo(TestSpanHandler.getAllSpans().get(1).id())); } @Test @@ -165,8 +165,8 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = withTrace(createWebClient("/bookstore/books/async/notrace"), spanId).get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(1)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get /bookstore/books/async/notrace")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(1)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("GET /bookstore/books/async/notrace")); } @Test @@ -174,9 +174,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = createWebClient("/bookstore/books/async").get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books/async")); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("processing books")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books/async")); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Processing books")); } @Test @@ -187,10 +187,10 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = f.get(1, TimeUnit.SECONDS); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(3)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books")); - assertThat(TestSpanReporter.getAllSpans().get(2).name(), equalTo("get " + client.getCurrentURI())); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(3)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books")); + assertThat(TestSpanHandler.getAllSpans().get(2).name(), equalTo("GET " + client.getCurrentURI())); } @Test @@ -205,18 +205,18 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB .map(this::get) .forEach(r -> assertEquals(Status.OK.getStatusCode(), r.getStatus())); - assertThat(TestSpanReporter.getAllSpans().toString(), TestSpanReporter.getAllSpans().size(), equalTo(12)); + assertThat(TestSpanHandler.getAllSpans().toString(), TestSpanHandler.getAllSpans().size(), equalTo(12)); IntStream .range(0, 4) .map(index -> index * 3) .forEach(index -> { - assertThat(TestSpanReporter.getAllSpans().get(index).name(), - equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(index + 1).name(), - equalTo("get /bookstore/books")); - assertThat(TestSpanReporter.getAllSpans().get(index + 2).name(), - equalTo("get " + client.getCurrentURI())); + assertThat(TestSpanHandler.getAllSpans().get(index).name(), + equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(index + 1).name(), + equalTo("GET /bookstore/books")); + assertThat(TestSpanHandler.getAllSpans().get(index + 2).name(), + equalTo("GET " + client.getCurrentURI())); }); } @@ -231,18 +231,18 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB .mapToObj(index -> client.get()) .forEach(r -> assertEquals(Status.OK.getStatusCode(), r.getStatus())); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(12)); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(12)); IntStream .range(0, 4) .map(index -> index * 3) .forEach(index -> { - assertThat(TestSpanReporter.getAllSpans().get(index).name(), - equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(index + 1).name(), - equalTo("get /bookstore/books")); - assertThat(TestSpanReporter.getAllSpans().get(index + 2).name(), - equalTo("get " + client.getCurrentURI())); + assertThat(TestSpanHandler.getAllSpans().get(index).name(), + equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(index + 1).name(), + equalTo("GET /bookstore/books")); + assertThat(TestSpanHandler.getAllSpans().get(index + 2).name(), + equalTo("GET " + client.getCurrentURI())); }); } @@ -255,20 +255,20 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = client.get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(3)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(0).parentId(), not(nullValue())); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books")); - assertThat(TestSpanReporter.getAllSpans().get(2).name(), equalTo("get " + client.getCurrentURI())); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(3)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(0).parentId(), not(nullValue())); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books")); + assertThat(TestSpanHandler.getAllSpans().get(2).name(), equalTo("GET " + client.getCurrentURI())); } finally { span.finish(); } // Await till flush happens, usually a second is enough - await().atMost(Duration.ofSeconds(1L)).until(()-> TestSpanReporter.getAllSpans().size() == 4); + await().atMost(Duration.ofSeconds(1L)).until(()-> TestSpanHandler.getAllSpans().size() == 4); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(4)); - assertThat(TestSpanReporter.getAllSpans().get(3).name(), equalTo("test span")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(4)); + assertThat(TestSpanHandler.getAllSpans().get(3).name(), equalTo("test span")); } @Test @@ -283,19 +283,19 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB assertEquals(Status.OK.getStatusCode(), r.getStatus()); assertThat(brave.tracer().currentSpan().context().spanId(), equalTo(span.context().spanId())); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(3)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books")); - assertThat(TestSpanReporter.getAllSpans().get(2).name(), equalTo("get " + client.getCurrentURI())); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(3)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books")); + assertThat(TestSpanHandler.getAllSpans().get(2).name(), equalTo("GET " + client.getCurrentURI())); } finally { span.finish(); } // Await till flush happens, usually a second is enough - await().atMost(Duration.ofSeconds(1L)).until(()-> TestSpanReporter.getAllSpans().size() == 4); + await().atMost(Duration.ofSeconds(1L)).until(()-> TestSpanHandler.getAllSpans().size() == 4); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(4)); - assertThat(TestSpanReporter.getAllSpans().get(3).name(), equalTo("test span")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(4)); + assertThat(TestSpanHandler.getAllSpans().get(3).name(), equalTo("test span")); } @Test @@ -305,23 +305,23 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = withTrace(createWebClient("/bookstore/books/pseudo-async"), spanId).get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books/pseudo-async")); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("processing books")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books/pseudo-async")); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Processing books")); } @Test public void testThatNoSpansAreRecordedWhenNotSampled() { final Tracing never = Tracing .newBuilder() - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .sampler(Sampler.NEVER_SAMPLE) .build(); final Response r = createWebClient("/bookstore/books", getClientProvider(never)).get(); assertEquals(Status.OK.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(0)); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(0)); } @Test @@ -340,11 +340,11 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB try { client.get(); } finally { - await().atMost(Duration.ofSeconds(1L)).until(()-> TestSpanReporter.getAllSpans().size() == 2); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get " + client.getCurrentURI())); - assertThat(TestSpanReporter.getAllSpans().get(0).tags(), hasKey("error")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("get /bookstore/books/long")); + await().atMost(Duration.ofSeconds(1L)).until(()-> TestSpanHandler.getAllSpans().size() == 2); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("GET " + client.getCurrentURI())); + assertThat(TestSpanHandler.getAllSpans().get(0).tags(), hasKey("error")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("GET /bookstore/books/long")); } } @@ -353,9 +353,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = createWebClient("/bookstore/books/exception").get(); assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(1)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get /bookstore/books/exception")); - assertThat(TestSpanReporter.getAllSpans().get(0).tags(), hasEntry("http.status_code", "500")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(1)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("GET /bookstore/books/exception")); + assertThat(TestSpanHandler.getAllSpans().get(0).tags(), hasEntry("http.status_code", "500")); assertFalse(r.getHeaders().containsKey(SPAN_ID_NAME)); assertFalse(r.getHeaders().containsKey(TRACE_ID_NAME)); @@ -368,9 +368,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = createWebClient("/bookstore/books/error").get(); assertEquals(Status.SERVICE_UNAVAILABLE.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(1)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get /bookstore/books/error")); - assertThat(TestSpanReporter.getAllSpans().get(0).tags(), hasEntry("http.status_code", "503")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(1)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("GET /bookstore/books/error")); + assertThat(TestSpanHandler.getAllSpans().get(0).tags(), hasEntry("http.status_code", "503")); assertFalse(r.getHeaders().containsKey(SPAN_ID_NAME)); assertFalse(r.getHeaders().containsKey(TRACE_ID_NAME)); @@ -383,9 +383,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final Response r = createWebClient("/bookstore/books/mapper").get(); assertEquals(Status.NOT_FOUND.getStatusCode(), r.getStatus()); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(1)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get /bookstore/books/mapper")); - assertThat(TestSpanReporter.getAllSpans().get(0).tags(), hasEntry("http.status_code", "404")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(1)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("GET /bookstore/books/mapper")); + assertThat(TestSpanHandler.getAllSpans().get(0).tags(), hasEntry("http.status_code", "404")); assertFalse(r.getHeaders().containsKey(SPAN_ID_NAME)); assertFalse(r.getHeaders().containsKey(TRACE_ID_NAME)); diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxws/AbstractBraveTracingTest.java b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxws/AbstractBraveTracingTest.java index e17b0eb08d..07991044f4 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxws/AbstractBraveTracingTest.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/brave/jaxws/AbstractBraveTracingTest.java @@ -39,7 +39,7 @@ import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.apache.cxf.message.Message; import org.apache.cxf.systest.brave.BraveTestSupport.SpanId; -import org.apache.cxf.systest.brave.TestSpanReporter; +import org.apache.cxf.systest.brave.TestSpanHandler; import org.apache.cxf.systest.jaxws.tracing.BookStoreService; import org.apache.cxf.testutil.common.AbstractClientServerTestBase; @@ -64,9 +64,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final BookStoreService service = createJaxWsService(); assertThat(service.getBooks().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("post /bookstore")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("POST /BookStore")); final Map<String, List<String>> headers = getResponseHeaders(service); assertFalse(headers.containsKey(TRACE_ID_NAME)); @@ -94,9 +94,9 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final BookStoreService service = createJaxWsService(headers); assertThat(service.getBooks().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("post /bookstore")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("POST /BookStore")); } @Test @@ -105,12 +105,12 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final BookStoreService service = createJaxWsService(getClientFeature(brave)); assertThat(service.getBooks().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(3)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(0).parentId(), not(nullValue())); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("post /bookstore")); - assertThat(TestSpanReporter.getAllSpans().get(2).name(), - equalTo("post http://localhost:" + getPort() + "/bookstore")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(3)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(0).parentId(), not(nullValue())); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("POST /BookStore")); + assertThat(TestSpanHandler.getAllSpans().get(2).name(), + equalTo("POST http://localhost:" + getPort() + "/BookStore")); } } @@ -125,12 +125,12 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB assertThat(service.getBooks().size(), equalTo(2)); assertThat(brave.tracer().currentSpan(), not(nullValue())); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(3)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("get books")); - assertThat(TestSpanReporter.getAllSpans().get(0).parentId(), not(nullValue())); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), equalTo("post /bookstore")); - assertThat(TestSpanReporter.getAllSpans().get(2).name(), - equalTo("post http://localhost:" + getPort() + "/bookstore")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(3)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("Get Books")); + assertThat(TestSpanHandler.getAllSpans().get(0).parentId(), not(nullValue())); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), equalTo("POST /BookStore")); + assertThat(TestSpanHandler.getAllSpans().get(2).name(), + equalTo("POST http://localhost:" + getPort() + "/BookStore")); } } finally { if (span != null) { @@ -138,8 +138,8 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB } } - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(4)); - assertThat(TestSpanReporter.getAllSpans().get(3).name(), equalTo("test span")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(4)); + assertThat(TestSpanHandler.getAllSpans().get(3).name(), equalTo("test span")); } } @@ -154,8 +154,8 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB /* expected exception */ } - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(1)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("post /bookstore")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(1)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("POST /BookStore")); final Map<String, List<String>> headers = getResponseHeaders(service); assertFalse(headers.containsKey(TRACE_ID_NAME)); @@ -176,10 +176,10 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB /* expected exception */ } - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("post /bookstore")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), - equalTo("post http://localhost:" + getPort() + "/bookstore")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("POST /BookStore")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), + equalTo("POST http://localhost:" + getPort() + "/BookStore")); } } @@ -189,11 +189,11 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB final BookStoreService service = createJaxWsService(getClientFeature(brave)); service.addBooks(); - assertThat(TestSpanReporter.getAllSpans().size(), equalTo(2)); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("post /bookstore")); - assertThat(TestSpanReporter.getAllSpans().get(0).tags(), hasEntry("http.status_code", "305")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), - equalTo("post http://localhost:" + getPort() + "/bookstore")); + assertThat(TestSpanHandler.getAllSpans().size(), equalTo(2)); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("POST /BookStore")); + assertThat(TestSpanHandler.getAllSpans().get(0).tags(), hasEntry("http.status_code", "305")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), + equalTo("POST http://localhost:" + getPort() + "/BookStore")); } } @@ -204,11 +204,11 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB service.orderBooks(); // Await till flush happens, usually every second - await().atMost(Duration.ofSeconds(1L)).until(() -> TestSpanReporter.getAllSpans().size() == 2); + await().atMost(Duration.ofSeconds(1L)).until(() -> TestSpanHandler.getAllSpans().size() == 2); - assertThat(TestSpanReporter.getAllSpans().get(0).name(), equalTo("post /bookstore")); - assertThat(TestSpanReporter.getAllSpans().get(1).name(), - equalTo("post http://localhost:" + getPort() + "/bookstore")); + assertThat(TestSpanHandler.getAllSpans().get(0).name(), equalTo("POST /BookStore")); + assertThat(TestSpanHandler.getAllSpans().get(1).name(), + equalTo("POST http://localhost:" + getPort() + "/BookStore")); } } @@ -250,7 +250,7 @@ public abstract class AbstractBraveTracingTest extends AbstractClientServerTestB private static Tracing createTracer() { return Tracing.newBuilder() .localServiceName("book-store") - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .build(); } diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/brave/BraveTracingTest.java b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/brave/BraveTracingTest.java index 93e0a6e28b..a757727a5c 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/brave/BraveTracingTest.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/brave/BraveTracingTest.java @@ -24,7 +24,7 @@ import brave.Tracing; import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider; import org.apache.cxf.jaxrs.model.AbstractResourceInfo; -import org.apache.cxf.systest.brave.TestSpanReporter; +import org.apache.cxf.systest.brave.TestSpanHandler; import org.apache.cxf.systest.brave.jaxrs.AbstractBraveTracingTest; import org.apache.cxf.systest.jaxrs.tracing.BookStore; import org.apache.cxf.systest.jaxrs.tracing.NullPointerExceptionMapper; @@ -48,7 +48,7 @@ public class BraveTracingTest extends AbstractBraveTracingTest { protected void run() { final Tracing brave = Tracing .newBuilder() - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .build(); final JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/micrometer/MicrometerTracingTest.java b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/micrometer/MicrometerTracingTest.java index 231c6b1671..e682f4fa90 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/micrometer/MicrometerTracingTest.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxrs/tracing/micrometer/MicrometerTracingTest.java @@ -25,7 +25,7 @@ import org.apache.cxf.feature.Feature; import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider; import org.apache.cxf.jaxrs.model.AbstractResourceInfo; -import org.apache.cxf.systest.brave.TestSpanReporter; +import org.apache.cxf.systest.brave.TestSpanHandler; import org.apache.cxf.systest.brave.jaxrs.AbstractBraveTracingTest; import org.apache.cxf.systest.jaxrs.tracing.BookStore; import org.apache.cxf.systest.jaxrs.tracing.NullPointerExceptionMapper; @@ -64,7 +64,7 @@ public class MicrometerTracingTest extends AbstractBraveTracingTest { protected void run() { final Tracing brave = Tracing .newBuilder() - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .build(); final ObservationRegistry observationRegistry = createObservationRegistry(meterRegistry, brave); diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BookStore.java b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BookStore.java index d7acce256c..3179e10adb 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BookStore.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BookStore.java @@ -32,7 +32,7 @@ import jakarta.jws.WebService; import jakarta.xml.ws.WebServiceContext; import jakarta.xml.ws.handler.MessageContext; import org.apache.cxf.systest.Book; -import org.apache.cxf.systest.brave.TestSpanReporter; +import org.apache.cxf.systest.brave.TestSpanHandler; import org.apache.cxf.systest.jaxws.tracing.BookStoreService; @WebService(endpointInterface = "org.apache.cxf.systest.jaxws.tracing.BookStoreService", serviceName = "BookStore") @@ -45,7 +45,7 @@ public class BookStore implements BookStoreService { public BookStore() { brave = Tracing.newBuilder() .localServiceName("book-store") - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .build(); } diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BraveTracingTest.java b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BraveTracingTest.java index ab6a2af294..e985f2f043 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BraveTracingTest.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/brave/BraveTracingTest.java @@ -22,7 +22,7 @@ package org.apache.cxf.systest.jaxws.tracing.brave; import brave.Tracing; import org.apache.cxf.feature.Feature; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; -import org.apache.cxf.systest.brave.TestSpanReporter; +import org.apache.cxf.systest.brave.TestSpanHandler; import org.apache.cxf.systest.brave.jaxws.AbstractBraveTracingTest; import org.apache.cxf.testutil.common.AbstractTestServerBase; import org.apache.cxf.tracing.brave.BraveClientFeature; @@ -44,7 +44,7 @@ public class BraveTracingTest extends AbstractBraveTracingTest { protected void run() { final Tracing brave = Tracing.newBuilder() .localServiceName("book-store") - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .build(); final JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean(); @@ -68,7 +68,7 @@ public class BraveTracingTest extends AbstractBraveTracingTest { @After public void tearDown() { - TestSpanReporter.clear(); + TestSpanHandler.clear(); } @Override diff --git a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/micrometer/MicrometerTracingTest.java b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/micrometer/MicrometerTracingTest.java index a01121752c..8996da34d7 100644 --- a/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/micrometer/MicrometerTracingTest.java +++ b/systests/tracing/src/test/java/org/apache/cxf/systest/jaxws/tracing/micrometer/MicrometerTracingTest.java @@ -22,7 +22,7 @@ import brave.Tracing; import org.apache.cxf.feature.Feature; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import org.apache.cxf.message.Message; -import org.apache.cxf.systest.brave.TestSpanReporter; +import org.apache.cxf.systest.brave.TestSpanHandler; import org.apache.cxf.systest.brave.jaxws.AbstractBraveTracingTest; import org.apache.cxf.systest.jaxws.tracing.brave.BookStore; import org.apache.cxf.testutil.common.AbstractTestServerBase; @@ -57,7 +57,7 @@ public class MicrometerTracingTest extends AbstractBraveTracingTest { protected void run() { final Tracing brave = Tracing.newBuilder() .localServiceName("book-store") - .spanReporter(new TestSpanReporter()) + .addSpanHandler(new TestSpanHandler()) .build(); final ObservationRegistry observationRegistry = createObservationRegistry(meterRegistry, brave); @@ -100,7 +100,7 @@ public class MicrometerTracingTest extends AbstractBraveTracingTest { @After public void tearDown() { - TestSpanReporter.clear(); + TestSpanHandler.clear(); } @Override