Split ratpack into client and server (#12853)
This commit is contained in:
parent
cb353117ad
commit
b178439ada
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.ratpack.v1_7;
|
||||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.OpenTelemetryHttpClient;
|
||||
import ratpack.http.client.HttpClient;
|
||||
import ratpack.http.client.HttpResponse;
|
||||
import ratpack.http.client.RequestSpec;
|
||||
|
||||
/**
|
||||
* Entrypoint for instrumenting Ratpack http client.
|
||||
*
|
||||
* <p>To apply OpenTelemetry instrumentation to a http client, wrap the {@link HttpClient} using
|
||||
* {@link #instrument(HttpClient)}.
|
||||
*
|
||||
* <pre>{@code
|
||||
* RatpackClientTelemetry telemetry = RatpackClientTelemetry.create(OpenTelemetrySdk.builder()
|
||||
* ...
|
||||
* .build());
|
||||
* HttpClient instrumentedHttpClient = telemetry.instrument(httpClient);
|
||||
* }</pre>
|
||||
*/
|
||||
public final class RatpackClientTelemetry {
|
||||
|
||||
/**
|
||||
* Returns a new {@link RatpackClientTelemetry} configured with the given {@link OpenTelemetry}.
|
||||
*/
|
||||
public static RatpackClientTelemetry create(OpenTelemetry openTelemetry) {
|
||||
return builder(openTelemetry).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new {@link RatpackClientTelemetryBuilder} configured with the given {@link
|
||||
* OpenTelemetry}.
|
||||
*/
|
||||
public static RatpackClientTelemetryBuilder builder(OpenTelemetry openTelemetry) {
|
||||
return new RatpackClientTelemetryBuilder(openTelemetry);
|
||||
}
|
||||
|
||||
private final OpenTelemetryHttpClient httpClientInstrumenter;
|
||||
|
||||
RatpackClientTelemetry(Instrumenter<RequestSpec, HttpResponse> clientInstrumenter) {
|
||||
httpClientInstrumenter = new OpenTelemetryHttpClient(clientInstrumenter);
|
||||
}
|
||||
|
||||
/** Returns instrumented instance of {@link HttpClient} with OpenTelemetry. */
|
||||
public HttpClient instrument(HttpClient httpClient) throws Exception {
|
||||
return httpClientInstrumenter.instrument(httpClient);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.ratpack.v1_7;
|
||||
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.Experimental;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.RatpackClientInstrumenterBuilderFactory;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import ratpack.http.client.HttpResponse;
|
||||
import ratpack.http.client.RequestSpec;
|
||||
|
||||
/** A builder for {@link RatpackClientTelemetry}. */
|
||||
public final class RatpackClientTelemetryBuilder {
|
||||
|
||||
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.ratpack-1.7";
|
||||
|
||||
private final DefaultHttpClientInstrumenterBuilder<RequestSpec, HttpResponse> builder;
|
||||
|
||||
static {
|
||||
Experimental.setSetEmitExperimentalClientTelemetry(
|
||||
(builder, emit) -> builder.builder.setEmitExperimentalHttpClientMetrics(emit));
|
||||
}
|
||||
|
||||
RatpackClientTelemetryBuilder(OpenTelemetry openTelemetry) {
|
||||
builder = RatpackClientInstrumenterBuilderFactory.create(INSTRUMENTATION_NAME, openTelemetry);
|
||||
}
|
||||
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackClientTelemetryBuilder addAttributesExtractor(
|
||||
AttributesExtractor<? super RequestSpec, ? super HttpResponse> attributesExtractor) {
|
||||
builder.addAttributesExtractor(attributesExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the HTTP client request headers that will be captured as span attributes.
|
||||
*
|
||||
* @param requestHeaders A list of HTTP header names.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackClientTelemetryBuilder setCapturedRequestHeaders(List<String> requestHeaders) {
|
||||
builder.setCapturedRequestHeaders(requestHeaders);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the HTTP client response headers that will be captured as span attributes.
|
||||
*
|
||||
* @param responseHeaders A list of HTTP header names.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackClientTelemetryBuilder setCapturedResponseHeaders(List<String> responseHeaders) {
|
||||
builder.setCapturedResponseHeaders(responseHeaders);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the instrumentation to recognize an alternative set of HTTP request methods.
|
||||
*
|
||||
* <p>By default, this instrumentation defines "known" methods as the ones listed in <a
|
||||
* href="https://www.rfc-editor.org/rfc/rfc9110.html#name-methods">RFC9110</a> and the PATCH
|
||||
* method defined in <a href="https://www.rfc-editor.org/rfc/rfc5789.html">RFC5789</a>.
|
||||
*
|
||||
* <p>Note: calling this method <b>overrides</b> the default known method sets completely; it does
|
||||
* not supplement it.
|
||||
*
|
||||
* @param knownMethods A set of recognized HTTP request methods.
|
||||
* @see HttpClientAttributesExtractorBuilder#setKnownMethods(Set)
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackClientTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
|
||||
builder.setKnownMethods(knownMethods);
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom client {@link SpanNameExtractor} via transform function. */
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackClientTelemetryBuilder setSpanNameExtractor(
|
||||
Function<
|
||||
SpanNameExtractor<? super RequestSpec>,
|
||||
? extends SpanNameExtractor<? super RequestSpec>>
|
||||
clientSpanNameExtractor) {
|
||||
builder.setSpanNameExtractor(clientSpanNameExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Returns a new {@link RatpackClientTelemetry} with the configuration of this builder. */
|
||||
public RatpackClientTelemetry build() {
|
||||
return new RatpackClientTelemetry(builder.build());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.ratpack.v1_7;
|
||||
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.OpenTelemetryExecInitializer;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.OpenTelemetryExecInterceptor;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.OpenTelemetryServerHandler;
|
||||
import ratpack.exec.ExecInitializer;
|
||||
import ratpack.exec.ExecInterceptor;
|
||||
import ratpack.handling.Handler;
|
||||
import ratpack.handling.HandlerDecorator;
|
||||
import ratpack.http.Request;
|
||||
import ratpack.http.Response;
|
||||
import ratpack.registry.RegistrySpec;
|
||||
|
||||
/**
|
||||
* Entrypoint for instrumenting Ratpack server.
|
||||
*
|
||||
* <p>To apply OpenTelemetry instrumentation to a server, configure the {@link RegistrySpec} using
|
||||
* {@link #configureRegistry(RegistrySpec)}.
|
||||
*
|
||||
* <pre>{@code
|
||||
* RatpackServerTelemetry telemetry = RatpackServerTelemetry.create(OpenTelemetrySdk.builder()
|
||||
* ...
|
||||
* .build());
|
||||
* RatpackServer.start(server -> {
|
||||
* server.registryOf(telemetry::configureRegistry);
|
||||
* server.handlers(chain -> ...);
|
||||
* });
|
||||
* }</pre>
|
||||
*/
|
||||
public final class RatpackServerTelemetry {
|
||||
|
||||
/**
|
||||
* Returns a new {@link RatpackServerTelemetry} configured with the given {@link OpenTelemetry}.
|
||||
*/
|
||||
public static RatpackServerTelemetry create(OpenTelemetry openTelemetry) {
|
||||
return builder(openTelemetry).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new {@link RatpackServerTelemetryBuilder} configured with the given {@link
|
||||
* OpenTelemetry}.
|
||||
*/
|
||||
public static RatpackServerTelemetryBuilder builder(OpenTelemetry openTelemetry) {
|
||||
return new RatpackServerTelemetryBuilder(openTelemetry);
|
||||
}
|
||||
|
||||
private final OpenTelemetryServerHandler serverHandler;
|
||||
|
||||
RatpackServerTelemetry(Instrumenter<Request, Response> serverInstrumenter) {
|
||||
serverHandler = new OpenTelemetryServerHandler(serverInstrumenter);
|
||||
}
|
||||
|
||||
/** Returns a {@link Handler} to support Ratpack Registry binding. */
|
||||
public Handler getHandler() {
|
||||
return serverHandler;
|
||||
}
|
||||
|
||||
/** Returns instance of {@link ExecInterceptor} to support Ratpack Registry binding. */
|
||||
public ExecInterceptor getExecInterceptor() {
|
||||
return OpenTelemetryExecInterceptor.INSTANCE;
|
||||
}
|
||||
|
||||
/** Returns instance of {@link ExecInitializer} to support Ratpack Registry binding. */
|
||||
public ExecInitializer getExecInitializer() {
|
||||
return OpenTelemetryExecInitializer.INSTANCE;
|
||||
}
|
||||
|
||||
/** Configures the {@link RegistrySpec} with OpenTelemetry. */
|
||||
public void configureRegistry(RegistrySpec registry) {
|
||||
registry.add(HandlerDecorator.prepend(serverHandler));
|
||||
registry.add(OpenTelemetryExecInterceptor.INSTANCE);
|
||||
registry.add(OpenTelemetryExecInitializer.INSTANCE);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.ratpack.v1_7;
|
||||
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.Experimental;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.RatpackServerInstrumenterBuilderFactory;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import ratpack.http.Request;
|
||||
import ratpack.http.Response;
|
||||
|
||||
/** A builder for {@link RatpackServerTelemetry}. */
|
||||
public final class RatpackServerTelemetryBuilder {
|
||||
|
||||
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.ratpack-1.7";
|
||||
|
||||
private final DefaultHttpServerInstrumenterBuilder<Request, Response> builder;
|
||||
|
||||
static {
|
||||
Experimental.setSetEmitExperimentalServerTelemetry(
|
||||
(builder, emit) -> builder.builder.setEmitExperimentalHttpServerMetrics(emit));
|
||||
}
|
||||
|
||||
RatpackServerTelemetryBuilder(OpenTelemetry openTelemetry) {
|
||||
builder = RatpackServerInstrumenterBuilderFactory.create(INSTRUMENTATION_NAME, openTelemetry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an additional {@link AttributesExtractor} to invoke to set attributes to instrumented
|
||||
* items. The {@link AttributesExtractor} will be executed after all default extractors.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackServerTelemetryBuilder addAttributesExtractor(
|
||||
AttributesExtractor<? super Request, ? super Response> attributesExtractor) {
|
||||
builder.addAttributesExtractor(attributesExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the HTTP server request headers that will be captured as span attributes.
|
||||
*
|
||||
* @param requestHeaders A list of HTTP header names.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackServerTelemetryBuilder setCapturedRequestHeaders(List<String> requestHeaders) {
|
||||
builder.setCapturedRequestHeaders(requestHeaders);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the HTTP server response headers that will be captured as span attributes.
|
||||
*
|
||||
* @param responseHeaders A list of HTTP header names.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackServerTelemetryBuilder setCapturedResponseHeaders(List<String> responseHeaders) {
|
||||
builder.setCapturedResponseHeaders(responseHeaders);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the instrumentation to recognize an alternative set of HTTP request methods.
|
||||
*
|
||||
* <p>By default, this instrumentation defines "known" methods as the ones listed in <a
|
||||
* href="https://www.rfc-editor.org/rfc/rfc9110.html#name-methods">RFC9110</a> and the PATCH
|
||||
* method defined in <a href="https://www.rfc-editor.org/rfc/rfc5789.html">RFC5789</a>.
|
||||
*
|
||||
* <p>Note: calling this method <b>overrides</b> the default known method sets completely; it does
|
||||
* not supplement it.
|
||||
*
|
||||
* @param knownMethods A set of recognized HTTP request methods.
|
||||
* @see HttpServerAttributesExtractorBuilder#setKnownMethods(Set)
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackServerTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
|
||||
builder.setKnownMethods(knownMethods);
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom server {@link SpanNameExtractor} via transform function. */
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackServerTelemetryBuilder setSpanNameExtractor(
|
||||
Function<SpanNameExtractor<? super Request>, ? extends SpanNameExtractor<? super Request>>
|
||||
serverSpanNameExtractor) {
|
||||
builder.setSpanNameExtractor(serverSpanNameExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Returns a new {@link RatpackServerTelemetry} with the configuration of this builder. */
|
||||
public RatpackServerTelemetry build() {
|
||||
return new RatpackServerTelemetry(builder.build());
|
||||
}
|
||||
}
|
|
@ -46,17 +46,30 @@ import ratpack.registry.RegistrySpec;
|
|||
* .build());
|
||||
* HttpClient instrumentedHttpClient = telemetry.instrumentHttpClient(httpClient);
|
||||
* }</pre>
|
||||
*
|
||||
* @deprecated Use {@link RatpackClientTelemetry} and {@link RatpackServerTelemetry} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public final class RatpackTelemetry {
|
||||
|
||||
/** Returns a new {@link RatpackTelemetry} configured with the given {@link OpenTelemetry}. */
|
||||
/**
|
||||
* Returns a new {@link RatpackTelemetry} configured with the given {@link OpenTelemetry}.
|
||||
*
|
||||
* @deprecated Use {@link RatpackClientTelemetry#create(OpenTelemetry)} and {@link
|
||||
* RatpackServerTelemetry#create(OpenTelemetry)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public static RatpackTelemetry create(OpenTelemetry openTelemetry) {
|
||||
return builder(openTelemetry).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new {@link RatpackTelemetryBuilder} configured with the given {@link OpenTelemetry}.
|
||||
*
|
||||
* @deprecated Use {@link RatpackClientTelemetry#builder(OpenTelemetry)} and {@link
|
||||
* RatpackServerTelemetry#builder(OpenTelemetry)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public static RatpackTelemetryBuilder builder(OpenTelemetry openTelemetry) {
|
||||
return new RatpackTelemetryBuilder(openTelemetry);
|
||||
}
|
||||
|
@ -71,29 +84,54 @@ public final class RatpackTelemetry {
|
|||
httpClientInstrumenter = new OpenTelemetryHttpClient(clientInstrumenter);
|
||||
}
|
||||
|
||||
/** Returns instance of {@link OpenTelemetryServerHandler} to support Ratpack Registry binding. */
|
||||
/**
|
||||
* Returns instance of {@link OpenTelemetryServerHandler} to support Ratpack Registry binding.
|
||||
*
|
||||
* @deprecated Use {@link RatpackServerTelemetry#getHandler()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public OpenTelemetryServerHandler getOpenTelemetryServerHandler() {
|
||||
return serverHandler;
|
||||
}
|
||||
|
||||
/** Returns instance of {@link ExecInterceptor} to support Ratpack Registry binding. */
|
||||
/**
|
||||
* Returns instance of {@link ExecInterceptor} to support Ratpack Registry binding.
|
||||
*
|
||||
* @deprecated Use {@link RatpackServerTelemetry#getExecInterceptor()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public ExecInterceptor getOpenTelemetryExecInterceptor() {
|
||||
return OpenTelemetryExecInterceptor.INSTANCE;
|
||||
}
|
||||
|
||||
/** Returns instance of {@link ExecInitializer} to support Ratpack Registry binding. */
|
||||
/**
|
||||
* Returns instance of {@link ExecInitializer} to support Ratpack Registry binding.
|
||||
*
|
||||
* @deprecated Use {@link RatpackServerTelemetry#getExecInitializer()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public ExecInitializer getOpenTelemetryExecInitializer() {
|
||||
return OpenTelemetryExecInitializer.INSTANCE;
|
||||
}
|
||||
|
||||
/** Configures the {@link RegistrySpec} with OpenTelemetry. */
|
||||
/**
|
||||
* Configures the {@link RegistrySpec} with OpenTelemetry.
|
||||
*
|
||||
* @deprecated Use {@link RatpackServerTelemetry#configureRegistry(RegistrySpec)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public void configureServerRegistry(RegistrySpec registry) {
|
||||
registry.add(HandlerDecorator.prepend(serverHandler));
|
||||
registry.add(OpenTelemetryExecInterceptor.INSTANCE);
|
||||
registry.add(OpenTelemetryExecInitializer.INSTANCE);
|
||||
}
|
||||
|
||||
/** Returns instrumented instance of {@link HttpClient} with OpenTelemetry. */
|
||||
/**
|
||||
* Returns instrumented instance of {@link HttpClient} with OpenTelemetry.
|
||||
*
|
||||
* @deprecated Use {@link RatpackClientTelemetry#instrument(HttpClient)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public HttpClient instrumentHttpClient(HttpClient httpClient) throws Exception {
|
||||
return httpClientInstrumenter.instrument(httpClient);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
|
|||
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.Experimental;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.RatpackClientInstrumenterBuilderFactory;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.RatpackServerInstrumenterBuilderFactory;
|
||||
import java.util.List;
|
||||
|
@ -23,7 +24,13 @@ import ratpack.http.Response;
|
|||
import ratpack.http.client.HttpResponse;
|
||||
import ratpack.http.client.RequestSpec;
|
||||
|
||||
/** A builder for {@link RatpackTelemetry}. */
|
||||
/**
|
||||
* A builder for {@link RatpackTelemetry}.
|
||||
*
|
||||
* @deprecated Use {@link RatpackClientTelemetryBuilder} and {@link RatpackServerTelemetryBuilder}
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public final class RatpackTelemetryBuilder {
|
||||
|
||||
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.ratpack-1.7";
|
||||
|
@ -41,7 +48,11 @@ public final class RatpackTelemetryBuilder {
|
|||
/**
|
||||
* Adds an additional {@link AttributesExtractor} to invoke to set attributes to instrumented
|
||||
* items. The {@link AttributesExtractor} will be executed after all default extractors.
|
||||
*
|
||||
* @deprecated Use {@link
|
||||
* RatpackServerTelemetryBuilder#addAttributesExtractor(AttributesExtractor)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder addAttributeExtractor(
|
||||
AttributesExtractor<? super Request, ? super Response> attributesExtractor) {
|
||||
|
@ -49,6 +60,11 @@ public final class RatpackTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link
|
||||
* RatpackClientTelemetryBuilder#addAttributesExtractor(AttributesExtractor)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder addClientAttributeExtractor(
|
||||
AttributesExtractor<? super RequestSpec, ? super HttpResponse> attributesExtractor) {
|
||||
|
@ -60,7 +76,9 @@ public final class RatpackTelemetryBuilder {
|
|||
* Configures the HTTP server request headers that will be captured as span attributes.
|
||||
*
|
||||
* @param requestHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link RatpackServerTelemetryBuilder#setCapturedRequestHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setCapturedServerRequestHeaders(List<String> requestHeaders) {
|
||||
serverBuilder.setCapturedRequestHeaders(requestHeaders);
|
||||
|
@ -71,7 +89,9 @@ public final class RatpackTelemetryBuilder {
|
|||
* Configures the HTTP server response headers that will be captured as span attributes.
|
||||
*
|
||||
* @param responseHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link RatpackServerTelemetryBuilder#setCapturedResponseHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setCapturedServerResponseHeaders(List<String> responseHeaders) {
|
||||
serverBuilder.setCapturedResponseHeaders(responseHeaders);
|
||||
|
@ -82,7 +102,9 @@ public final class RatpackTelemetryBuilder {
|
|||
* Configures the HTTP client request headers that will be captured as span attributes.
|
||||
*
|
||||
* @param requestHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link RatpackClientTelemetryBuilder#setCapturedRequestHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setCapturedClientRequestHeaders(List<String> requestHeaders) {
|
||||
clientBuilder.setCapturedRequestHeaders(requestHeaders);
|
||||
|
@ -93,7 +115,9 @@ public final class RatpackTelemetryBuilder {
|
|||
* Configures the HTTP client response headers that will be captured as span attributes.
|
||||
*
|
||||
* @param responseHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link RatpackClientTelemetryBuilder#setCapturedResponseHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setCapturedClientResponseHeaders(List<String> responseHeaders) {
|
||||
clientBuilder.setCapturedResponseHeaders(responseHeaders);
|
||||
|
@ -113,7 +137,10 @@ public final class RatpackTelemetryBuilder {
|
|||
* @param knownMethods A set of recognized HTTP request methods.
|
||||
* @see HttpClientAttributesExtractorBuilder#setKnownMethods(Set)
|
||||
* @see HttpServerAttributesExtractorBuilder#setKnownMethods(Set)
|
||||
* @deprecated Use {@link RatpackServerTelemetryBuilder#setKnownMethods(Set)} and {@link
|
||||
* RatpackClientTelemetryBuilder#setKnownMethods(Set)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
|
||||
clientBuilder.setKnownMethods(knownMethods);
|
||||
|
@ -126,7 +153,10 @@ public final class RatpackTelemetryBuilder {
|
|||
*
|
||||
* @param emitExperimentalHttpClientMetrics {@code true} if the experimental HTTP client metrics
|
||||
* are to be emitted.
|
||||
* @deprecated Use {@link Experimental#setEmitExperimentalTelemetry(RatpackClientTelemetryBuilder,
|
||||
* boolean)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setEmitExperimentalHttpClientMetrics(
|
||||
boolean emitExperimentalHttpClientMetrics) {
|
||||
|
@ -139,7 +169,10 @@ public final class RatpackTelemetryBuilder {
|
|||
*
|
||||
* @param emitExperimentalHttpServerMetrics {@code true} if the experimental HTTP server metrics
|
||||
* are to be emitted.
|
||||
* @deprecated Use {@link Experimental#setEmitExperimentalTelemetry(RatpackServerTelemetryBuilder,
|
||||
* boolean)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setEmitExperimentalHttpServerMetrics(
|
||||
boolean emitExperimentalHttpServerMetrics) {
|
||||
|
@ -147,7 +180,12 @@ public final class RatpackTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom client {@link SpanNameExtractor} via transform function. */
|
||||
/**
|
||||
* Sets custom client {@link SpanNameExtractor} via transform function.
|
||||
*
|
||||
* @deprecated Use {@link RatpackClientTelemetryBuilder#setSpanNameExtractor(Function)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setClientSpanNameExtractor(
|
||||
Function<
|
||||
|
@ -158,7 +196,12 @@ public final class RatpackTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom server {@link SpanNameExtractor} via transform function. */
|
||||
/**
|
||||
* Sets custom server {@link SpanNameExtractor} via transform function.
|
||||
*
|
||||
* @deprecated Use {@link RatpackServerTelemetryBuilder#setSpanNameExtractor(Function)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public RatpackTelemetryBuilder setServerSpanNameExtractor(
|
||||
Function<SpanNameExtractor<? super Request>, ? extends SpanNameExtractor<? super Request>>
|
||||
|
@ -167,7 +210,13 @@ public final class RatpackTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Returns a new {@link RatpackTelemetry} with the configuration of this builder. */
|
||||
/**
|
||||
* Returns a new {@link RatpackTelemetry} with the configuration of this builder.
|
||||
*
|
||||
* @deprecated Use {@link RatpackClientTelemetryBuilder#build()} and {@link
|
||||
* RatpackServerTelemetryBuilder#build()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public RatpackTelemetry build() {
|
||||
return new RatpackTelemetry(serverBuilder.build(), clientBuilder.build());
|
||||
}
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.ratpack.v1_7.internal;
|
||||
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackClientTelemetryBuilder;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetryBuilder;
|
||||
import java.util.function.BiConsumer;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* This class is internal and experimental. Its APIs are unstable and can change at any time. Its
|
||||
* APIs (or a version of them) may be promoted to the public stable API in the future, but no
|
||||
* guarantees are made.
|
||||
*/
|
||||
public final class Experimental {
|
||||
|
||||
@Nullable
|
||||
private static volatile BiConsumer<RatpackClientTelemetryBuilder, Boolean>
|
||||
setEmitExperimentalClientTelemetry;
|
||||
|
||||
@Nullable
|
||||
private static volatile BiConsumer<RatpackServerTelemetryBuilder, Boolean>
|
||||
setEmitExperimentalServerTelemetry;
|
||||
|
||||
public static void setEmitExperimentalTelemetry(
|
||||
RatpackClientTelemetryBuilder builder, boolean emitExperimentalTelemetry) {
|
||||
if (setEmitExperimentalClientTelemetry != null) {
|
||||
setEmitExperimentalClientTelemetry.accept(builder, emitExperimentalTelemetry);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setEmitExperimentalTelemetry(
|
||||
RatpackServerTelemetryBuilder builder, boolean emitExperimentalTelemetry) {
|
||||
if (setEmitExperimentalServerTelemetry != null) {
|
||||
setEmitExperimentalServerTelemetry.accept(builder, emitExperimentalTelemetry);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setSetEmitExperimentalClientTelemetry(
|
||||
BiConsumer<RatpackClientTelemetryBuilder, Boolean> setEmitExperimentalClientTelemetry) {
|
||||
Experimental.setEmitExperimentalClientTelemetry = setEmitExperimentalClientTelemetry;
|
||||
}
|
||||
|
||||
public static void setSetEmitExperimentalServerTelemetry(
|
||||
BiConsumer<RatpackServerTelemetryBuilder, Boolean> setEmitExperimentalServerTelemetry) {
|
||||
Experimental.setEmitExperimentalServerTelemetry = setEmitExperimentalServerTelemetry;
|
||||
}
|
||||
|
||||
private Experimental() {}
|
||||
}
|
|
@ -11,7 +11,8 @@ import io.opentelemetry.api.trace.Tracer
|
|||
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator
|
||||
import io.opentelemetry.context.Context
|
||||
import io.opentelemetry.context.propagation.ContextPropagators
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackClientTelemetry
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk
|
||||
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider
|
||||
|
@ -34,9 +35,7 @@ import java.util.concurrent.TimeUnit
|
|||
|
||||
import static io.opentelemetry.api.trace.SpanKind.CLIENT
|
||||
import static io.opentelemetry.api.trace.SpanKind.SERVER
|
||||
import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD
|
||||
import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE
|
||||
import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE
|
||||
import static io.opentelemetry.semconv.HttpAttributes.*
|
||||
|
||||
class InstrumentedHttpClientTest extends Specification {
|
||||
|
||||
|
@ -49,7 +48,8 @@ class InstrumentedHttpClientTest extends Specification {
|
|||
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
|
||||
.setTracerProvider(tracerProvider).build()
|
||||
|
||||
RatpackTelemetry telemetry = RatpackTelemetry.create(openTelemetry)
|
||||
RatpackClientTelemetry telemetry = RatpackClientTelemetry.create(openTelemetry)
|
||||
RatpackServerTelemetry serverTelemetry = RatpackServerTelemetry.create(openTelemetry)
|
||||
|
||||
def cleanup() {
|
||||
spanExporter.reset()
|
||||
|
@ -60,7 +60,7 @@ class InstrumentedHttpClientTest extends Specification {
|
|||
def otherApp = EmbeddedApp.of { spec ->
|
||||
spec.registry(
|
||||
Guice.registry { bindings ->
|
||||
telemetry.configureServerRegistry(bindings)
|
||||
serverTelemetry.configureRegistry(bindings)
|
||||
}
|
||||
)
|
||||
spec.handlers {
|
||||
|
@ -71,8 +71,8 @@ class InstrumentedHttpClientTest extends Specification {
|
|||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry(
|
||||
Guice.registry { bindings ->
|
||||
telemetry.configureServerRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrumentHttpClient(HttpClient.of(Action.noop())))
|
||||
serverTelemetry.configureRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrument(HttpClient.of(Action.noop())))
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -132,8 +132,8 @@ class InstrumentedHttpClientTest extends Specification {
|
|||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry(
|
||||
Guice.registry { bindings ->
|
||||
telemetry.configureServerRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrumentHttpClient(HttpClient.of(Action.noop())))
|
||||
serverTelemetry.configureRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrument(HttpClient.of(Action.noop())))
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -197,8 +197,8 @@ class InstrumentedHttpClientTest extends Specification {
|
|||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry(
|
||||
Guice.registry { bindings ->
|
||||
telemetry.configureServerRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrumentHttpClient(
|
||||
serverTelemetry.configureRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrument(
|
||||
HttpClient.of { s -> s.readTimeout(Duration.ofMillis(10)) })
|
||||
)
|
||||
}
|
||||
|
@ -254,8 +254,8 @@ class InstrumentedHttpClientTest extends Specification {
|
|||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry(
|
||||
Guice.registry { bindings ->
|
||||
telemetry.configureServerRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrumentHttpClient(HttpClient.of(Action.noop())))
|
||||
serverTelemetry.configureRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrument(HttpClient.of(Action.noop())))
|
||||
bindings.bindInstance(new BarService(latch, "${otherApp.address}foo", openTelemetry))
|
||||
},
|
||||
)
|
||||
|
@ -287,8 +287,8 @@ class InstrumentedHttpClientTest extends Specification {
|
|||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry(
|
||||
Guice.registry { bindings ->
|
||||
telemetry.configureServerRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrumentHttpClient(HttpClient.of(Action.noop())))
|
||||
serverTelemetry.configureRegistry(bindings)
|
||||
bindings.bindInstance(HttpClient, telemetry.instrument(HttpClient.of(Action.noop())))
|
||||
bindings.bindInstance(new BarForkService(latch, "${otherApp.address}foo", openTelemetry))
|
||||
},
|
||||
)
|
||||
|
@ -341,7 +341,6 @@ class BarService implements Service {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
class BarForkService implements Service {
|
||||
private final String url
|
||||
private final CountDownLatch latch
|
||||
|
|
|
@ -10,9 +10,9 @@ import com.google.inject.Provides
|
|||
import groovy.transform.CompileStatic
|
||||
import io.opentelemetry.api.OpenTelemetry
|
||||
import io.opentelemetry.api.trace.SpanKind
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.internal.OpenTelemetryServerHandler
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackClientTelemetry
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackFunctionalTest
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk
|
||||
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider
|
||||
|
@ -21,6 +21,7 @@ import io.opentelemetry.sdk.trace.export.SpanExporter
|
|||
import ratpack.exec.ExecInitializer
|
||||
import ratpack.exec.ExecInterceptor
|
||||
import ratpack.guice.Guice
|
||||
import ratpack.handling.Handler
|
||||
import ratpack.http.client.HttpClient
|
||||
import ratpack.server.RatpackServer
|
||||
import spock.lang.Specification
|
||||
|
@ -28,9 +29,7 @@ import spock.util.concurrent.PollingConditions
|
|||
|
||||
import javax.inject.Singleton
|
||||
|
||||
import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD
|
||||
import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE
|
||||
import static io.opentelemetry.semconv.HttpAttributes.HTTP_ROUTE
|
||||
import static io.opentelemetry.semconv.HttpAttributes.*
|
||||
import static io.opentelemetry.semconv.UrlAttributes.URL_PATH
|
||||
|
||||
class RatpackServerApplicationTest extends Specification {
|
||||
|
@ -104,20 +103,26 @@ class OpenTelemetryModule extends AbstractModule {
|
|||
|
||||
@Singleton
|
||||
@Provides
|
||||
RatpackTelemetry ratpackTracing(OpenTelemetry openTelemetry) {
|
||||
return RatpackTelemetry.create(openTelemetry)
|
||||
RatpackClientTelemetry ratpackClientTelemetry(OpenTelemetry openTelemetry) {
|
||||
return RatpackClientTelemetry.create(openTelemetry)
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
OpenTelemetryServerHandler ratpackServerHandler(RatpackTelemetry ratpackTracing) {
|
||||
return ratpackTracing.getOpenTelemetryServerHandler()
|
||||
RatpackServerTelemetry ratpackServerTelemetry(OpenTelemetry openTelemetry) {
|
||||
return RatpackServerTelemetry.create(openTelemetry)
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
ExecInterceptor ratpackExecInterceptor(RatpackTelemetry ratpackTracing) {
|
||||
return ratpackTracing.getOpenTelemetryExecInterceptor()
|
||||
Handler ratpackServerHandler(RatpackServerTelemetry ratpackTracing) {
|
||||
return ratpackTracing.getHandler()
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
ExecInterceptor ratpackExecInterceptor(RatpackServerTelemetry ratpackTracing) {
|
||||
return ratpackTracing.getExecInterceptor()
|
||||
}
|
||||
|
||||
@Provides
|
||||
|
@ -131,14 +136,14 @@ class OpenTelemetryModule extends AbstractModule {
|
|||
|
||||
@Singleton
|
||||
@Provides
|
||||
HttpClient instrumentedHttpClient(RatpackTelemetry ratpackTracing) {
|
||||
return ratpackTracing.instrumentHttpClient(HttpClient.of {})
|
||||
HttpClient instrumentedHttpClient(RatpackClientTelemetry ratpackTracing) {
|
||||
return ratpackTracing.instrument(HttpClient.of {})
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
ExecInitializer ratpackExecInitializer(RatpackTelemetry ratpackTracing) {
|
||||
return ratpackTracing.getOpenTelemetryExecInitializer()
|
||||
ExecInitializer ratpackExecInitializer(RatpackServerTelemetry ratpackTracing) {
|
||||
return ratpackTracing.getExecInitializer()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,7 +157,7 @@ class RatpackApp {
|
|||
.handlers { chain ->
|
||||
chain
|
||||
.get("ignore") { ctx -> ctx.render("ignored") }
|
||||
.all(OpenTelemetryServerHandler)
|
||||
.all(Handler)
|
||||
.get("foo") { ctx -> ctx.render("hi-foo") }
|
||||
.get("bar") { ctx ->
|
||||
ctx.get(HttpClient).get(ctx.get(URI))
|
||||
|
|
|
@ -8,7 +8,7 @@ package io.opentelemetry.instrumentation.ratpack.v1_7.server
|
|||
import io.opentelemetry.api.trace.SpanKind
|
||||
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator
|
||||
import io.opentelemetry.context.propagation.ContextPropagators
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk
|
||||
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider
|
||||
|
@ -32,7 +32,7 @@ class RatpackServerTest extends Specification {
|
|||
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
|
||||
.setTracerProvider(tracerProvider).build()
|
||||
|
||||
def telemetry = RatpackTelemetry.create(openTelemetry)
|
||||
def telemetry = RatpackServerTelemetry.create(openTelemetry)
|
||||
|
||||
def cleanup() {
|
||||
spanExporter.reset()
|
||||
|
@ -41,7 +41,7 @@ class RatpackServerTest extends Specification {
|
|||
def "add span on handlers"() {
|
||||
given:
|
||||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry { Registry.of { telemetry.configureServerRegistry(it) } }
|
||||
spec.registry { Registry.of { telemetry.configureRegistry(it) } }
|
||||
spec.handlers { chain ->
|
||||
chain.get("foo") { ctx -> ctx.render("hi-foo") }
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ class RatpackServerTest extends Specification {
|
|||
def "propagate trace with instrumented async operations"() {
|
||||
expect:
|
||||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry { Registry.of { telemetry.configureServerRegistry(it) } }
|
||||
spec.registry { Registry.of { telemetry.configureRegistry(it) } }
|
||||
spec.handlers { chain ->
|
||||
chain.get("foo") { ctx ->
|
||||
ctx.render("hi-foo")
|
||||
|
@ -106,7 +106,7 @@ class RatpackServerTest extends Specification {
|
|||
def "propagate trace with instrumented async concurrent operations"() {
|
||||
expect:
|
||||
def app = EmbeddedApp.of { spec ->
|
||||
spec.registry { Registry.of { telemetry.configureServerRegistry(it) } }
|
||||
spec.registry { Registry.of { telemetry.configureRegistry(it) } }
|
||||
spec.handlers { chain ->
|
||||
chain.get("bar") { ctx ->
|
||||
ctx.render("hi-bar")
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.ratpack.v1_7;
|
||||
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
|
||||
import java.util.Collections;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import ratpack.func.Action;
|
||||
import ratpack.http.client.HttpClient;
|
||||
import ratpack.http.client.HttpClientSpec;
|
||||
|
||||
@SuppressWarnings("deprecation") // testing deprecated API
|
||||
class RatpackHttpClientOldTest extends AbstractRatpackHttpClientTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forLibrary();
|
||||
|
||||
@Override
|
||||
protected HttpClient buildHttpClient() throws Exception {
|
||||
return RatpackTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedClientRequestHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedClientResponseHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
|
||||
.build()
|
||||
.instrumentHttpClient(HttpClient.of(Action.noop()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HttpClient buildHttpClient(Action<? super HttpClientSpec> action) throws Exception {
|
||||
return RatpackClientTelemetry.create(testing.getOpenTelemetry())
|
||||
.instrument(HttpClient.of(action));
|
||||
}
|
||||
}
|
|
@ -21,18 +21,18 @@ class RatpackHttpClientTest extends AbstractRatpackHttpClientTest {
|
|||
|
||||
@Override
|
||||
protected HttpClient buildHttpClient() throws Exception {
|
||||
return RatpackTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedClientRequestHeaders(
|
||||
return RatpackClientTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedRequestHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedClientResponseHeaders(
|
||||
.setCapturedResponseHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
|
||||
.build()
|
||||
.instrumentHttpClient(HttpClient.of(Action.noop()));
|
||||
.instrument(HttpClient.of(Action.noop()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HttpClient buildHttpClient(Action<? super HttpClientSpec> action) throws Exception {
|
||||
return RatpackTelemetry.create(testing.getOpenTelemetry())
|
||||
.instrumentHttpClient(HttpClient.of(action));
|
||||
return RatpackClientTelemetry.create(testing.getOpenTelemetry())
|
||||
.instrument(HttpClient.of(action));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ package io.opentelemetry.instrumentation.ratpack.v1_7.server;
|
|||
import static java.util.Collections.singletonList;
|
||||
|
||||
import io.opentelemetry.instrumentation.ratpack.server.AbstractRatpackAsyncHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
|
||||
|
@ -24,14 +24,12 @@ class RatpackAsyncHttpServerTest extends AbstractRatpackAsyncHttpServerTest {
|
|||
|
||||
@Override
|
||||
protected void configure(RatpackServerSpec serverSpec) throws Exception {
|
||||
RatpackTelemetry telemetry =
|
||||
RatpackTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedServerRequestHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedServerResponseHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
RatpackServerTelemetry telemetry =
|
||||
RatpackServerTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedRequestHeaders(singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedResponseHeaders(singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
.build();
|
||||
serverSpec.registryOf(telemetry::configureServerRegistry);
|
||||
serverSpec.registryOf(telemetry::configureRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,7 +8,7 @@ package io.opentelemetry.instrumentation.ratpack.v1_7.server;
|
|||
import static java.util.Collections.singletonList;
|
||||
|
||||
import io.opentelemetry.instrumentation.ratpack.server.AbstractRatpackForkedHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
|
||||
|
@ -24,14 +24,12 @@ class RatpackForkedHttpServerTest extends AbstractRatpackForkedHttpServerTest {
|
|||
|
||||
@Override
|
||||
protected void configure(RatpackServerSpec serverSpec) throws Exception {
|
||||
RatpackTelemetry telemetry =
|
||||
RatpackTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedServerRequestHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedServerResponseHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
RatpackServerTelemetry telemetry =
|
||||
RatpackServerTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedRequestHeaders(singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedResponseHeaders(singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
.build();
|
||||
serverSpec.registryOf(telemetry::configureServerRegistry);
|
||||
serverSpec.registryOf(telemetry::configureRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.ratpack.v1_7.server;
|
||||
|
||||
import static java.util.Collections.singletonList;
|
||||
|
||||
import io.opentelemetry.instrumentation.ratpack.server.AbstractRatpackHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import ratpack.server.RatpackServerSpec;
|
||||
|
||||
@SuppressWarnings("deprecation") // testing deprecated API
|
||||
class RatpackHttpServerOldTest extends AbstractRatpackHttpServerTest {
|
||||
|
||||
@RegisterExtension
|
||||
public static final InstrumentationExtension testing =
|
||||
HttpServerInstrumentationExtension.forLibrary();
|
||||
|
||||
@Override
|
||||
protected void configure(RatpackServerSpec serverSpec) throws Exception {
|
||||
io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry telemetry =
|
||||
io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry.builder(
|
||||
testing.getOpenTelemetry())
|
||||
.setCapturedServerRequestHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedServerResponseHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
.build();
|
||||
serverSpec.registryOf(telemetry::configureServerRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(HttpServerTestOptions options) {
|
||||
super.configure(options);
|
||||
|
||||
options.setHasHandlerSpan(endpoint -> false);
|
||||
}
|
||||
}
|
|
@ -8,7 +8,7 @@ package io.opentelemetry.instrumentation.ratpack.v1_7.server;
|
|||
import static java.util.Collections.singletonList;
|
||||
|
||||
import io.opentelemetry.instrumentation.ratpack.server.AbstractRatpackHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
|
||||
|
@ -24,14 +24,12 @@ class RatpackHttpServerTest extends AbstractRatpackHttpServerTest {
|
|||
|
||||
@Override
|
||||
protected void configure(RatpackServerSpec serverSpec) throws Exception {
|
||||
RatpackTelemetry telemetry =
|
||||
RatpackTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedServerRequestHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedServerResponseHeaders(
|
||||
singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
RatpackServerTelemetry telemetry =
|
||||
RatpackServerTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedRequestHeaders(singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedResponseHeaders(singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
.build();
|
||||
serverSpec.registryOf(telemetry::configureServerRegistry);
|
||||
serverSpec.registryOf(telemetry::configureRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
package io.opentelemetry.instrumentation.ratpack.v1_7.server;
|
||||
|
||||
import io.opentelemetry.instrumentation.ratpack.server.AbstractRatpackRoutesTest;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry;
|
||||
import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
@ -24,8 +24,8 @@ class RatpackRoutesTest extends AbstractRatpackRoutesTest {
|
|||
|
||||
@Override
|
||||
protected void configure(RatpackServerSpec serverSpec) throws Exception {
|
||||
RatpackTelemetry telemetry = RatpackTelemetry.create(testing.getOpenTelemetry());
|
||||
serverSpec.registryOf(telemetry::configureServerRegistry);
|
||||
RatpackServerTelemetry telemetry = RatpackServerTelemetry.create(testing.getOpenTelemetry());
|
||||
serverSpec.registryOf(telemetry::configureRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue