-
Notifications
You must be signed in to change notification settings - Fork 827
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement OpenTracing Shim specifying custom propagators (#3059)
- Loading branch information
Sergei Malafeev
authored
Mar 31, 2021
1 parent
60921d4
commit 840e5cf
Showing
13 changed files
with
395 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
opentracing-shim/src/main/java/io/opentelemetry/opentracingshim/OpenTracingPropagators.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.opentracingshim; | ||
|
||
import io.opentelemetry.context.propagation.TextMapPropagator; | ||
|
||
/** | ||
* Container for {@link io.opentracing.propagation.Format.Builtin#TEXT_MAP} and {@link | ||
* io.opentracing.propagation.Format.Builtin#HTTP_HEADERS} format propagators. | ||
*/ | ||
public class OpenTracingPropagators { | ||
private final TextMapPropagator textMapPropagator; | ||
private final TextMapPropagator httpHeadersPropagator; | ||
|
||
OpenTracingPropagators( | ||
TextMapPropagator textMapPropagator, TextMapPropagator httpHeadersPropagator) { | ||
this.textMapPropagator = textMapPropagator; | ||
this.httpHeadersPropagator = httpHeadersPropagator; | ||
} | ||
|
||
/** | ||
* Returns a new builder instance for {@link OpenTracingPropagators}. | ||
* | ||
* @return a new builder instance for {@link OpenTracingPropagators}. | ||
*/ | ||
public static OpenTracingPropagatorsBuilder builder() { | ||
return new OpenTracingPropagatorsBuilder(); | ||
} | ||
|
||
/** | ||
* Returns the propagator for {@link io.opentracing.propagation.Format.Builtin#TEXT_MAP} format. | ||
* | ||
* @return the propagator for {@link io.opentracing.propagation.Format.Builtin#TEXT_MAP} format. | ||
*/ | ||
public TextMapPropagator textMapPropagator() { | ||
return textMapPropagator; | ||
} | ||
|
||
/** | ||
* Returns the propagator for {@link io.opentracing.propagation.Format.Builtin#HTTP_HEADERS} | ||
* format. | ||
* | ||
* @return the propagator for {@link io.opentracing.propagation.Format.Builtin#HTTP_HEADERS} | ||
* format. | ||
*/ | ||
public TextMapPropagator httpHeadersPropagator() { | ||
return httpHeadersPropagator; | ||
} | ||
} |
43 changes: 43 additions & 0 deletions
43
...ng-shim/src/main/java/io/opentelemetry/opentracingshim/OpenTracingPropagatorsBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.opentracingshim; | ||
|
||
import io.opentelemetry.api.GlobalOpenTelemetry; | ||
import io.opentelemetry.context.propagation.TextMapPropagator; | ||
import java.util.Objects; | ||
|
||
/** Builder for {@link OpenTracingPropagators}. */ | ||
public class OpenTracingPropagatorsBuilder { | ||
|
||
private TextMapPropagator textMapPropagator = | ||
GlobalOpenTelemetry.getPropagators().getTextMapPropagator(); | ||
private TextMapPropagator httpHeadersPropagator = | ||
GlobalOpenTelemetry.getPropagators().getTextMapPropagator(); | ||
|
||
/** Set propagator for {@link io.opentracing.propagation.Format.Builtin#TEXT_MAP} format. */ | ||
public OpenTracingPropagatorsBuilder setTextMap(TextMapPropagator textMapPropagator) { | ||
Objects.requireNonNull(textMapPropagator, "textMapPropagator"); | ||
this.textMapPropagator = textMapPropagator; | ||
return this; | ||
} | ||
|
||
/** Set propagator for {@link io.opentracing.propagation.Format.Builtin#HTTP_HEADERS} format. */ | ||
public OpenTracingPropagatorsBuilder setHttpHeaders(TextMapPropagator httpHeadersPropagator) { | ||
Objects.requireNonNull(httpHeadersPropagator, "httpHeadersPropagator"); | ||
this.httpHeadersPropagator = httpHeadersPropagator; | ||
return this; | ||
} | ||
|
||
/** | ||
* Constructs a new instance of the {@link OpenTracingPropagators} based on the builder's values. | ||
* If propagators are not set then {@code GlobalOpenTelemetry.getPropagators()} is used. | ||
* | ||
* @return a new Propagators instance. | ||
*/ | ||
public OpenTracingPropagators build() { | ||
return new OpenTracingPropagators(textMapPropagator, httpHeadersPropagator); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 43 additions & 0 deletions
43
opentracing-shim/src/test/java/io/opentelemetry/opentracingshim/CustomTextMapPropagator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* Copyright The OpenTelemetry Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package io.opentelemetry.opentracingshim; | ||
|
||
import io.opentelemetry.context.Context; | ||
import io.opentelemetry.context.propagation.TextMapGetter; | ||
import io.opentelemetry.context.propagation.TextMapPropagator; | ||
import io.opentelemetry.context.propagation.TextMapSetter; | ||
import java.util.Collection; | ||
import java.util.Collections; | ||
import javax.annotation.Nullable; | ||
|
||
class CustomTextMapPropagator implements TextMapPropagator { | ||
private boolean extracted; | ||
private boolean injected; | ||
|
||
@Override | ||
public Collection<String> fields() { | ||
return Collections.emptyList(); | ||
} | ||
|
||
@Override | ||
public <C> void inject(Context context, @Nullable C carrier, TextMapSetter<C> setter) { | ||
injected = true; | ||
} | ||
|
||
@Override | ||
public <C> Context extract(Context context, @Nullable C carrier, TextMapGetter<C> getter) { | ||
extracted = true; | ||
return context; | ||
} | ||
|
||
public boolean isExtracted() { | ||
return extracted; | ||
} | ||
|
||
public boolean isInjected() { | ||
return injected; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.