Split ArmeriaTelemetry into client and server (#12851)
This commit is contained in:
parent
de9c891cf1
commit
1381f16816
|
@ -9,8 +9,10 @@ import com.linecorp.armeria.client.HttpClient;
|
|||
import com.linecorp.armeria.server.HttpService;
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.api.incubator.config.internal.CommonConfig;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaTelemetry;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaTelemetryBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaClientTelemetry;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaClientTelemetryBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaServerTelemetry;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaServerTelemetryBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderUtil;
|
||||
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
|
||||
import java.util.function.Function;
|
||||
|
@ -23,15 +25,25 @@ public final class ArmeriaSingletons {
|
|||
public static final Function<? super HttpService, ? extends HttpService> SERVER_DECORATOR;
|
||||
|
||||
static {
|
||||
ArmeriaTelemetryBuilder builder = ArmeriaTelemetry.builder(GlobalOpenTelemetry.get());
|
||||
CommonConfig config = AgentCommonConfig.get();
|
||||
ArmeriaInstrumenterBuilderUtil.getClientBuilderExtractor().apply(builder).configure(config);
|
||||
ArmeriaInstrumenterBuilderUtil.getServerBuilderExtractor().apply(builder).configure(config);
|
||||
ArmeriaTelemetry telemetry = builder.build();
|
||||
|
||||
CLIENT_DECORATOR = telemetry.newClientDecorator();
|
||||
ArmeriaClientTelemetryBuilder clientBuilder =
|
||||
ArmeriaClientTelemetry.builder(GlobalOpenTelemetry.get());
|
||||
ArmeriaInstrumenterBuilderUtil.getClientBuilderExtractor()
|
||||
.apply(clientBuilder)
|
||||
.configure(config);
|
||||
ArmeriaClientTelemetry clientTelemetry = clientBuilder.build();
|
||||
|
||||
ArmeriaServerTelemetryBuilder serverBuilder =
|
||||
ArmeriaServerTelemetry.builder(GlobalOpenTelemetry.get());
|
||||
ArmeriaInstrumenterBuilderUtil.getServerBuilderExtractor()
|
||||
.apply(serverBuilder)
|
||||
.configure(config);
|
||||
ArmeriaServerTelemetry serverTelemetry = serverBuilder.build();
|
||||
|
||||
CLIENT_DECORATOR = clientTelemetry.newDecorator();
|
||||
Function<? super HttpService, ? extends HttpService> libraryDecorator =
|
||||
telemetry.newServiceDecorator().compose(ResponseCustomizingDecorator::new);
|
||||
serverTelemetry.newDecorator().compose(ResponseCustomizingDecorator::new);
|
||||
SERVER_DECORATOR = service -> new ServerDecorator(service, libraryDecorator.apply(service));
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.linecorp.armeria.client.ClientRequestContext;
|
||||
import com.linecorp.armeria.client.HttpClient;
|
||||
import com.linecorp.armeria.common.logging.RequestLog;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
|
||||
import java.util.function.Function;
|
||||
|
||||
/** Entrypoint for instrumenting Armeria clients. */
|
||||
public final class ArmeriaClientTelemetry {
|
||||
|
||||
/**
|
||||
* Returns a new {@link ArmeriaClientTelemetry} configured with the given {@link OpenTelemetry}.
|
||||
*/
|
||||
public static ArmeriaClientTelemetry create(OpenTelemetry openTelemetry) {
|
||||
return builder(openTelemetry).build();
|
||||
}
|
||||
|
||||
public static ArmeriaClientTelemetryBuilder builder(OpenTelemetry openTelemetry) {
|
||||
return new ArmeriaClientTelemetryBuilder(openTelemetry);
|
||||
}
|
||||
|
||||
private final Instrumenter<ClientRequestContext, RequestLog> instrumenter;
|
||||
|
||||
ArmeriaClientTelemetry(Instrumenter<ClientRequestContext, RequestLog> instrumenter) {
|
||||
this.instrumenter = instrumenter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new {@link HttpClient} decorator for use with methods like {@link
|
||||
* com.linecorp.armeria.client.ClientBuilder#decorator(Function)}.
|
||||
*/
|
||||
public Function<? super HttpClient, ? extends HttpClient> newDecorator() {
|
||||
return client -> new OpenTelemetryClient(client, instrumenter);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import com.linecorp.armeria.client.ClientRequestContext;
|
||||
import com.linecorp.armeria.common.logging.RequestLog;
|
||||
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.instrumenter.SpanStatusExtractor;
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderFactory;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderUtil;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.Experimental;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
public final class ArmeriaClientTelemetryBuilder {
|
||||
|
||||
private final DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog> builder;
|
||||
|
||||
static {
|
||||
ArmeriaInstrumenterBuilderUtil.setClientBuilderExtractor(builder -> builder.builder);
|
||||
Experimental.setSetEmitExperimentalClientTelemetry(
|
||||
(builder, emit) -> builder.builder.setEmitExperimentalHttpClientMetrics(emit));
|
||||
Experimental.setSetClientPeerService(
|
||||
(builder, peerService) -> builder.builder.setPeerService(peerService));
|
||||
}
|
||||
|
||||
ArmeriaClientTelemetryBuilder(OpenTelemetry openTelemetry) {
|
||||
builder = ArmeriaInstrumenterBuilderFactory.getClientBuilder(openTelemetry);
|
||||
}
|
||||
|
||||
/** Sets the status extractor for client spans. */
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaClientTelemetryBuilder setStatusExtractor(
|
||||
Function<
|
||||
SpanStatusExtractor<? super ClientRequestContext, ? super RequestLog>,
|
||||
? extends SpanStatusExtractor<? super ClientRequestContext, ? super RequestLog>>
|
||||
statusExtractor) {
|
||||
builder.setStatusExtractor(statusExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an extra {@link AttributesExtractor} to invoke to set attributes to instrumented items.
|
||||
* The {@link AttributesExtractor} will be executed after all default extractors.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaClientTelemetryBuilder addAttributesExtractor(
|
||||
AttributesExtractor<? super ClientRequestContext, ? super RequestLog> 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 ArmeriaClientTelemetryBuilder 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 ArmeriaClientTelemetryBuilder 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 ArmeriaClientTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
|
||||
builder.setKnownMethods(knownMethods);
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom client {@link SpanNameExtractor} via transform function. */
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaClientTelemetryBuilder setSpanNameExtractor(
|
||||
Function<
|
||||
SpanNameExtractor<? super ClientRequestContext>,
|
||||
? extends SpanNameExtractor<? super ClientRequestContext>>
|
||||
clientSpanNameExtractor) {
|
||||
builder.setSpanNameExtractor(clientSpanNameExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArmeriaClientTelemetry build() {
|
||||
return new ArmeriaClientTelemetry(builder.build());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.linecorp.armeria.common.logging.RequestLog;
|
||||
import com.linecorp.armeria.server.HttpService;
|
||||
import com.linecorp.armeria.server.ServiceRequestContext;
|
||||
import io.opentelemetry.api.OpenTelemetry;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
|
||||
import java.util.function.Function;
|
||||
|
||||
/** Entrypoint for instrumenting Armeria services. */
|
||||
public final class ArmeriaServerTelemetry {
|
||||
|
||||
/**
|
||||
* Returns a new {@link ArmeriaServerTelemetry} configured with the given {@link OpenTelemetry}.
|
||||
*/
|
||||
public static ArmeriaServerTelemetry create(OpenTelemetry openTelemetry) {
|
||||
return builder(openTelemetry).build();
|
||||
}
|
||||
|
||||
public static ArmeriaServerTelemetryBuilder builder(OpenTelemetry openTelemetry) {
|
||||
return new ArmeriaServerTelemetryBuilder(openTelemetry);
|
||||
}
|
||||
|
||||
private final Instrumenter<ServiceRequestContext, RequestLog> instrumenter;
|
||||
|
||||
ArmeriaServerTelemetry(Instrumenter<ServiceRequestContext, RequestLog> instrumenter) {
|
||||
this.instrumenter = instrumenter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new {@link HttpService} decorator for use with methods like {@link
|
||||
* HttpService#decorate(Function)}.
|
||||
*/
|
||||
public Function<? super HttpService, ? extends HttpService> newDecorator() {
|
||||
return service -> new OpenTelemetryService(service, instrumenter);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import com.linecorp.armeria.common.logging.RequestLog;
|
||||
import com.linecorp.armeria.server.ServiceRequestContext;
|
||||
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.instrumenter.SpanStatusExtractor;
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderFactory;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderUtil;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.Experimental;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
public final class ArmeriaServerTelemetryBuilder {
|
||||
|
||||
private final DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog> builder;
|
||||
|
||||
static {
|
||||
ArmeriaInstrumenterBuilderUtil.setServerBuilderExtractor(builder -> builder.builder);
|
||||
Experimental.setSetEmitExperimentalServerTelemetry(
|
||||
(builder, emit) -> builder.builder.setEmitExperimentalHttpServerMetrics(emit));
|
||||
}
|
||||
|
||||
ArmeriaServerTelemetryBuilder(OpenTelemetry openTelemetry) {
|
||||
builder = ArmeriaInstrumenterBuilderFactory.getServerBuilder(openTelemetry);
|
||||
}
|
||||
|
||||
/** Sets the status extractor for server spans. */
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaServerTelemetryBuilder setStatusExtractor(
|
||||
Function<
|
||||
SpanStatusExtractor<? super ServiceRequestContext, ? super RequestLog>,
|
||||
? extends SpanStatusExtractor<? super ServiceRequestContext, ? super RequestLog>>
|
||||
statusExtractor) {
|
||||
builder.setStatusExtractor(statusExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an extra {@link AttributesExtractor} to invoke to set attributes to instrumented items.
|
||||
* The {@link AttributesExtractor} will be executed after all default extractors.
|
||||
*/
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaServerTelemetryBuilder addAttributesExtractor(
|
||||
AttributesExtractor<? super ServiceRequestContext, ? super RequestLog> 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 ArmeriaServerTelemetryBuilder 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 ArmeriaServerTelemetryBuilder 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 ArmeriaServerTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
|
||||
builder.setKnownMethods(knownMethods);
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom server {@link SpanNameExtractor} via transform function. */
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaServerTelemetryBuilder setSpanNameExtractor(
|
||||
Function<
|
||||
SpanNameExtractor<? super ServiceRequestContext>,
|
||||
? extends SpanNameExtractor<? super ServiceRequestContext>>
|
||||
serverSpanNameExtractor) {
|
||||
builder.setSpanNameExtractor(serverSpanNameExtractor);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArmeriaServerTelemetry build() {
|
||||
return new ArmeriaServerTelemetry(builder.build());
|
||||
}
|
||||
}
|
|
@ -14,14 +14,30 @@ import io.opentelemetry.api.OpenTelemetry;
|
|||
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
|
||||
import java.util.function.Function;
|
||||
|
||||
/** Entrypoint for instrumenting Armeria services or clients. */
|
||||
/**
|
||||
* Entrypoint for instrumenting Armeria services or clients.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaClientTelemetry} and {@link ArmeriaServerTelemetry} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public final class ArmeriaTelemetry {
|
||||
|
||||
/** Returns a new {@link ArmeriaTelemetry} configured with the given {@link OpenTelemetry}. */
|
||||
/**
|
||||
* Returns a new {@link ArmeriaTelemetry} configured with the given {@link OpenTelemetry}.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaClientTelemetry#create(OpenTelemetry)} and {@link
|
||||
* ArmeriaServerTelemetry#create(OpenTelemetry)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public static ArmeriaTelemetry create(OpenTelemetry openTelemetry) {
|
||||
return builder(openTelemetry).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link ArmeriaClientTelemetry#builder(OpenTelemetry)} and {@link
|
||||
* ArmeriaServerTelemetry#builder(OpenTelemetry)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public static ArmeriaTelemetryBuilder builder(OpenTelemetry openTelemetry) {
|
||||
return new ArmeriaTelemetryBuilder(openTelemetry);
|
||||
}
|
||||
|
@ -39,7 +55,10 @@ public final class ArmeriaTelemetry {
|
|||
/**
|
||||
* Returns a new {@link HttpClient} decorator for use with methods like {@link
|
||||
* com.linecorp.armeria.client.ClientBuilder#decorator(Function)}.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaClientTelemetry#newDecorator()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public Function<? super HttpClient, ? extends HttpClient> newClientDecorator() {
|
||||
return client -> new OpenTelemetryClient(client, clientInstrumenter);
|
||||
}
|
||||
|
@ -47,7 +66,10 @@ public final class ArmeriaTelemetry {
|
|||
/**
|
||||
* Returns a new {@link HttpService} decorator for use with methods like {@link
|
||||
* HttpService#decorate(Function)}.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaServerTelemetry#newDecorator()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public Function<? super HttpService, ? extends HttpService> newServiceDecorator() {
|
||||
return service -> new OpenTelemetryService(service, serverInstrumenter);
|
||||
}
|
||||
|
|
|
@ -19,11 +19,16 @@ import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor;
|
|||
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractorBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderFactory;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderUtil;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.internal.Experimental;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder} and {@link ArmeriaServerTelemetryBuilder}
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public final class ArmeriaTelemetryBuilder {
|
||||
|
||||
private final DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>
|
||||
|
@ -31,13 +36,6 @@ public final class ArmeriaTelemetryBuilder {
|
|||
private final DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>
|
||||
serverBuilder;
|
||||
|
||||
static {
|
||||
ArmeriaInstrumenterBuilderUtil.setClientBuilderExtractor(
|
||||
ArmeriaTelemetryBuilder::getClientBuilder);
|
||||
ArmeriaInstrumenterBuilderUtil.setServerBuilderExtractor(
|
||||
ArmeriaTelemetryBuilder::getServerBuilder);
|
||||
}
|
||||
|
||||
ArmeriaTelemetryBuilder(OpenTelemetry openTelemetry) {
|
||||
clientBuilder = ArmeriaInstrumenterBuilderFactory.getClientBuilder(openTelemetry);
|
||||
serverBuilder = ArmeriaInstrumenterBuilderFactory.getServerBuilder(openTelemetry);
|
||||
|
@ -46,8 +44,8 @@ public final class ArmeriaTelemetryBuilder {
|
|||
/**
|
||||
* Sets the status extractor for both client and server spans.
|
||||
*
|
||||
* @deprecated Use {@link #setClientStatusExtractor(Function)} or {@link
|
||||
* #setServerStatusExtractor(Function)} instead.
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder#setStatusExtractor(Function)} and {@link
|
||||
* ArmeriaServerTelemetryBuilder#setStatusExtractor(Function)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
|
@ -62,7 +60,12 @@ public final class ArmeriaTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Sets the status extractor for client spans. */
|
||||
/**
|
||||
* Sets the status extractor for client spans.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder#setStatusExtractor(Function)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setClientStatusExtractor(
|
||||
Function<
|
||||
|
@ -73,7 +76,12 @@ public final class ArmeriaTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Sets the status extractor for server spans. */
|
||||
/**
|
||||
* Sets the status extractor for server spans.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaServerTelemetryBuilder#setStatusExtractor(Function)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setServerStatusExtractor(
|
||||
Function<
|
||||
|
@ -88,8 +96,9 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* 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 #addClientAttributeExtractor(AttributesExtractor)} or {@link
|
||||
* #addServerAttributeExtractor(AttributesExtractor)} instead.
|
||||
* @deprecated Use {@link
|
||||
* ArmeriaClientTelemetryBuilder#addAttributesExtractor(AttributesExtractor)} and {@link
|
||||
* ArmeriaServerTelemetryBuilder#addAttributesExtractor(AttributesExtractor)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
|
@ -104,7 +113,11 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* Adds an extra client-only {@link AttributesExtractor} to invoke to set attributes to
|
||||
* instrumented items. The {@link AttributesExtractor} will be executed after all default
|
||||
* extractors.
|
||||
*
|
||||
* @deprecated Use {@link
|
||||
* ArmeriaClientTelemetryBuilder#addAttributesExtractor(AttributesExtractor)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder addClientAttributeExtractor(
|
||||
AttributesExtractor<? super ClientRequestContext, ? super RequestLog> attributesExtractor) {
|
||||
|
@ -116,7 +129,11 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* Adds an extra server-only {@link AttributesExtractor} to invoke to set attributes to
|
||||
* instrumented items. The {@link AttributesExtractor} will be executed after all default
|
||||
* extractors.
|
||||
*
|
||||
* @deprecated Use {@link
|
||||
* ArmeriaServerTelemetryBuilder#addAttributesExtractor(AttributesExtractor)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder addServerAttributeExtractor(
|
||||
AttributesExtractor<? super ServiceRequestContext, ? super RequestLog> attributesExtractor) {
|
||||
|
@ -124,7 +141,13 @@ public final class ArmeriaTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Sets the {@code peer.service} attribute for http client spans. */
|
||||
/**
|
||||
* Sets the {@code peer.service} attribute for http client spans.
|
||||
*
|
||||
* @deprecated Use {@link Experimental#setClientPeerService(ArmeriaClientTelemetryBuilder,
|
||||
* String)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setPeerService(String peerService) {
|
||||
clientBuilder.setPeerService(peerService);
|
||||
|
@ -135,7 +158,9 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* Configures the HTTP client request headers that will be captured as span attributes.
|
||||
*
|
||||
* @param requestHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder#setCapturedRequestHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setCapturedClientRequestHeaders(List<String> requestHeaders) {
|
||||
clientBuilder.setCapturedRequestHeaders(requestHeaders);
|
||||
|
@ -146,7 +171,9 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* Configures the HTTP client response headers that will be captured as span attributes.
|
||||
*
|
||||
* @param responseHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder#setCapturedResponseHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setCapturedClientResponseHeaders(List<String> responseHeaders) {
|
||||
clientBuilder.setCapturedResponseHeaders(responseHeaders);
|
||||
|
@ -157,7 +184,9 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* Configures the HTTP server request headers that will be captured as span attributes.
|
||||
*
|
||||
* @param requestHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link ArmeriaServerTelemetryBuilder#setCapturedRequestHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setCapturedServerRequestHeaders(List<String> requestHeaders) {
|
||||
serverBuilder.setCapturedRequestHeaders(requestHeaders);
|
||||
|
@ -168,7 +197,9 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* Configures the HTTP server response headers that will be captured as span attributes.
|
||||
*
|
||||
* @param responseHeaders A list of HTTP header names.
|
||||
* @deprecated Use {@link ArmeriaServerTelemetryBuilder#setCapturedResponseHeaders(List)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setCapturedServerResponseHeaders(List<String> responseHeaders) {
|
||||
serverBuilder.setCapturedResponseHeaders(responseHeaders);
|
||||
|
@ -188,7 +219,10 @@ public final class ArmeriaTelemetryBuilder {
|
|||
* @param knownMethods A set of recognized HTTP request methods.
|
||||
* @see HttpClientAttributesExtractorBuilder#setKnownMethods(Set)
|
||||
* @see HttpServerAttributesExtractorBuilder#setKnownMethods(Set)
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder#setKnownMethods(Set)} and {@link
|
||||
* ArmeriaServerTelemetryBuilder#setKnownMethods(Set)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
|
||||
clientBuilder.setKnownMethods(knownMethods);
|
||||
|
@ -201,7 +235,10 @@ public final class ArmeriaTelemetryBuilder {
|
|||
*
|
||||
* @param emitExperimentalHttpClientMetrics {@code true} if the experimental HTTP client metrics
|
||||
* are to be emitted.
|
||||
* @deprecated Use {@link Experimental#setEmitExperimentalTelemetry(ArmeriaClientTelemetryBuilder,
|
||||
* boolean)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setEmitExperimentalHttpClientMetrics(
|
||||
boolean emitExperimentalHttpClientMetrics) {
|
||||
|
@ -214,7 +251,10 @@ public final class ArmeriaTelemetryBuilder {
|
|||
*
|
||||
* @param emitExperimentalHttpServerMetrics {@code true} if the experimental HTTP server metrics
|
||||
* are to be emitted.
|
||||
* @deprecated Use {@link Experimental#setEmitExperimentalTelemetry(ArmeriaServerTelemetryBuilder,
|
||||
* boolean)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setEmitExperimentalHttpServerMetrics(
|
||||
boolean emitExperimentalHttpServerMetrics) {
|
||||
|
@ -222,7 +262,12 @@ public final class ArmeriaTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom client {@link SpanNameExtractor} via transform function. */
|
||||
/**
|
||||
* Sets custom client {@link SpanNameExtractor} via transform function.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder#setSpanNameExtractor(Function)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setClientSpanNameExtractor(
|
||||
Function<
|
||||
|
@ -233,7 +278,12 @@ public final class ArmeriaTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Sets custom server {@link SpanNameExtractor} via transform function. */
|
||||
/**
|
||||
* Sets custom server {@link SpanNameExtractor} via transform function.
|
||||
*
|
||||
* @deprecated Use {@link ArmeriaServerTelemetryBuilder#setSpanNameExtractor(Function)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CanIgnoreReturnValue
|
||||
public ArmeriaTelemetryBuilder setServerSpanNameExtractor(
|
||||
Function<
|
||||
|
@ -244,17 +294,12 @@ public final class ArmeriaTelemetryBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link ArmeriaClientTelemetryBuilder#build()} and {@link
|
||||
* ArmeriaServerTelemetryBuilder#build()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public ArmeriaTelemetry build() {
|
||||
return new ArmeriaTelemetry(clientBuilder.build(), serverBuilder.build());
|
||||
}
|
||||
|
||||
private DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>
|
||||
getClientBuilder() {
|
||||
return clientBuilder;
|
||||
}
|
||||
|
||||
private DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>
|
||||
getServerBuilder() {
|
||||
return serverBuilder;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,8 @@ import com.linecorp.armeria.common.logging.RequestLog;
|
|||
import com.linecorp.armeria.server.ServiceRequestContext;
|
||||
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
|
||||
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaTelemetryBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaClientTelemetryBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaServerTelemetryBuilder;
|
||||
import java.util.function.Function;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
@ -23,19 +24,19 @@ public class ArmeriaInstrumenterBuilderUtil {
|
|||
|
||||
@Nullable
|
||||
private static Function<
|
||||
ArmeriaTelemetryBuilder,
|
||||
ArmeriaClientTelemetryBuilder,
|
||||
DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>>
|
||||
clientBuilderExtractor;
|
||||
|
||||
@Nullable
|
||||
private static Function<
|
||||
ArmeriaTelemetryBuilder,
|
||||
ArmeriaServerTelemetryBuilder,
|
||||
DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>>
|
||||
serverBuilderExtractor;
|
||||
|
||||
@Nullable
|
||||
public static Function<
|
||||
ArmeriaTelemetryBuilder,
|
||||
ArmeriaClientTelemetryBuilder,
|
||||
DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>>
|
||||
getClientBuilderExtractor() {
|
||||
return clientBuilderExtractor;
|
||||
|
@ -43,7 +44,7 @@ public class ArmeriaInstrumenterBuilderUtil {
|
|||
|
||||
public static void setClientBuilderExtractor(
|
||||
Function<
|
||||
ArmeriaTelemetryBuilder,
|
||||
ArmeriaClientTelemetryBuilder,
|
||||
DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>>
|
||||
clientBuilderExtractor) {
|
||||
ArmeriaInstrumenterBuilderUtil.clientBuilderExtractor = clientBuilderExtractor;
|
||||
|
@ -51,7 +52,7 @@ public class ArmeriaInstrumenterBuilderUtil {
|
|||
|
||||
@Nullable
|
||||
public static Function<
|
||||
ArmeriaTelemetryBuilder,
|
||||
ArmeriaServerTelemetryBuilder,
|
||||
DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>>
|
||||
getServerBuilderExtractor() {
|
||||
return serverBuilderExtractor;
|
||||
|
@ -59,7 +60,7 @@ public class ArmeriaInstrumenterBuilderUtil {
|
|||
|
||||
public static void setServerBuilderExtractor(
|
||||
Function<
|
||||
ArmeriaTelemetryBuilder,
|
||||
ArmeriaServerTelemetryBuilder,
|
||||
DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>>
|
||||
serverBuilderExtractor) {
|
||||
ArmeriaInstrumenterBuilderUtil.serverBuilderExtractor = serverBuilderExtractor;
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3.internal;
|
||||
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaClientTelemetryBuilder;
|
||||
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaServerTelemetryBuilder;
|
||||
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<ArmeriaClientTelemetryBuilder, Boolean>
|
||||
setEmitExperimentalClientTelemetry;
|
||||
|
||||
@Nullable
|
||||
private static volatile BiConsumer<ArmeriaServerTelemetryBuilder, Boolean>
|
||||
setEmitExperimentalServerTelemetry;
|
||||
|
||||
@Nullable
|
||||
private static volatile BiConsumer<ArmeriaClientTelemetryBuilder, String> setClientPeerService;
|
||||
|
||||
public static void setEmitExperimentalTelemetry(
|
||||
ArmeriaClientTelemetryBuilder builder, boolean emitExperimentalTelemetry) {
|
||||
if (setEmitExperimentalClientTelemetry != null) {
|
||||
setEmitExperimentalClientTelemetry.accept(builder, emitExperimentalTelemetry);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setEmitExperimentalTelemetry(
|
||||
ArmeriaServerTelemetryBuilder builder, boolean emitExperimentalTelemetry) {
|
||||
if (setEmitExperimentalServerTelemetry != null) {
|
||||
setEmitExperimentalServerTelemetry.accept(builder, emitExperimentalTelemetry);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setClientPeerService(
|
||||
ArmeriaClientTelemetryBuilder builder, String peerService) {
|
||||
if (setClientPeerService != null) {
|
||||
setClientPeerService.accept(builder, peerService);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setSetEmitExperimentalClientTelemetry(
|
||||
BiConsumer<ArmeriaClientTelemetryBuilder, Boolean> setEmitExperimentalClientTelemetry) {
|
||||
Experimental.setEmitExperimentalClientTelemetry = setEmitExperimentalClientTelemetry;
|
||||
}
|
||||
|
||||
public static void setSetEmitExperimentalServerTelemetry(
|
||||
BiConsumer<ArmeriaServerTelemetryBuilder, Boolean> setEmitExperimentalServerTelemetry) {
|
||||
Experimental.setEmitExperimentalServerTelemetry = setEmitExperimentalServerTelemetry;
|
||||
}
|
||||
|
||||
public static void setSetClientPeerService(
|
||||
BiConsumer<ArmeriaClientTelemetryBuilder, String> setClientPeerService) {
|
||||
Experimental.setClientPeerService = setClientPeerService;
|
||||
}
|
||||
|
||||
private Experimental() {}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.linecorp.armeria.client.WebClientBuilder;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
|
||||
import java.util.Collections;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
@SuppressWarnings("deprecation") // testing deprecated API
|
||||
class ArmeriaHttpClientOldTest extends AbstractArmeriaHttpClientTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forLibrary();
|
||||
|
||||
@Override
|
||||
protected WebClientBuilder configureClient(WebClientBuilder clientBuilder) {
|
||||
return clientBuilder.decorator(
|
||||
ArmeriaTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedClientRequestHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedClientResponseHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
|
||||
.build()
|
||||
.newClientDecorator());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(HttpClientTestOptions.Builder optionsBuilder) {
|
||||
super.configure(optionsBuilder);
|
||||
|
||||
// library instrumentation doesn't have a good way of suppressing nested CLIENT spans yet
|
||||
optionsBuilder.disableTestWithClientParent();
|
||||
|
||||
// Agent users have automatic propagation through executor instrumentation, but library users
|
||||
// should do manually using Armeria patterns.
|
||||
optionsBuilder.disableTestCallbackWithParent();
|
||||
optionsBuilder.disableTestErrorWithCallback();
|
||||
}
|
||||
}
|
|
@ -21,13 +21,13 @@ class ArmeriaHttpClientTest extends AbstractArmeriaHttpClientTest {
|
|||
@Override
|
||||
protected WebClientBuilder configureClient(WebClientBuilder clientBuilder) {
|
||||
return clientBuilder.decorator(
|
||||
ArmeriaTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedClientRequestHeaders(
|
||||
ArmeriaClientTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedRequestHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedClientResponseHeaders(
|
||||
.setCapturedResponseHeaders(
|
||||
Collections.singletonList(AbstractHttpClientTest.TEST_RESPONSE_HEADER))
|
||||
.build()
|
||||
.newClientDecorator());
|
||||
.newDecorator());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.linecorp.armeria.server.ServerBuilder;
|
||||
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 java.util.Collections;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
@SuppressWarnings("deprecation") // testing deprecated API
|
||||
class ArmeriaHttpServerOldTest extends AbstractArmeriaHttpServerTest {
|
||||
|
||||
@RegisterExtension
|
||||
static final InstrumentationExtension testing = HttpServerInstrumentationExtension.forLibrary();
|
||||
|
||||
@Override
|
||||
protected ServerBuilder configureServer(ServerBuilder sb) {
|
||||
return sb.decorator(
|
||||
ArmeriaTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedServerRequestHeaders(
|
||||
Collections.singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedServerResponseHeaders(
|
||||
Collections.singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
.build()
|
||||
.newServiceDecorator());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(HttpServerTestOptions options) {
|
||||
super.configure(options);
|
||||
// library instrumentation does not create a span at all
|
||||
options.disableTestNonStandardHttpMethod();
|
||||
}
|
||||
}
|
|
@ -21,13 +21,13 @@ class ArmeriaHttpServerTest extends AbstractArmeriaHttpServerTest {
|
|||
@Override
|
||||
protected ServerBuilder configureServer(ServerBuilder sb) {
|
||||
return sb.decorator(
|
||||
ArmeriaTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedServerRequestHeaders(
|
||||
ArmeriaServerTelemetry.builder(testing.getOpenTelemetry())
|
||||
.setCapturedRequestHeaders(
|
||||
Collections.singletonList(AbstractHttpServerTest.TEST_REQUEST_HEADER))
|
||||
.setCapturedServerResponseHeaders(
|
||||
.setCapturedResponseHeaders(
|
||||
Collections.singletonList(AbstractHttpServerTest.TEST_RESPONSE_HEADER))
|
||||
.build()
|
||||
.newServiceDecorator());
|
||||
.newDecorator());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue