Rename CorrelationContext with Baggage (#1691)
* Rename CorrelationContext with Baggage Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com> * Fix review comments Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com> * Rename contextBuildet to baggageBuilder Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
parent
12af6d9fdf
commit
840ae850ec
|
|
@ -21,8 +21,8 @@ def subprojects = [
|
|||
project(':opentelemetry-integration-tests'),
|
||||
project(':opentelemetry-integration-tests-tracecontext'),
|
||||
project(':opentelemetry-opentracing-shim'),
|
||||
project(':opentelemetry-sdk-baggage'),
|
||||
project(':opentelemetry-sdk-common'),
|
||||
project(':opentelemetry-sdk-correlation-context'),
|
||||
project(':opentelemetry-sdk-metrics'),
|
||||
project(':opentelemetry-sdk-tracing'),
|
||||
project(':opentelemetry-sdk'),
|
||||
|
|
|
|||
|
|
@ -16,11 +16,11 @@
|
|||
|
||||
package io.opentelemetry;
|
||||
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.baggage.DefaultBaggageManager;
|
||||
import io.opentelemetry.baggage.spi.BaggageManagerFactory;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.context.propagation.DefaultContextPropagators;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.DefaultCorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.spi.CorrelationContextManagerFactory;
|
||||
import io.opentelemetry.internal.Obfuscated;
|
||||
import io.opentelemetry.internal.Utils;
|
||||
import io.opentelemetry.metrics.DefaultMeterProvider;
|
||||
|
|
@ -38,13 +38,13 @@ import javax.annotation.concurrent.ThreadSafe;
|
|||
|
||||
/**
|
||||
* This class provides a static global accessor for telemetry objects {@link Tracer}, {@link Meter}
|
||||
* and {@link CorrelationContextManager}.
|
||||
* and {@link BaggageManager}.
|
||||
*
|
||||
* <p>The telemetry objects are lazy-loaded singletons resolved via {@link ServiceLoader} mechanism.
|
||||
*
|
||||
* @see TracerProvider
|
||||
* @see MeterProviderFactory
|
||||
* @see CorrelationContextManagerFactory
|
||||
* @see BaggageManagerFactory
|
||||
*/
|
||||
@ThreadSafe
|
||||
public final class OpenTelemetry {
|
||||
|
|
@ -54,7 +54,7 @@ public final class OpenTelemetry {
|
|||
|
||||
private final TracerProvider tracerProvider;
|
||||
private final MeterProvider meterProvider;
|
||||
private final CorrelationContextManager contextManager;
|
||||
private final BaggageManager contextManager;
|
||||
|
||||
private volatile ContextPropagators propagators = DefaultContextPropagators.builder().build();
|
||||
|
||||
|
|
@ -144,15 +144,14 @@ public final class OpenTelemetry {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a singleton {@link CorrelationContextManager}.
|
||||
* Returns a singleton {@link BaggageManager}.
|
||||
*
|
||||
* @return registered manager or default via {@link
|
||||
* DefaultCorrelationContextManager#getInstance()}.
|
||||
* @return registered manager or default via {@link DefaultBaggageManager#getInstance()}.
|
||||
* @throws IllegalStateException if a specified manager (via system properties) could not be
|
||||
* found.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
public static CorrelationContextManager getCorrelationContextManager() {
|
||||
public static BaggageManager getBaggageManager() {
|
||||
return getInstance().contextManager;
|
||||
}
|
||||
|
||||
|
|
@ -209,12 +208,11 @@ public final class OpenTelemetry {
|
|||
meterProviderFactory != null
|
||||
? meterProviderFactory.create()
|
||||
: DefaultMeterProvider.getInstance();
|
||||
CorrelationContextManagerFactory contextManagerProvider =
|
||||
loadSpi(CorrelationContextManagerFactory.class);
|
||||
BaggageManagerFactory contextManagerProvider = loadSpi(BaggageManagerFactory.class);
|
||||
contextManager =
|
||||
contextManagerProvider != null
|
||||
? contextManagerProvider.create()
|
||||
: DefaultCorrelationContextManager.getInstance();
|
||||
: DefaultBaggageManager.getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import io.grpc.Context;
|
||||
import java.util.Collection;
|
||||
|
|
@ -25,19 +25,19 @@ import javax.annotation.concurrent.Immutable;
|
|||
* A map from {@link String} to {@link String} and {@link EntryMetadata} that can be used to label
|
||||
* anything that is associated with a specific operation.
|
||||
*
|
||||
* <p>For example, {@code CorrelationContext}s can be used to label stats, log messages, or
|
||||
* debugging information.
|
||||
* <p>For example, {@code Baggage}s can be used to label stats, log messages, or debugging
|
||||
* information.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
@Immutable
|
||||
public interface CorrelationContext {
|
||||
public interface Baggage {
|
||||
/**
|
||||
* Returns an immutable collection of the entries in this {@code CorrelationContext}. Order of
|
||||
* entries is not guaranteed.
|
||||
* Returns an immutable collection of the entries in this {@code Baggage}. Order of entries is not
|
||||
* guaranteed.
|
||||
*
|
||||
* @return an immutable collection of the entries in this {@code CorrelationContext}.
|
||||
* @since 0.1.0
|
||||
* @return an immutable collection of the entries in this {@code Baggage}.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Collection<Entry> getEntries();
|
||||
|
||||
|
|
@ -46,47 +46,45 @@ public interface CorrelationContext {
|
|||
*
|
||||
* @param entryKey entry key to return the value for.
|
||||
* @return the value associated with the given key, or {@code null} if no {@code Entry} with the
|
||||
* given {@code entryKey} is in this {@code CorrelationContext}.
|
||||
* given {@code entryKey} is in this {@code Baggage}.
|
||||
*/
|
||||
@Nullable
|
||||
String getEntryValue(String entryKey);
|
||||
|
||||
/**
|
||||
* Builder for the {@link CorrelationContext} class.
|
||||
* Builder for the {@link Baggage} class.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
interface Builder {
|
||||
/**
|
||||
* Sets the parent {@link CorrelationContext} to use. If no parent is provided, the value of
|
||||
* {@link CorrelationContextManager#getCurrentContext()} at {@link #build()} time will be used
|
||||
* as parent, unless {@link #setNoParent()} was called.
|
||||
* Sets the parent {@link Baggage} to use. If no parent is provided, the value of {@link
|
||||
* BaggageManager#getCurrentBaggage()} at {@link #build()} time will be used as parent, unless
|
||||
* {@link #setNoParent()} was called.
|
||||
*
|
||||
* <p>This <b>must</b> be used to create a {@link CorrelationContext} when manual Context
|
||||
* propagation is used.
|
||||
* <p>This <b>must</b> be used to create a {@link Baggage} when manual Context propagation is
|
||||
* used.
|
||||
*
|
||||
* <p>If called multiple times, only the last specified value will be used.
|
||||
*
|
||||
* @param parent the {@link CorrelationContext} used as parent, not null.
|
||||
* @param parent the {@link Baggage} used as parent, not null.
|
||||
* @return this.
|
||||
* @throws NullPointerException if {@code parent} is {@code null}.
|
||||
* @see #setNoParent()
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Builder setParent(CorrelationContext parent);
|
||||
Builder setParent(Baggage parent);
|
||||
|
||||
/**
|
||||
* Sets the parent {@link CorrelationContext} to use from the specified {@code Context}. If no
|
||||
* parent {@link CorrelationContext} is provided, the value of {@link
|
||||
* CorrelationContextManager#getCurrentContext()} at {@link #build()} time will be used as
|
||||
* parent, unless {@link #setNoParent()} was called.
|
||||
* Sets the parent {@link Baggage} to use from the specified {@code Context}. If no parent
|
||||
* {@link Baggage} is provided, the value of {@link BaggageManager#getCurrentBaggage()} at
|
||||
* {@link #build()} time will be used as parent, unless {@link #setNoParent()} was called.
|
||||
*
|
||||
* <p>If no parent {@link CorrelationContext} is available in the specified {@code Context}, the
|
||||
* resulting {@link CorrelationContext} will become a root instance, as if {@link
|
||||
* #setNoParent()} had been called.
|
||||
* <p>If no parent {@link Baggage} is available in the specified {@code Context}, the resulting
|
||||
* {@link Baggage} will become a root instance, as if {@link #setNoParent()} had been called.
|
||||
*
|
||||
* <p>This <b>must</b> be used to create a {@link CorrelationContext} when manual Context
|
||||
* propagation is used.
|
||||
* <p>This <b>must</b> be used to create a {@link Baggage} when manual Context propagation is
|
||||
* used.
|
||||
*
|
||||
* <p>If called multiple times, only the last specified value will be used.
|
||||
*
|
||||
|
|
@ -94,18 +92,17 @@ public interface CorrelationContext {
|
|||
* @return this.
|
||||
* @throws NullPointerException if {@code context} is {@code null}.
|
||||
* @see #setNoParent()
|
||||
* @since 0.7.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Builder setParent(Context context);
|
||||
|
||||
/**
|
||||
* Sets the option to become a root {@link CorrelationContext} with no parent. If <b>not</b>
|
||||
* called, the value provided using {@link #setParent(CorrelationContext)} or otherwise {@link
|
||||
* CorrelationContextManager#getCurrentContext()} at {@link #build()} time will be used as
|
||||
* parent.
|
||||
* Sets the option to become a root {@link Baggage} with no parent. If <b>not</b> called, the
|
||||
* value provided using {@link #setParent(Baggage)} or otherwise {@link
|
||||
* BaggageManager#getCurrentBaggage()} at {@link #build()} time will be used as parent.
|
||||
*
|
||||
* @return this.
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Builder setNoParent();
|
||||
|
||||
|
|
@ -116,7 +113,7 @@ public interface CorrelationContext {
|
|||
* @param value the {@code String} value to set for the given key.
|
||||
* @param entryMetadata the {@code EntryMetadata} associated with this {@link Entry}.
|
||||
* @return this
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Builder put(String key, String value, EntryMetadata entryMetadata);
|
||||
|
||||
|
|
@ -125,16 +122,16 @@ public interface CorrelationContext {
|
|||
*
|
||||
* @param key the {@code String} key which will be removed.
|
||||
* @return this
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Builder remove(String key);
|
||||
|
||||
/**
|
||||
* Creates a {@code CorrelationContext} from this builder.
|
||||
* Creates a {@code Baggage} from this builder.
|
||||
*
|
||||
* @return a {@code CorrelationContext} with the same entries as this builder.
|
||||
* @since 0.1.0
|
||||
* @return a {@code Baggage} with the same entries as this builder.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
CorrelationContext build();
|
||||
Baggage build();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import io.opentelemetry.context.Scope;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* Object for creating new {@link Baggage}s and {@code Baggage}s based on the current context.
|
||||
*
|
||||
* <p>This class returns {@link Baggage.Builder builders} that can be used to create the
|
||||
* implementation-dependent {@link Baggage}s.
|
||||
*
|
||||
* <p>Implementations may have different constraints and are free to convert entry contexts to their
|
||||
* own subtypes. This means callers cannot assume the {@link #getCurrentBaggage() current context}
|
||||
* is the same instance as the one {@link #withContext(Baggage) placed into scope}.
|
||||
*
|
||||
* @since 0.9.0
|
||||
*/
|
||||
@ThreadSafe
|
||||
public interface BaggageManager {
|
||||
|
||||
/**
|
||||
* Returns the current {@code Baggage}.
|
||||
*
|
||||
* @return the current {@code Baggage}.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Baggage getCurrentBaggage();
|
||||
|
||||
/**
|
||||
* Returns a new {@link Baggage.Builder}.
|
||||
*
|
||||
* @return a new {@code Baggage.Builder}.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Baggage.Builder baggageBuilder();
|
||||
|
||||
/**
|
||||
* Enters the scope of code where the given {@code Baggage} is in the current context (replacing
|
||||
* the previous {@code Baggage}) and returns an object that represents that scope. The scope is
|
||||
* exited when the returned object is closed.
|
||||
*
|
||||
* @param distContext the {@code Baggage} to be set as the current context.
|
||||
* @return an object that defines a scope where the given {@code Baggage} is set as the current
|
||||
* context.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
Scope withContext(Baggage distContext);
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.context.ContextUtils;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
||||
/**
|
||||
* Utility methods for accessing the {@link Baggage} contained in the {@link io.grpc.Context}.
|
||||
*
|
||||
* @since 0.9.0
|
||||
*/
|
||||
@Immutable
|
||||
public final class BaggageUtils {
|
||||
private static final Context.Key<Baggage> CORR_CONTEXT_KEY =
|
||||
Context.key("opentelemetry-corr-context-key");
|
||||
|
||||
/**
|
||||
* Creates a new {@code Context} with the given value set.
|
||||
*
|
||||
* @param baggage the value to be set.
|
||||
* @param context the parent {@code Context}.
|
||||
* @return a new context with the given value set.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static Context withBaggage(Baggage baggage, Context context) {
|
||||
return context.withValue(CORR_CONTEXT_KEY, baggage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link Baggage} from the {@linkplain Context#current current context}, falling back
|
||||
* to an empty {@link Baggage}.
|
||||
*
|
||||
* @return the {@link Baggage} from the {@linkplain Context#current current context}.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static Baggage getCurrentBaggage() {
|
||||
return getBaggage(Context.current());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link Baggage} from the specified {@code Context}, falling back to an empty {@link
|
||||
* Baggage}.
|
||||
*
|
||||
* @param context the specified {@code Context}.
|
||||
* @return the {@link Baggage} from the specified {@code Context}.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static Baggage getBaggage(Context context) {
|
||||
Baggage baggage = CORR_CONTEXT_KEY.get(context);
|
||||
return baggage == null ? EmptyBaggage.getInstance() : baggage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link Baggage} from the specified {@code Context}. If none is found, this method
|
||||
* returns {code null}.
|
||||
*
|
||||
* @param context the specified {@code Context}.
|
||||
* @return the {@link Baggage} from the specified {@code Context}.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
@Nullable
|
||||
public static Baggage getBaggageWithoutDefault(Context context) {
|
||||
return CORR_CONTEXT_KEY.get(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new {@link Scope} encapsulating the provided {@link Baggage} added to the current
|
||||
* {@code Context}.
|
||||
*
|
||||
* @param baggage the {@link Baggage} to be added to the current {@code Context}.
|
||||
* @return the {@link Scope} for the updated {@code Context}.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static Scope currentContextWith(Baggage baggage) {
|
||||
Context context = withBaggage(baggage, Context.current());
|
||||
return ContextUtils.withScopedContext(context);
|
||||
}
|
||||
|
||||
private BaggageUtils() {}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.internal.Utils;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* No-op implementations of {@link BaggageManager}.
|
||||
*
|
||||
* @since 0.9.0
|
||||
*/
|
||||
@ThreadSafe
|
||||
public final class DefaultBaggageManager implements BaggageManager {
|
||||
private static final DefaultBaggageManager INSTANCE = new DefaultBaggageManager();
|
||||
|
||||
/**
|
||||
* Returns a {@code BaggageManager} singleton that is the default implementation for {@link
|
||||
* BaggageManager}.
|
||||
*
|
||||
* @return a {@code BaggageManager} singleton that is the default implementation for {@link
|
||||
* BaggageManager}.
|
||||
*/
|
||||
public static BaggageManager getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage getCurrentBaggage() {
|
||||
return BaggageUtils.getCurrentBaggage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage.Builder baggageBuilder() {
|
||||
return new NoopBaggageBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Scope withContext(Baggage distContext) {
|
||||
return BaggageUtils.currentContextWith(distContext);
|
||||
}
|
||||
|
||||
@Immutable
|
||||
private static final class NoopBaggageBuilder implements Baggage.Builder {
|
||||
@Override
|
||||
public Baggage.Builder setParent(Baggage parent) {
|
||||
Utils.checkNotNull(parent, "parent");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage.Builder setParent(Context context) {
|
||||
Utils.checkNotNull(context, "context");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage.Builder setNoParent() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage.Builder put(String key, String value, EntryMetadata entryMetadata) {
|
||||
Utils.checkNotNull(key, "key");
|
||||
Utils.checkNotNull(value, "value");
|
||||
Utils.checkNotNull(entryMetadata, "entryMetadata");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage.Builder remove(String key) {
|
||||
Utils.checkNotNull(key, "key");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage build() {
|
||||
return EmptyBaggage.getInstance();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -14,29 +14,27 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
||||
/**
|
||||
* An immutable implementation of the {@link CorrelationContext} that does not contain any entries.
|
||||
*/
|
||||
/** An immutable implementation of the {@link Baggage} that does not contain any entries. */
|
||||
@Immutable
|
||||
public class EmptyCorrelationContext implements CorrelationContext {
|
||||
public class EmptyBaggage implements Baggage {
|
||||
/**
|
||||
* Returns the single instance of the {@link EmptyCorrelationContext} class.
|
||||
* Returns the single instance of the {@link EmptyBaggage} class.
|
||||
*
|
||||
* @return the single instance of the {@code EmptyCorrelationContext} class.
|
||||
* @since 0.1.0
|
||||
* @return the single instance of the {@code EmptyBaggage} class.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static CorrelationContext getInstance() {
|
||||
public static Baggage getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private static final CorrelationContext INSTANCE = new EmptyCorrelationContext();
|
||||
private static final Baggage INSTANCE = new EmptyBaggage();
|
||||
|
||||
@Override
|
||||
public Collection<Entry> getEntries() {
|
||||
|
|
@ -49,5 +47,5 @@ public class EmptyCorrelationContext implements CorrelationContext {
|
|||
return null;
|
||||
}
|
||||
|
||||
private EmptyCorrelationContext() {}
|
||||
private EmptyBaggage() {}
|
||||
}
|
||||
|
|
@ -14,10 +14,10 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import io.opentelemetry.correlationcontext.EntryMetadata.EntryTtl;
|
||||
import io.opentelemetry.baggage.EntryMetadata.EntryTtl;
|
||||
import io.opentelemetry.internal.StringUtils;
|
||||
import io.opentelemetry.internal.Utils;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
|
@ -25,7 +25,7 @@ import javax.annotation.concurrent.Immutable;
|
|||
/**
|
||||
* String-String key-value pair, along with {@link EntryMetadata}.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
@Immutable
|
||||
@AutoValue
|
||||
|
|
@ -33,14 +33,14 @@ public abstract class Entry {
|
|||
/**
|
||||
* The maximum length for an entry key name. The value is {@value #MAX_KEY_LENGTH}.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static final int MAX_KEY_LENGTH = 255;
|
||||
|
||||
/**
|
||||
* The maximum length for a entry value. The value is {@value #MAX_VALUE_LENGTH}.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static final int MAX_VALUE_LENGTH = 255;
|
||||
|
||||
|
|
@ -57,7 +57,7 @@ public abstract class Entry {
|
|||
* @param value the entry value.
|
||||
* @param entryMetadata the entry metadata.
|
||||
* @return a {@code Entry}.
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static Entry create(String key, String value, EntryMetadata entryMetadata) {
|
||||
Utils.checkArgument(keyIsValid(key), "Invalid entry key name: %s", key);
|
||||
|
|
@ -69,7 +69,7 @@ public abstract class Entry {
|
|||
* Returns the entry's key.
|
||||
*
|
||||
* @return the entry's key.
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public abstract String getKey();
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ public abstract class Entry {
|
|||
* Returns the entry's value.
|
||||
*
|
||||
* @return the entry's value.
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public abstract String getValue();
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ public abstract class Entry {
|
|||
* Returns the {@link EntryMetadata} associated with this {@link Entry}.
|
||||
*
|
||||
* @return the {@code EntryMetadata}.
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public abstract EntryMetadata getEntryMetadata();
|
||||
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
|
@ -25,7 +25,7 @@ import javax.annotation.concurrent.Immutable;
|
|||
* <p>For now only the property {@link EntryTtl} is defined. In future, additional properties may be
|
||||
* added to address specific situations.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
@Immutable
|
||||
@AutoValue
|
||||
|
|
@ -38,7 +38,7 @@ public abstract class EntryMetadata {
|
|||
*
|
||||
* @param entryTtl TTL of an {@code Entry}.
|
||||
* @return an {@code EntryMetadata}.
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public static EntryMetadata create(EntryTtl entryTtl) {
|
||||
return new AutoValue_EntryMetadata(entryTtl);
|
||||
|
|
@ -48,7 +48,7 @@ public abstract class EntryMetadata {
|
|||
* Returns the {@link EntryTtl} of this {@link EntryMetadata}.
|
||||
*
|
||||
* @return the {@code EntryTtl}.
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public abstract EntryTtl getEntryTtl();
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ public abstract class EntryMetadata {
|
|||
*
|
||||
* <p>For now, only special values of {@link EntryTtl} are supported.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
public enum EntryTtl {
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ public abstract class EntryMetadata {
|
|||
* An {@link Entry} with {@link EntryTtl#NO_PROPAGATION} is considered to have local scope and
|
||||
* is used within the process where it's created.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
NO_PROPAGATION(0),
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ public abstract class EntryMetadata {
|
|||
* <p>{@link EntryTtl#UNLIMITED_PROPAGATION} is typical used to track a request, which may be
|
||||
* processed across multiple entities.
|
||||
*
|
||||
* @since 0.1.0
|
||||
* @since 0.9.0
|
||||
*/
|
||||
UNLIMITED_PROPAGATION(-1);
|
||||
|
||||
|
|
@ -21,12 +21,11 @@
|
|||
* to label anything that is associated with a specific operation. For example, the {@code
|
||||
* opentelemetry.stats} package labels all stats with the current entries.
|
||||
*
|
||||
* <p>{@link io.opentelemetry.correlationcontext.Entry Entrys} are key-value pairs of {@link
|
||||
* java.lang.String}s. They are stored as a map in a {@link
|
||||
* io.opentelemetry.correlationcontext.CorrelationContext}.
|
||||
* <p>{@link io.opentelemetry.baggage.Entry Entrys} are key-value pairs of {@link
|
||||
* java.lang.String}s. They are stored as a map in a {@link io.opentelemetry.baggage.Baggage}.
|
||||
*
|
||||
* <p>Note that entries are independent of the tracing data that is propagated in the {@code
|
||||
* io.grpc.Context}, such as trace ID.
|
||||
*/
|
||||
// TODO: Add code examples.
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
|
@ -14,30 +14,29 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext.spi;
|
||||
package io.opentelemetry.baggage.spi;
|
||||
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* CorrelationContextManagerFactory is a service provider for {@link CorrelationContextManager}.
|
||||
* Fully qualified class name of the implementation should be registered in {@code
|
||||
* META-INF/services/io.opentelemetry.correlationcontext.spi.CorrelationContextManagerFactory}. <br>
|
||||
* BaggageManagerFactory is a service provider for {@link BaggageManager}. Fully qualified class
|
||||
* name of the implementation should be registered in {@code
|
||||
* META-INF/services/io.opentelemetry.baggage.spi.BaggageManagerFactory}. <br>
|
||||
* <br>
|
||||
* A specific implementation can be selected by a system property {@code
|
||||
* io.opentelemetry.correlationcontext.spi.CorrelationContextManagerFactory} with value of fully
|
||||
* qualified class name.
|
||||
* io.opentelemetry.baggage.spi.BaggageManagerFactory} with value of fully qualified class name.
|
||||
*
|
||||
* @see io.opentelemetry.OpenTelemetry
|
||||
*/
|
||||
@ThreadSafe
|
||||
public interface CorrelationContextManagerFactory {
|
||||
public interface BaggageManagerFactory {
|
||||
|
||||
/**
|
||||
* Creates a new {@code CorrelationContextManager} instance.
|
||||
* Creates a new {@code BaggageManager} instance.
|
||||
*
|
||||
* @return a {@code CorrelationContextManager} instance.
|
||||
* @since 0.1.0
|
||||
* @return a {@code BaggageManager} instance.
|
||||
* @since 0.9.0
|
||||
*/
|
||||
CorrelationContextManager create();
|
||||
BaggageManager create();
|
||||
}
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
|
||||
import io.opentelemetry.context.Scope;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* Object for creating new {@link CorrelationContext}s and {@code CorrelationContext}s based on the
|
||||
* current context.
|
||||
*
|
||||
* <p>This class returns {@link CorrelationContext.Builder builders} that can be used to create the
|
||||
* implementation-dependent {@link CorrelationContext}s.
|
||||
*
|
||||
* <p>Implementations may have different constraints and are free to convert entry contexts to their
|
||||
* own subtypes. This means callers cannot assume the {@link #getCurrentContext() current context}
|
||||
* is the same instance as the one {@link #withContext(CorrelationContext) placed into scope}.
|
||||
*
|
||||
* @since 0.1.0
|
||||
*/
|
||||
@ThreadSafe
|
||||
public interface CorrelationContextManager {
|
||||
|
||||
/**
|
||||
* Returns the current {@code CorrelationContext}.
|
||||
*
|
||||
* @return the current {@code CorrelationContext}.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
CorrelationContext getCurrentContext();
|
||||
|
||||
/**
|
||||
* Returns a new {@code Builder}.
|
||||
*
|
||||
* @return a new {@code Builder}.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
CorrelationContext.Builder contextBuilder();
|
||||
|
||||
/**
|
||||
* Enters the scope of code where the given {@code CorrelationContext} is in the current context
|
||||
* (replacing the previous {@code CorrelationContext}) and returns an object that represents that
|
||||
* scope. The scope is exited when the returned object is closed.
|
||||
*
|
||||
* @param distContext the {@code CorrelationContext} to be set as the current context.
|
||||
* @return an object that defines a scope where the given {@code CorrelationContext} is set as the
|
||||
* current context.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
Scope withContext(CorrelationContext distContext);
|
||||
}
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.context.ContextUtils;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
||||
/**
|
||||
* Utility methods for accessing the {@link CorrelationContext} contained in the {@link
|
||||
* io.grpc.Context}.
|
||||
*
|
||||
* @since 0.1.0
|
||||
*/
|
||||
@Immutable
|
||||
public final class CorrelationsContextUtils {
|
||||
private static final Context.Key<CorrelationContext> CORR_CONTEXT_KEY =
|
||||
Context.key("opentelemetry-corr-context-key");
|
||||
|
||||
/**
|
||||
* Creates a new {@code Context} with the given value set.
|
||||
*
|
||||
* @param corrContext the value to be set.
|
||||
* @param context the parent {@code Context}.
|
||||
* @return a new context with the given value set.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
public static Context withCorrelationContext(CorrelationContext corrContext, Context context) {
|
||||
return context.withValue(CORR_CONTEXT_KEY, corrContext);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link CorrelationContext} from the current {@code Context}, falling back to an
|
||||
* empty {@link CorrelationContext}.
|
||||
*
|
||||
* @return the {@link CorrelationContext} from the current {@code Context}.
|
||||
* @since 0.3.0
|
||||
*/
|
||||
public static CorrelationContext getCurrentCorrelationContext() {
|
||||
return getCorrelationContext(Context.current());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link CorrelationContext} from the specified {@code Context}, falling back to an
|
||||
* empty {@link CorrelationContext}.
|
||||
*
|
||||
* @param context the specified {@code Context}.
|
||||
* @return the {@link CorrelationContext} from the specified {@code Context}.
|
||||
* @since 0.3.0
|
||||
*/
|
||||
public static CorrelationContext getCorrelationContext(Context context) {
|
||||
CorrelationContext corrContext = CORR_CONTEXT_KEY.get(context);
|
||||
return corrContext == null ? EmptyCorrelationContext.getInstance() : corrContext;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link CorrelationContext} from the specified {@code Context}. If none is found,
|
||||
* this method returns {code null}.
|
||||
*
|
||||
* @param context the specified {@code Context}.
|
||||
* @return the {@link CorrelationContext} from the specified {@code Context}.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
@Nullable
|
||||
public static CorrelationContext getCorrelationContextWithoutDefault(Context context) {
|
||||
return CORR_CONTEXT_KEY.get(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new {@link Scope} encapsulating the provided {@link CorrelationContext} added to the
|
||||
* current {@code Context}.
|
||||
*
|
||||
* @param corrContext the {@link CorrelationContext} to be added to the current {@code Context}.
|
||||
* @return the {@link Scope} for the updated {@code Context}.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
public static Scope currentContextWith(CorrelationContext corrContext) {
|
||||
Context context = withCorrelationContext(corrContext, Context.current());
|
||||
return ContextUtils.withScopedContext(context);
|
||||
}
|
||||
|
||||
private CorrelationsContextUtils() {}
|
||||
}
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.internal.Utils;
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* No-op implementations of {@link CorrelationContextManager}.
|
||||
*
|
||||
* @since 0.1.0
|
||||
*/
|
||||
@ThreadSafe
|
||||
public final class DefaultCorrelationContextManager implements CorrelationContextManager {
|
||||
private static final DefaultCorrelationContextManager INSTANCE =
|
||||
new DefaultCorrelationContextManager();
|
||||
|
||||
/**
|
||||
* Returns a {@code CorrelationContextManager} singleton that is the default implementation for
|
||||
* {@link CorrelationContextManager}.
|
||||
*
|
||||
* @return a {@code CorrelationContextManager} singleton that is the default implementation for
|
||||
* {@link CorrelationContextManager}.
|
||||
*/
|
||||
public static CorrelationContextManager getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext getCurrentContext() {
|
||||
return CorrelationsContextUtils.getCurrentCorrelationContext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder contextBuilder() {
|
||||
return new NoopCorrelationContextBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Scope withContext(CorrelationContext distContext) {
|
||||
return CorrelationsContextUtils.currentContextWith(distContext);
|
||||
}
|
||||
|
||||
@Immutable
|
||||
private static final class NoopCorrelationContextBuilder implements CorrelationContext.Builder {
|
||||
@Override
|
||||
public CorrelationContext.Builder setParent(CorrelationContext parent) {
|
||||
Utils.checkNotNull(parent, "parent");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder setParent(Context context) {
|
||||
Utils.checkNotNull(context, "context");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder setNoParent() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder put(String key, String value, EntryMetadata entryMetadata) {
|
||||
Utils.checkNotNull(key, "key");
|
||||
Utils.checkNotNull(value, "value");
|
||||
Utils.checkNotNull(entryMetadata, "entryMetadata");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder remove(String key) {
|
||||
Utils.checkNotNull(key, "key");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext build() {
|
||||
return EmptyCorrelationContext.getInstance();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -20,13 +20,13 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.baggage.DefaultBaggageManager;
|
||||
import io.opentelemetry.baggage.spi.BaggageManagerFactory;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.context.propagation.DefaultContextPropagators;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.DefaultCorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.spi.CorrelationContextManagerFactory;
|
||||
import io.opentelemetry.metrics.BatchRecorder;
|
||||
import io.opentelemetry.metrics.DefaultMeterProvider;
|
||||
import io.opentelemetry.metrics.DoubleCounter;
|
||||
|
|
@ -71,7 +71,7 @@ class OpenTelemetryTest {
|
|||
OpenTelemetry.reset();
|
||||
System.clearProperty(TracerProviderFactory.class.getName());
|
||||
System.clearProperty(MeterProviderFactory.class.getName());
|
||||
System.clearProperty(CorrelationContextManagerFactory.class.getName());
|
||||
System.clearProperty(BaggageManagerFactory.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -80,10 +80,8 @@ class OpenTelemetryTest {
|
|||
assertThat(OpenTelemetry.getTracerProvider()).isSameAs(OpenTelemetry.getTracerProvider());
|
||||
assertThat(OpenTelemetry.getMeterProvider()).isInstanceOf(DefaultMeterProvider.class);
|
||||
assertThat(OpenTelemetry.getMeterProvider()).isSameAs(OpenTelemetry.getMeterProvider());
|
||||
assertThat(OpenTelemetry.getCorrelationContextManager())
|
||||
.isInstanceOf(DefaultCorrelationContextManager.class);
|
||||
assertThat(OpenTelemetry.getCorrelationContextManager())
|
||||
.isSameAs(OpenTelemetry.getCorrelationContextManager());
|
||||
assertThat(OpenTelemetry.getBaggageManager()).isInstanceOf(DefaultBaggageManager.class);
|
||||
assertThat(OpenTelemetry.getBaggageManager()).isSameAs(OpenTelemetry.getBaggageManager());
|
||||
assertThat(OpenTelemetry.getPropagators()).isInstanceOf(DefaultContextPropagators.class);
|
||||
assertThat(OpenTelemetry.getPropagators()).isSameAs(OpenTelemetry.getPropagators());
|
||||
}
|
||||
|
|
@ -169,48 +167,38 @@ class OpenTelemetryTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testCorrelationContextManagerLoadArbitrary() throws IOException {
|
||||
void testBaggageManagerLoadArbitrary() throws IOException {
|
||||
File serviceFile =
|
||||
createService(
|
||||
CorrelationContextManagerFactory.class,
|
||||
FirstCorrelationContextManager.class,
|
||||
SecondCorrelationContextManager.class);
|
||||
BaggageManagerFactory.class, FirstBaggageManager.class, SecondBaggageManager.class);
|
||||
try {
|
||||
assertTrue(
|
||||
(OpenTelemetry.getCorrelationContextManager() instanceof FirstCorrelationContextManager)
|
||||
|| (OpenTelemetry.getCorrelationContextManager()
|
||||
instanceof SecondCorrelationContextManager));
|
||||
assertThat(OpenTelemetry.getCorrelationContextManager())
|
||||
.isEqualTo(OpenTelemetry.getCorrelationContextManager());
|
||||
(OpenTelemetry.getBaggageManager() instanceof FirstBaggageManager)
|
||||
|| (OpenTelemetry.getBaggageManager() instanceof SecondBaggageManager));
|
||||
assertThat(OpenTelemetry.getBaggageManager()).isEqualTo(OpenTelemetry.getBaggageManager());
|
||||
} finally {
|
||||
serviceFile.delete();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCorrelationContextManagerSystemProperty() throws IOException {
|
||||
void testBaggageManagerSystemProperty() throws IOException {
|
||||
File serviceFile =
|
||||
createService(
|
||||
CorrelationContextManagerFactory.class,
|
||||
FirstCorrelationContextManager.class,
|
||||
SecondCorrelationContextManager.class);
|
||||
System.setProperty(
|
||||
CorrelationContextManagerFactory.class.getName(),
|
||||
SecondCorrelationContextManager.class.getName());
|
||||
BaggageManagerFactory.class, FirstBaggageManager.class, SecondBaggageManager.class);
|
||||
System.setProperty(BaggageManagerFactory.class.getName(), SecondBaggageManager.class.getName());
|
||||
try {
|
||||
assertThat(OpenTelemetry.getCorrelationContextManager())
|
||||
.isInstanceOf(SecondCorrelationContextManager.class);
|
||||
assertThat(OpenTelemetry.getCorrelationContextManager())
|
||||
.isEqualTo(OpenTelemetry.getCorrelationContextManager());
|
||||
assertThat(OpenTelemetry.getBaggageManager()).isInstanceOf(SecondBaggageManager.class);
|
||||
assertThat(OpenTelemetry.getBaggageManager()).isEqualTo(OpenTelemetry.getBaggageManager());
|
||||
} finally {
|
||||
serviceFile.delete();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCorrelationContextManagerNotFound() {
|
||||
System.setProperty(CorrelationContextManagerFactory.class.getName(), "io.does.not.exists");
|
||||
assertThrows(IllegalStateException.class, () -> OpenTelemetry.getCorrelationContextManager());
|
||||
void testBaggageManagerNotFound() {
|
||||
System.setProperty(BaggageManagerFactory.class.getName(), "io.does.not.exists");
|
||||
assertThrows(IllegalStateException.class, () -> OpenTelemetry.getBaggageManager());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -406,35 +394,34 @@ class OpenTelemetryTest {
|
|||
}
|
||||
}
|
||||
|
||||
public static class SecondCorrelationContextManager extends FirstCorrelationContextManager {
|
||||
public static class SecondBaggageManager extends FirstBaggageManager {
|
||||
@Override
|
||||
public CorrelationContextManager create() {
|
||||
return new SecondCorrelationContextManager();
|
||||
public BaggageManager create() {
|
||||
return new SecondBaggageManager();
|
||||
}
|
||||
}
|
||||
|
||||
public static class FirstCorrelationContextManager
|
||||
implements CorrelationContextManager, CorrelationContextManagerFactory {
|
||||
public static class FirstBaggageManager implements BaggageManager, BaggageManagerFactory {
|
||||
@Override
|
||||
public CorrelationContextManager create() {
|
||||
return new FirstCorrelationContextManager();
|
||||
public BaggageManager create() {
|
||||
return new FirstBaggageManager();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public CorrelationContext getCurrentContext() {
|
||||
public Baggage getCurrentBaggage() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public CorrelationContext.Builder contextBuilder() {
|
||||
public Baggage.Builder baggageBuilder() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Scope withContext(CorrelationContext distContext) {
|
||||
public Scope withContext(Baggage distContext) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.grpc.Context;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class BaggageUtilsTest {
|
||||
|
||||
@Test
|
||||
void testGetCurrentBaggage_Default() {
|
||||
Baggage baggage = BaggageUtils.getCurrentBaggage();
|
||||
assertThat(baggage).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetCurrentBaggage_SetCorrContext() {
|
||||
Baggage baggage = DefaultBaggageManager.getInstance().baggageBuilder().build();
|
||||
Context orig = BaggageUtils.withBaggage(baggage, Context.current()).attach();
|
||||
try {
|
||||
assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(baggage);
|
||||
} finally {
|
||||
Context.current().detach(orig);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetBaggage_DefaultContext() {
|
||||
Baggage baggage = BaggageUtils.getBaggage(Context.current());
|
||||
assertThat(baggage).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetBaggage_ExplicitContext() {
|
||||
Baggage baggage = DefaultBaggageManager.getInstance().baggageBuilder().build();
|
||||
Context context = BaggageUtils.withBaggage(baggage, Context.current());
|
||||
assertThat(BaggageUtils.getBaggage(context)).isSameAs(baggage);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetBaggageWithoutDefault_DefaultContext() {
|
||||
Baggage baggage = BaggageUtils.getBaggageWithoutDefault(Context.current());
|
||||
assertThat(baggage).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetBaggageWithoutDefault_ExplicitContext() {
|
||||
Baggage baggage = DefaultBaggageManager.getInstance().baggageBuilder().build();
|
||||
Context context = BaggageUtils.withBaggage(baggage, Context.current());
|
||||
assertThat(BaggageUtils.getBaggage(context)).isSameAs(baggage);
|
||||
}
|
||||
}
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
|
@ -25,14 +25,13 @@ import java.util.Collection;
|
|||
import java.util.Collections;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class DefaultCorrelationContextManagerTest {
|
||||
private static final CorrelationContextManager defaultCorrelationContextManager =
|
||||
DefaultCorrelationContextManager.getInstance();
|
||||
class DefaultBaggageManagerTest {
|
||||
private static final BaggageManager DEFAULT_BAGGAGE_MANAGER = DefaultBaggageManager.getInstance();
|
||||
private static final String KEY = "key";
|
||||
private static final String VALUE = "value";
|
||||
|
||||
private static final CorrelationContext DIST_CONTEXT =
|
||||
new CorrelationContext() {
|
||||
private static final Baggage DIST_CONTEXT =
|
||||
new Baggage() {
|
||||
|
||||
@Override
|
||||
public Collection<Entry> getEntries() {
|
||||
|
|
@ -48,21 +47,19 @@ class DefaultCorrelationContextManagerTest {
|
|||
|
||||
@Test
|
||||
void builderMethod() {
|
||||
assertThat(defaultCorrelationContextManager.contextBuilder().build().getEntries()).isEmpty();
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.baggageBuilder().build().getEntries()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getCurrentContext_DefaultContext() {
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(EmptyCorrelationContext.getInstance());
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getCurrentContext_ContextSetToNull() {
|
||||
Context orig =
|
||||
CorrelationsContextUtils.withCorrelationContext(null, Context.current()).attach();
|
||||
Context orig = BaggageUtils.withBaggage(null, Context.current()).attach();
|
||||
try {
|
||||
CorrelationContext distContext = defaultCorrelationContextManager.getCurrentContext();
|
||||
Baggage distContext = DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage();
|
||||
assertThat(distContext).isNotNull();
|
||||
assertThat(distContext.getEntries()).isEmpty();
|
||||
} finally {
|
||||
|
|
@ -72,69 +69,61 @@ class DefaultCorrelationContextManagerTest {
|
|||
|
||||
@Test
|
||||
void withContext() {
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(EmptyCorrelationContext.getInstance());
|
||||
try (Scope wtm = defaultCorrelationContextManager.withContext(DIST_CONTEXT)) {
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext()).isSameAs(DIST_CONTEXT);
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
try (Scope wtm = DEFAULT_BAGGAGE_MANAGER.withContext(DIST_CONTEXT)) {
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(DIST_CONTEXT);
|
||||
}
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(EmptyCorrelationContext.getInstance());
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void withContext_nullContext() {
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(EmptyCorrelationContext.getInstance());
|
||||
try (Scope wtm = defaultCorrelationContextManager.withContext(null)) {
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(EmptyCorrelationContext.getInstance());
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
try (Scope wtm = DEFAULT_BAGGAGE_MANAGER.withContext(null)) {
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(EmptyCorrelationContext.getInstance());
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void withContextUsingWrap() {
|
||||
Runnable runnable;
|
||||
try (Scope wtm = defaultCorrelationContextManager.withContext(DIST_CONTEXT)) {
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext()).isSameAs(DIST_CONTEXT);
|
||||
try (Scope wtm = DEFAULT_BAGGAGE_MANAGER.withContext(DIST_CONTEXT)) {
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(DIST_CONTEXT);
|
||||
runnable =
|
||||
Context.current()
|
||||
.wrap(
|
||||
() -> {
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(DIST_CONTEXT);
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(DIST_CONTEXT);
|
||||
});
|
||||
}
|
||||
assertThat(defaultCorrelationContextManager.getCurrentContext())
|
||||
.isSameAs(EmptyCorrelationContext.getInstance());
|
||||
// When we run the runnable we will have the CorrelationContext in the current Context.
|
||||
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
// When we run the runnable we will have the Baggage in the current Context.
|
||||
runnable.run();
|
||||
}
|
||||
|
||||
@Test
|
||||
void noopContextBuilder_SetParent_DisallowsNullParent() {
|
||||
CorrelationContext.Builder noopBuilder = defaultCorrelationContextManager.contextBuilder();
|
||||
assertThrows(
|
||||
NullPointerException.class, () -> noopBuilder.setParent((CorrelationContext) null));
|
||||
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
|
||||
assertThrows(NullPointerException.class, () -> noopBuilder.setParent((Baggage) null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void noopContextBuilder_SetParent_DisallowsNullContext() {
|
||||
CorrelationContext.Builder noopBuilder = defaultCorrelationContextManager.contextBuilder();
|
||||
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
|
||||
assertThrows(NullPointerException.class, () -> noopBuilder.setParent((Context) null));
|
||||
;
|
||||
}
|
||||
|
||||
@Test
|
||||
void noopContextBuilder_SetParent_fromContext() {
|
||||
CorrelationContext.Builder noopBuilder = defaultCorrelationContextManager.contextBuilder();
|
||||
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
|
||||
noopBuilder.setParent(Context.current()); // No error.
|
||||
}
|
||||
|
||||
@Test
|
||||
void noopContextBuilder_Put_DisallowsNullKey() {
|
||||
CorrelationContext.Builder noopBuilder = defaultCorrelationContextManager.contextBuilder();
|
||||
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
|
||||
assertThrows(
|
||||
NullPointerException.class,
|
||||
() -> noopBuilder.put(null, VALUE, Entry.METADATA_UNLIMITED_PROPAGATION));
|
||||
|
|
@ -142,7 +131,7 @@ class DefaultCorrelationContextManagerTest {
|
|||
|
||||
@Test
|
||||
void noopContextBuilder_Put_DisallowsNullValue() {
|
||||
CorrelationContext.Builder noopBuilder = defaultCorrelationContextManager.contextBuilder();
|
||||
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
|
||||
assertThrows(
|
||||
NullPointerException.class,
|
||||
() -> noopBuilder.put(KEY, null, Entry.METADATA_UNLIMITED_PROPAGATION));
|
||||
|
|
@ -150,13 +139,13 @@ class DefaultCorrelationContextManagerTest {
|
|||
|
||||
@Test
|
||||
void noopContextBuilder_Put_DisallowsNullEntryMetadata() {
|
||||
CorrelationContext.Builder noopBuilder = defaultCorrelationContextManager.contextBuilder();
|
||||
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
|
||||
assertThrows(NullPointerException.class, () -> noopBuilder.put(KEY, VALUE, null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void noopContextBuilder_Remove_DisallowsNullKey() {
|
||||
CorrelationContext.Builder noopBuilder = defaultCorrelationContextManager.contextBuilder();
|
||||
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
|
||||
assertThrows(NullPointerException.class, () -> noopBuilder.remove(null));
|
||||
}
|
||||
}
|
||||
|
|
@ -14,12 +14,12 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.google.common.testing.EqualsTester;
|
||||
import io.opentelemetry.correlationcontext.EntryMetadata.EntryTtl;
|
||||
import io.opentelemetry.baggage.EntryMetadata.EntryTtl;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class EntryMetadataTest {
|
||||
|
|
@ -14,13 +14,13 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
package io.opentelemetry.baggage;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.testing.EqualsTester;
|
||||
import io.opentelemetry.correlationcontext.EntryMetadata.EntryTtl;
|
||||
import io.opentelemetry.baggage.EntryMetadata.EntryTtl;
|
||||
import java.util.Arrays;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.correlationcontext;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.grpc.Context;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class CorrelationsContextUtilsTest {
|
||||
|
||||
@Test
|
||||
void testGetCurrentCorrelationContext_Default() {
|
||||
CorrelationContext corrContext = CorrelationsContextUtils.getCurrentCorrelationContext();
|
||||
assertThat(corrContext).isSameAs(EmptyCorrelationContext.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetCurrentCorrelationContext_SetCorrContext() {
|
||||
CorrelationContext corrContext =
|
||||
DefaultCorrelationContextManager.getInstance().contextBuilder().build();
|
||||
Context orig =
|
||||
CorrelationsContextUtils.withCorrelationContext(corrContext, Context.current()).attach();
|
||||
try {
|
||||
assertThat(CorrelationsContextUtils.getCurrentCorrelationContext()).isSameAs(corrContext);
|
||||
} finally {
|
||||
Context.current().detach(orig);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetCorrelationContext_DefaultContext() {
|
||||
CorrelationContext corrContext =
|
||||
CorrelationsContextUtils.getCorrelationContext(Context.current());
|
||||
assertThat(corrContext).isSameAs(EmptyCorrelationContext.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetCorrelationContext_ExplicitContext() {
|
||||
CorrelationContext corrContext =
|
||||
DefaultCorrelationContextManager.getInstance().contextBuilder().build();
|
||||
Context context =
|
||||
CorrelationsContextUtils.withCorrelationContext(corrContext, Context.current());
|
||||
assertThat(CorrelationsContextUtils.getCorrelationContext(context)).isSameAs(corrContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetCorrelationContextWithoutDefault_DefaultContext() {
|
||||
CorrelationContext corrContext =
|
||||
CorrelationsContextUtils.getCorrelationContextWithoutDefault(Context.current());
|
||||
assertThat(corrContext).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetCorrelationContextWithoutDefault_ExplicitContext() {
|
||||
CorrelationContext corrContext =
|
||||
DefaultCorrelationContextManager.getInstance().contextBuilder().build();
|
||||
Context context =
|
||||
CorrelationsContextUtils.withCorrelationContext(corrContext, Context.current());
|
||||
assertThat(CorrelationsContextUtils.getCorrelationContext(context)).isSameAs(corrContext);
|
||||
}
|
||||
}
|
||||
|
|
@ -66,7 +66,7 @@ public final class DefaultContextPropagators implements ContextPropagators {
|
|||
* <pre>{@code
|
||||
* ContextPropagators propagators = DefaultContextPropagators.builder()
|
||||
* .addTextMapPropagator(new HttpTraceContext())
|
||||
* .addTextMapPropagator(new HttpCorrelationContext())
|
||||
* .addTextMapPropagator(new HttpBaggage())
|
||||
* .addTextMapPropagator(new MyCustomContextPropagator())
|
||||
* .build();
|
||||
* }</pre>
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
|
||||
package io.opentelemetry.opentracingshim;
|
||||
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.trace.Tracer;
|
||||
|
||||
abstract class BaseShimObject {
|
||||
|
|
@ -35,7 +35,7 @@ abstract class BaseShimObject {
|
|||
return telemetryInfo.tracer();
|
||||
}
|
||||
|
||||
CorrelationContextManager contextManager() {
|
||||
BaggageManager contextManager() {
|
||||
return telemetryInfo.contextManager();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
package io.opentelemetry.opentracingshim;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.baggage.BaggageUtils;
|
||||
import io.opentelemetry.context.propagation.TextMapPropagator;
|
||||
import io.opentelemetry.correlationcontext.CorrelationsContextUtils;
|
||||
import io.opentelemetry.trace.DefaultSpan;
|
||||
import io.opentelemetry.trace.Span;
|
||||
import io.opentelemetry.trace.TracingContextUtils;
|
||||
|
|
@ -37,9 +37,7 @@ final class Propagation extends BaseShimObject {
|
|||
Context context =
|
||||
TracingContextUtils.withSpan(
|
||||
DefaultSpan.create(contextShim.getSpanContext()), Context.current());
|
||||
context =
|
||||
CorrelationsContextUtils.withCorrelationContext(
|
||||
contextShim.getCorrelationContext(), context);
|
||||
context = BaggageUtils.withBaggage(contextShim.getBaggage(), context);
|
||||
|
||||
propagators().getTextMapPropagator().inject(context, carrier, TextMapSetter.INSTANCE);
|
||||
}
|
||||
|
|
@ -61,8 +59,7 @@ final class Propagation extends BaseShimObject {
|
|||
return null;
|
||||
}
|
||||
|
||||
return new SpanContextShim(
|
||||
telemetryInfo, span.getContext(), CorrelationsContextUtils.getCorrelationContext(context));
|
||||
return new SpanContextShim(telemetryInfo, span.getContext(), BaggageUtils.getBaggage(context));
|
||||
}
|
||||
|
||||
static final class TextMapSetter implements TextMapPropagator.Setter<TextMapInject> {
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ import static io.opentelemetry.common.AttributesKeys.longKey;
|
|||
import static io.opentelemetry.common.AttributesKeys.stringKey;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.common.AttributeKey;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.trace.DefaultSpan;
|
||||
import io.opentelemetry.trace.Span.Kind;
|
||||
import io.opentelemetry.trace.Status;
|
||||
|
|
@ -189,7 +189,7 @@ final class SpanBuilderShim extends BaseShimObject implements SpanBuilder {
|
|||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
@Override
|
||||
public Span start() {
|
||||
CorrelationContext distContext = null;
|
||||
Baggage distContext = null;
|
||||
io.opentelemetry.trace.Span.Builder builder = tracer().spanBuilder(spanName);
|
||||
|
||||
if (ignoreActiveSpan && parentSpan == null && parentSpanContext == null) {
|
||||
|
|
@ -197,12 +197,12 @@ final class SpanBuilderShim extends BaseShimObject implements SpanBuilder {
|
|||
} else if (parentSpan != null) {
|
||||
builder.setParent(TracingContextUtils.withSpan(parentSpan.getSpan(), Context.ROOT));
|
||||
SpanContextShim contextShim = spanContextTable().get(parentSpan);
|
||||
distContext = contextShim == null ? null : contextShim.getCorrelationContext();
|
||||
distContext = contextShim == null ? null : contextShim.getBaggage();
|
||||
} else if (parentSpanContext != null) {
|
||||
builder.setParent(
|
||||
TracingContextUtils.withSpan(
|
||||
DefaultSpan.create(parentSpanContext.getSpanContext()), Context.ROOT));
|
||||
distContext = parentSpanContext.getCorrelationContext();
|
||||
distContext = parentSpanContext.getBaggage();
|
||||
}
|
||||
|
||||
for (io.opentelemetry.trace.SpanContext link : parentLinks) {
|
||||
|
|
@ -226,7 +226,7 @@ final class SpanBuilderShim extends BaseShimObject implements SpanBuilder {
|
|||
|
||||
SpanShim spanShim = new SpanShim(telemetryInfo(), span);
|
||||
|
||||
if (distContext != null && distContext != telemetryInfo().emptyCorrelationContext()) {
|
||||
if (distContext != null && distContext != telemetryInfo().emptyBaggage()) {
|
||||
spanContextTable().create(spanShim, distContext);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@
|
|||
|
||||
package io.opentelemetry.opentracingshim;
|
||||
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.Entry;
|
||||
import io.opentelemetry.correlationcontext.EntryMetadata;
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.Entry;
|
||||
import io.opentelemetry.baggage.EntryMetadata;
|
||||
import io.opentracing.SpanContext;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
|
@ -28,30 +28,30 @@ final class SpanContextShim extends BaseShimObject implements SpanContext {
|
|||
EntryMetadata.create(EntryMetadata.EntryTtl.UNLIMITED_PROPAGATION);
|
||||
|
||||
private final io.opentelemetry.trace.SpanContext context;
|
||||
private final CorrelationContext distContext;
|
||||
private final Baggage distContext;
|
||||
|
||||
public SpanContextShim(SpanShim spanShim) {
|
||||
this(
|
||||
spanShim.telemetryInfo(),
|
||||
spanShim.getSpan().getContext(),
|
||||
spanShim.telemetryInfo().emptyCorrelationContext());
|
||||
spanShim.telemetryInfo().emptyBaggage());
|
||||
}
|
||||
|
||||
public SpanContextShim(TelemetryInfo telemetryInfo, io.opentelemetry.trace.SpanContext context) {
|
||||
this(telemetryInfo, context, telemetryInfo.emptyCorrelationContext());
|
||||
this(telemetryInfo, context, telemetryInfo.emptyBaggage());
|
||||
}
|
||||
|
||||
public SpanContextShim(
|
||||
TelemetryInfo telemetryInfo,
|
||||
io.opentelemetry.trace.SpanContext context,
|
||||
CorrelationContext distContext) {
|
||||
Baggage distContext) {
|
||||
super(telemetryInfo);
|
||||
this.context = context;
|
||||
this.distContext = distContext;
|
||||
}
|
||||
|
||||
SpanContextShim newWithKeyValue(String key, String value) {
|
||||
CorrelationContext.Builder builder = contextManager().contextBuilder().setParent(distContext);
|
||||
Baggage.Builder builder = contextManager().baggageBuilder().setParent(distContext);
|
||||
builder.put(key, value, DEFAULT_ENTRY_METADATA);
|
||||
|
||||
return new SpanContextShim(telemetryInfo(), context, builder.build());
|
||||
|
|
@ -61,7 +61,7 @@ final class SpanContextShim extends BaseShimObject implements SpanContext {
|
|||
return context;
|
||||
}
|
||||
|
||||
CorrelationContext getCorrelationContext() {
|
||||
Baggage getBaggage() {
|
||||
return distContext;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
package io.opentelemetry.opentracingshim;
|
||||
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.trace.Span;
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
|
@ -27,7 +27,7 @@ import javax.annotation.Nullable;
|
|||
/*
|
||||
* SpanContextShimTable stores and manages OpenTracing SpanContext instances,
|
||||
* which are expected to a unmodfiable union of SpanContext and Baggage
|
||||
* (CorrelationContext/TagMap under OpenTelemetry).
|
||||
* (Baggage/TagMap under OpenTelemetry).
|
||||
*
|
||||
* This requires that changes on a given Span and its (new) SpanContext
|
||||
* are visible in all threads at *any* moment. The current approach uses
|
||||
|
|
@ -85,10 +85,10 @@ final class SpanContextShimTable {
|
|||
}
|
||||
|
||||
public SpanContextShim create(SpanShim spanShim) {
|
||||
return create(spanShim, spanShim.telemetryInfo().emptyCorrelationContext());
|
||||
return create(spanShim, spanShim.telemetryInfo().emptyBaggage());
|
||||
}
|
||||
|
||||
public SpanContextShim create(SpanShim spanShim, CorrelationContext distContext) {
|
||||
public SpanContextShim create(SpanShim spanShim, Baggage distContext) {
|
||||
lock.writeLock().lock();
|
||||
try {
|
||||
SpanContextShim contextShim = shimsMap.get(spanShim.getSpan());
|
||||
|
|
|
|||
|
|
@ -16,28 +16,27 @@
|
|||
|
||||
package io.opentelemetry.opentracingshim;
|
||||
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.trace.Tracer;
|
||||
|
||||
/**
|
||||
* Utility class that holds a Tracer, a CorrelationContextManager, and related objects that are core
|
||||
* part of the OT Shim layer.
|
||||
* Utility class that holds a Tracer, a BaggageManager, and related objects that are core part of
|
||||
* the OT Shim layer.
|
||||
*/
|
||||
final class TelemetryInfo {
|
||||
private final Tracer tracer;
|
||||
private final CorrelationContextManager contextManager;
|
||||
private final CorrelationContext emptyCorrelationContext;
|
||||
private final BaggageManager contextManager;
|
||||
private final Baggage emptyBaggage;
|
||||
private final ContextPropagators propagators;
|
||||
private final SpanContextShimTable spanContextTable;
|
||||
|
||||
TelemetryInfo(
|
||||
Tracer tracer, CorrelationContextManager contextManager, ContextPropagators propagators) {
|
||||
TelemetryInfo(Tracer tracer, BaggageManager contextManager, ContextPropagators propagators) {
|
||||
this.tracer = tracer;
|
||||
this.contextManager = contextManager;
|
||||
this.propagators = propagators;
|
||||
this.emptyCorrelationContext = contextManager.contextBuilder().build();
|
||||
this.emptyBaggage = contextManager.baggageBuilder().build();
|
||||
this.spanContextTable = new SpanContextShimTable();
|
||||
}
|
||||
|
||||
|
|
@ -45,7 +44,7 @@ final class TelemetryInfo {
|
|||
return tracer;
|
||||
}
|
||||
|
||||
CorrelationContextManager contextManager() {
|
||||
BaggageManager contextManager() {
|
||||
return contextManager;
|
||||
}
|
||||
|
||||
|
|
@ -53,8 +52,8 @@ final class TelemetryInfo {
|
|||
return spanContextTable;
|
||||
}
|
||||
|
||||
CorrelationContext emptyCorrelationContext() {
|
||||
return emptyCorrelationContext;
|
||||
Baggage emptyBaggage() {
|
||||
return emptyBaggage;
|
||||
}
|
||||
|
||||
ContextPropagators propagators() {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
package io.opentelemetry.opentracingshim;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.trace.Tracer;
|
||||
import io.opentelemetry.trace.TracerProvider;
|
||||
import java.util.Objects;
|
||||
|
|
@ -27,7 +27,7 @@ public final class TraceShim {
|
|||
|
||||
/**
|
||||
* Creates a {@code io.opentracing.Tracer} shim out of {@code OpenTelemetry.getTracer()} and
|
||||
* {@code OpenTelemetry.getCorrelationContextManager()}.
|
||||
* {@code OpenTelemetry.getBaggageManager()}.
|
||||
*
|
||||
* @return a {@code io.opentracing.Tracer}.
|
||||
* @since 0.1.0
|
||||
|
|
@ -36,21 +36,21 @@ public final class TraceShim {
|
|||
return new TracerShim(
|
||||
new TelemetryInfo(
|
||||
getTracer(OpenTelemetry.getTracerProvider()),
|
||||
OpenTelemetry.getCorrelationContextManager(),
|
||||
OpenTelemetry.getBaggageManager(),
|
||||
OpenTelemetry.getPropagators()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@code io.opentracing.Tracer} shim out the specified {@code Tracer} and {@code
|
||||
* CorrelationContextManager}.
|
||||
* BaggageManager}.
|
||||
*
|
||||
* @param tracerProvider the {@code TracerProvider} used by this shim.
|
||||
* @param contextManager the {@code CorrelationContextManager} used by this shim.
|
||||
* @param contextManager the {@code BaggageManager} used by this shim.
|
||||
* @return a {@code io.opentracing.Tracer}.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
public static io.opentracing.Tracer createTracerShim(
|
||||
TracerProvider tracerProvider, CorrelationContextManager contextManager) {
|
||||
TracerProvider tracerProvider, BaggageManager contextManager) {
|
||||
return new TracerShim(
|
||||
new TelemetryInfo(
|
||||
getTracer(Objects.requireNonNull(tracerProvider, "tracerProvider")),
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.trace.Tracer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
|
@ -30,7 +30,7 @@ class SpanBuilderShimTest {
|
|||
private final TracerSdkProvider tracerSdkFactory = TracerSdkProvider.builder().build();
|
||||
private final Tracer tracer = tracerSdkFactory.get("SpanShimTest");
|
||||
private final TelemetryInfo telemetryInfo =
|
||||
new TelemetryInfo(tracer, new CorrelationContextManagerSdk(), OpenTelemetry.getPropagators());
|
||||
new TelemetryInfo(tracer, new BaggageManagerSdk(), OpenTelemetry.getPropagators());
|
||||
|
||||
private static final String SPAN_NAME = "Span";
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.trace.Span;
|
||||
import io.opentelemetry.trace.Tracer;
|
||||
|
|
@ -37,7 +37,7 @@ class SpanShimTest {
|
|||
private final TracerSdkProvider tracerSdkFactory = TracerSdkProvider.builder().build();
|
||||
private final Tracer tracer = tracerSdkFactory.get("SpanShimTest");
|
||||
private final TelemetryInfo telemetryInfo =
|
||||
new TelemetryInfo(tracer, new CorrelationContextManagerSdk(), OpenTelemetry.getPropagators());
|
||||
new TelemetryInfo(tracer, new BaggageManagerSdk(), OpenTelemetry.getPropagators());
|
||||
private Span span;
|
||||
|
||||
private static final String SPAN_NAME = "Span";
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
package io.opentelemetry.opentracingshim;
|
||||
|
||||
import static io.opentelemetry.OpenTelemetry.getCorrelationContextManager;
|
||||
import static io.opentelemetry.OpenTelemetry.getBaggageManager;
|
||||
import static io.opentelemetry.OpenTelemetry.getTracerProvider;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
|
@ -32,14 +32,14 @@ class TraceShimTest {
|
|||
void createTracerShim_default() {
|
||||
TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim();
|
||||
assertEquals(OpenTelemetry.getTracer("opentracingshim"), tracerShim.tracer());
|
||||
assertEquals(OpenTelemetry.getCorrelationContextManager(), tracerShim.contextManager());
|
||||
assertEquals(OpenTelemetry.getBaggageManager(), tracerShim.contextManager());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createTracerShim_nullTracer() {
|
||||
assertThrows(
|
||||
NullPointerException.class,
|
||||
() -> TraceShim.createTracerShim(null, getCorrelationContextManager()),
|
||||
() -> TraceShim.createTracerShim(null, getBaggageManager()),
|
||||
"tracerProvider");
|
||||
}
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ class TraceShimTest {
|
|||
@Test
|
||||
void createTracerShim() {
|
||||
TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
CorrelationContextManagerSdk contextManager = new CorrelationContextManagerSdk();
|
||||
BaggageManagerSdk contextManager = new BaggageManagerSdk();
|
||||
TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim(sdk, contextManager);
|
||||
assertEquals(sdk.get("opentracingshim"), tracerShim.tracer());
|
||||
assertEquals(contextManager, tracerShim.contextManager());
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class TracerShimTest {
|
|||
new TracerShim(
|
||||
new TelemetryInfo(
|
||||
OpenTelemetry.getTracer("opentracingshim"),
|
||||
OpenTelemetry.getCorrelationContextManager(),
|
||||
OpenTelemetry.getBaggageManager(),
|
||||
OpenTelemetry.getPropagators()));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ package io.opentelemetry.opentracingshim.testbed;
|
|||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
import io.opentelemetry.correlationcontext.DefaultCorrelationContextManager;
|
||||
import io.opentelemetry.baggage.DefaultBaggageManager;
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
|
|
@ -38,7 +38,7 @@ class OpenTelemetryInteroperabilityTest {
|
|||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer otTracer =
|
||||
TraceShim.createTracerShim(sdk, DefaultCorrelationContextManager.getInstance());
|
||||
TraceShim.createTracerShim(sdk, DefaultBaggageManager.getInstance());
|
||||
|
||||
@BeforeEach
|
||||
void before() {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.trace.SpanId;
|
||||
|
|
@ -46,7 +46,7 @@ class ActiveSpanReplacementTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final ExecutorService executor = Executors.newCachedThreadPool();
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.trace.Span.Kind;
|
||||
|
|
@ -51,7 +51,7 @@ class ActorPropagationTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private Phaser phaser;
|
||||
|
||||
@BeforeEach
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentracing.Span;
|
||||
import io.opentracing.Tracer;
|
||||
|
|
@ -34,7 +34,7 @@ public final class BaggageHandlingTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final ExecutorService executor = Executors.newCachedThreadPool();
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.trace.Span.Kind;
|
||||
|
|
@ -42,7 +42,7 @@ class TestClientServerTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final ArrayBlockingQueue<Message> queue = new ArrayBlockingQueue<>(10);
|
||||
private Server server;
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.trace.Span.Kind;
|
||||
|
|
@ -50,7 +50,7 @@ class HandlerTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final Client client = new Client(new RequestHandler(tracer));
|
||||
|
||||
@BeforeEach
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData.Event;
|
||||
|
|
@ -48,7 +48,7 @@ public final class ErrorReportingTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final ExecutorService executor = Executors.newCachedThreadPool();
|
||||
|
||||
/* Very simple error handling **/
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentracing.Scope;
|
||||
|
|
@ -41,7 +41,7 @@ public final class LateSpanFinishTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final ExecutorService executor = Executors.newCachedThreadPool();
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.trace.Span;
|
||||
|
|
@ -34,7 +34,7 @@ class ListenerTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
|
||||
@Test
|
||||
void test() throws Exception {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentracing.Scope;
|
||||
|
|
@ -46,7 +46,7 @@ class MultipleCallbacksTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
|
||||
@Test
|
||||
void test() {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
|||
import io.opentelemetry.common.ReadableAttributes;
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentracing.Scope;
|
||||
|
|
@ -44,7 +44,7 @@ public final class NestedCallbacksTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final ExecutorService executor = Executors.newCachedThreadPool();
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
import io.opentelemetry.common.AttributeKey;
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.trace.SpanId;
|
||||
|
|
@ -50,7 +50,7 @@ class PromisePropagationTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private Phaser phaser;
|
||||
|
||||
@BeforeEach
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentracing.Tracer;
|
||||
|
|
@ -39,7 +39,7 @@ public final class HandlerTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
private final Client client = new Client(new RequestHandler(tracer));
|
||||
|
||||
@BeforeEach
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
|
||||
import io.opentelemetry.opentracingshim.TraceShim;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.trace.SpanId;
|
||||
|
|
@ -39,7 +39,7 @@ class SuspendResumePropagationTest {
|
|||
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
|
||||
private final InMemoryTracing inMemoryTracing =
|
||||
InMemoryTracing.builder().setTracerProvider(sdk).build();
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new CorrelationContextManagerSdk());
|
||||
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk());
|
||||
|
||||
@BeforeEach
|
||||
void before() {}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ ext.propertiesDir = "build/generated/properties/io/opentelemetry/sdk"
|
|||
dependencies {
|
||||
api project(':opentelemetry-api'),
|
||||
project(':opentelemetry-sdk-common'),
|
||||
project(':opentelemetry-sdk-correlation-context'),
|
||||
project(':opentelemetry-sdk-baggage'),
|
||||
project(':opentelemetry-sdk-metrics'),
|
||||
project(':opentelemetry-sdk-tracing')
|
||||
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@ package io.opentelemetry.sdk;
|
|||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.internal.Obfuscated;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import io.opentelemetry.sdk.metrics.MeterSdkProvider;
|
||||
import io.opentelemetry.sdk.trace.TracerSdkProvider;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
/**
|
||||
* This class provides a static global accessor for SDK telemetry objects {@link TracerSdkProvider},
|
||||
* {@link MeterSdkProvider} and {@link CorrelationContextManagerSdk}.
|
||||
* {@link MeterSdkProvider} and {@link BaggageManagerSdk}.
|
||||
*
|
||||
* <p>This is a convenience class getting and casting the telemetry objects from {@link
|
||||
* OpenTelemetry}.
|
||||
|
|
@ -53,12 +53,12 @@ public final class OpenTelemetrySdk {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link CorrelationContextManagerSdk}.
|
||||
* Returns a {@link BaggageManagerSdk}.
|
||||
*
|
||||
* @return context manager returned by {@link OpenTelemetry#getCorrelationContextManager()}.
|
||||
* @return context manager returned by {@link OpenTelemetry#getBaggageManager()}.
|
||||
*/
|
||||
public static CorrelationContextManagerSdk getCorrelationContextManager() {
|
||||
return (CorrelationContextManagerSdk) OpenTelemetry.getCorrelationContextManager();
|
||||
public static BaggageManagerSdk getBaggageManager() {
|
||||
return (BaggageManagerSdk) OpenTelemetry.getBaggageManager();
|
||||
}
|
||||
|
||||
private OpenTelemetrySdk() {}
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ class OpenTelemetrySdkTest {
|
|||
void testDefault() {
|
||||
assertThat(OpenTelemetrySdk.getTracerProvider().get(""))
|
||||
.isSameAs(OpenTelemetry.getTracerProvider().get(""));
|
||||
assertThat(OpenTelemetrySdk.getCorrelationContextManager())
|
||||
.isSameAs(OpenTelemetry.getCorrelationContextManager());
|
||||
assertThat(OpenTelemetrySdk.getBaggageManager()).isSameAs(OpenTelemetry.getBaggageManager());
|
||||
assertThat(OpenTelemetrySdk.getMeterProvider()).isSameAs(OpenTelemetry.getMeterProvider());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ plugins {
|
|||
id "ru.vyarus.animalsniffer"
|
||||
}
|
||||
|
||||
description = 'OpenTelemetry SDK Correlation Context'
|
||||
ext.moduleName = "io.opentelemetry.sdk.correlationcontext"
|
||||
ext.propertiesDir = "build/generated/properties/io/opentelemetry/sdk/correlationcontext"
|
||||
description = 'OpenTelemetry SDK Baggage'
|
||||
ext.moduleName = "io.opentelemetry.sdk.baggage"
|
||||
ext.propertiesDir = "build/generated/properties/io/opentelemetry/sdk/baggage"
|
||||
|
||||
dependencies {
|
||||
api project(':opentelemetry-api'),
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.baggage;
|
||||
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.baggage.BaggageUtils;
|
||||
import io.opentelemetry.context.Scope;
|
||||
|
||||
/** {@link BaggageManagerSdk} is SDK implementation of {@link BaggageManager}. */
|
||||
public class BaggageManagerSdk implements BaggageManager {
|
||||
|
||||
@Override
|
||||
public Baggage getCurrentBaggage() {
|
||||
return BaggageUtils.getCurrentBaggage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Baggage.Builder baggageBuilder() {
|
||||
return new BaggageSdk.Builder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Scope withContext(Baggage distContext) {
|
||||
return BaggageUtils.currentContextWith(distContext);
|
||||
}
|
||||
}
|
||||
|
|
@ -14,14 +14,14 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext;
|
||||
package io.opentelemetry.sdk.baggage;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.CorrelationsContextUtils;
|
||||
import io.opentelemetry.correlationcontext.Entry;
|
||||
import io.opentelemetry.correlationcontext.EntryMetadata;
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.BaggageUtils;
|
||||
import io.opentelemetry.baggage.Entry;
|
||||
import io.opentelemetry.baggage.EntryMetadata;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -34,19 +34,19 @@ import javax.annotation.concurrent.Immutable;
|
|||
@Immutable
|
||||
// TODO: Migrate to AutoValue
|
||||
// @AutoValue
|
||||
class CorrelationContextSdk implements CorrelationContext {
|
||||
class BaggageSdk implements Baggage {
|
||||
|
||||
// The types of the EntryKey and Entry must match for each entry.
|
||||
private final Map<String, Entry> entries;
|
||||
@Nullable private final CorrelationContext parent;
|
||||
@Nullable private final Baggage parent;
|
||||
|
||||
/**
|
||||
* Creates a new {@link CorrelationContextSdk} with the given entries.
|
||||
* Creates a new {@link BaggageSdk} with the given entries.
|
||||
*
|
||||
* @param entries the initial entries for this {@code CorrelationContextSdk}.
|
||||
* @param entries the initial entries for this {@code BaggageSdk}.
|
||||
* @param parent providing a default set of entries
|
||||
*/
|
||||
private CorrelationContextSdk(Map<String, ? extends Entry> entries, CorrelationContext parent) {
|
||||
private BaggageSdk(Map<String, ? extends Entry> entries, Baggage parent) {
|
||||
this.entries =
|
||||
Collections.unmodifiableMap(new HashMap<>(Objects.requireNonNull(entries, "entries")));
|
||||
this.parent = parent;
|
||||
|
|
@ -88,11 +88,11 @@ class CorrelationContextSdk implements CorrelationContext {
|
|||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || !(o instanceof CorrelationContextSdk)) {
|
||||
if (o == null || !(o instanceof BaggageSdk)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
CorrelationContextSdk distContextSdk = (CorrelationContextSdk) o;
|
||||
BaggageSdk distContextSdk = (BaggageSdk) o;
|
||||
|
||||
if (!entries.equals(distContextSdk.entries)) {
|
||||
return false;
|
||||
|
|
@ -109,38 +109,38 @@ class CorrelationContextSdk implements CorrelationContext {
|
|||
|
||||
// TODO: Migrate to AutoValue.Builder
|
||||
// @AutoValue.Builder
|
||||
static class Builder implements CorrelationContext.Builder {
|
||||
@Nullable private CorrelationContext parent;
|
||||
static class Builder implements Baggage.Builder {
|
||||
@Nullable private Baggage parent;
|
||||
private boolean noImplicitParent;
|
||||
private final Map<String, Entry> entries;
|
||||
|
||||
/** Create a new empty CorrelationContext builder. */
|
||||
/** Create a new empty Baggage builder. */
|
||||
Builder() {
|
||||
this.entries = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder setParent(CorrelationContext parent) {
|
||||
public Baggage.Builder setParent(Baggage parent) {
|
||||
this.parent = Objects.requireNonNull(parent, "parent");
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder setParent(Context context) {
|
||||
public Baggage.Builder setParent(Context context) {
|
||||
Objects.requireNonNull(context, "context");
|
||||
setParent(CorrelationsContextUtils.getCorrelationContext(context));
|
||||
setParent(BaggageUtils.getBaggage(context));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder setNoParent() {
|
||||
public Baggage.Builder setNoParent() {
|
||||
this.parent = null;
|
||||
noImplicitParent = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder put(String key, String value, EntryMetadata entryMetadata) {
|
||||
public Baggage.Builder put(String key, String value, EntryMetadata entryMetadata) {
|
||||
entries.put(
|
||||
Objects.requireNonNull(key, "key"),
|
||||
Entry.create(
|
||||
|
|
@ -151,7 +151,7 @@ class CorrelationContextSdk implements CorrelationContext {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder remove(String key) {
|
||||
public Baggage.Builder remove(String key) {
|
||||
entries.remove(Objects.requireNonNull(key, "key"));
|
||||
if (parent != null && parent.getEntryValue(key) != null) {
|
||||
entries.put(key, null);
|
||||
|
|
@ -160,11 +160,11 @@ class CorrelationContextSdk implements CorrelationContext {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContextSdk build() {
|
||||
public BaggageSdk build() {
|
||||
if (parent == null && !noImplicitParent) {
|
||||
parent = OpenTelemetry.getCorrelationContextManager().getCurrentContext();
|
||||
parent = OpenTelemetry.getBaggageManager().getCurrentBaggage();
|
||||
}
|
||||
return new CorrelationContextSdk(entries, parent);
|
||||
return new BaggageSdk(entries, parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -14,23 +14,22 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext.spi;
|
||||
package io.opentelemetry.sdk.baggage.spi;
|
||||
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.spi.CorrelationContextManagerFactory;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.baggage.spi.BaggageManagerFactory;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
|
||||
/**
|
||||
* {@code CorrelationContextManager} provider implementation for {@link
|
||||
* CorrelationContextManagerFactory}.
|
||||
* {@code BaggageManager} provider implementation for {@link BaggageManagerFactory}.
|
||||
*
|
||||
* <p>This class is not intended to be used in application code and it is used only by {@link
|
||||
* io.opentelemetry.OpenTelemetry}.
|
||||
*/
|
||||
public final class CorrelationContextManagerFactorySdk implements CorrelationContextManagerFactory {
|
||||
public final class BaggageManagerFactorySdk implements BaggageManagerFactory {
|
||||
|
||||
@Override
|
||||
public CorrelationContextManager create() {
|
||||
return new CorrelationContextManagerSdk();
|
||||
public BaggageManager create() {
|
||||
return new BaggageManagerSdk();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
io.opentelemetry.sdk.baggage.spi.BaggageManagerFactorySdk
|
||||
|
|
@ -14,27 +14,27 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext;
|
||||
package io.opentelemetry.sdk.baggage;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.BaggageUtils;
|
||||
import io.opentelemetry.baggage.EmptyBaggage;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.CorrelationsContextUtils;
|
||||
import io.opentelemetry.correlationcontext.EmptyCorrelationContext;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
/** Unit tests for {@link CorrelationContextManagerSdk}. */
|
||||
/** Unit tests for {@link BaggageManagerSdk}. */
|
||||
// Need to suppress warnings for MustBeClosed because Android 14 does not support
|
||||
// try-with-resources.
|
||||
@SuppressWarnings("MustBeClosedChecker")
|
||||
class CorrelationContextManagerSdkTest {
|
||||
@Mock private CorrelationContext distContext;
|
||||
private final CorrelationContextManagerSdk contextManager = new CorrelationContextManagerSdk();
|
||||
class BaggageManagerSdkTest {
|
||||
@Mock private Baggage distContext;
|
||||
private final BaggageManagerSdk contextManager = new BaggageManagerSdk();
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
|
|
@ -43,15 +43,14 @@ class CorrelationContextManagerSdkTest {
|
|||
|
||||
@Test
|
||||
void testGetCurrentContext_DefaultContext() {
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(EmptyCorrelationContext.getInstance());
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetCurrentContext_ContextSetToNull() {
|
||||
Context orig =
|
||||
CorrelationsContextUtils.withCorrelationContext(null, Context.current()).attach();
|
||||
Context orig = BaggageUtils.withBaggage(null, Context.current()).attach();
|
||||
try {
|
||||
CorrelationContext distContext = contextManager.getCurrentContext();
|
||||
Baggage distContext = contextManager.getCurrentBaggage();
|
||||
assertThat(distContext).isNotNull();
|
||||
assertThat(distContext.getEntries()).isEmpty();
|
||||
} finally {
|
||||
|
|
@ -60,28 +59,28 @@ class CorrelationContextManagerSdkTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testWithCorrelationContext() {
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(EmptyCorrelationContext.getInstance());
|
||||
void testWithBaggage() {
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
try (Scope wtm = contextManager.withContext(distContext)) {
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(distContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(distContext);
|
||||
}
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(EmptyCorrelationContext.getInstance());
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testWithCorrelationContextUsingWrap() {
|
||||
void testWithBaggageUsingWrap() {
|
||||
Runnable runnable;
|
||||
try (Scope wtm = contextManager.withContext(distContext)) {
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(distContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(distContext);
|
||||
runnable =
|
||||
Context.current()
|
||||
.wrap(
|
||||
() -> {
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(distContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(distContext);
|
||||
});
|
||||
}
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(EmptyCorrelationContext.getInstance());
|
||||
// When we run the runnable we will have the CorrelationContext in the current Context.
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
|
||||
// When we run the runnable we will have the Baggage in the current Context.
|
||||
runnable.run();
|
||||
}
|
||||
}
|
||||
|
|
@ -14,30 +14,29 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext;
|
||||
package io.opentelemetry.sdk.baggage;
|
||||
|
||||
import static io.opentelemetry.sdk.correlationcontext.CorrelationContextTestUtil.listToCorrelationContext;
|
||||
import static io.opentelemetry.sdk.baggage.BaggageTestUtil.listToBaggage;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.testing.EqualsTester;
|
||||
import io.grpc.Context;
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.baggage.BaggageUtils;
|
||||
import io.opentelemetry.baggage.Entry;
|
||||
import io.opentelemetry.baggage.EntryMetadata;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.CorrelationsContextUtils;
|
||||
import io.opentelemetry.correlationcontext.Entry;
|
||||
import io.opentelemetry.correlationcontext.EntryMetadata;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Tests for {@link CorrelationContextSdk} and {@link CorrelationContextSdk.Builder}.
|
||||
* Tests for {@link BaggageSdk} and {@link BaggageSdk.Builder}.
|
||||
*
|
||||
* <p>Tests for scope management with {@link CorrelationContextManagerSdk} are in {@link
|
||||
* ScopedCorrelationContextTest}.
|
||||
* <p>Tests for scope management with {@link BaggageManagerSdk} are in {@link ScopedBaggageTest}.
|
||||
*/
|
||||
class CorrelationContextSdkTest {
|
||||
private final CorrelationContextManager contextManager = new CorrelationContextManagerSdk();
|
||||
class BaggageSdkTest {
|
||||
private final BaggageManager contextManager = new BaggageManagerSdk();
|
||||
|
||||
private static final EntryMetadata TMD =
|
||||
EntryMetadata.create(EntryMetadata.EntryTtl.UNLIMITED_PROPAGATION);
|
||||
|
|
@ -53,23 +52,23 @@ class CorrelationContextSdkTest {
|
|||
|
||||
@Test
|
||||
void getEntries_empty() {
|
||||
CorrelationContextSdk distContext = new CorrelationContextSdk.Builder().build();
|
||||
BaggageSdk distContext = new BaggageSdk.Builder().build();
|
||||
assertThat(distContext.getEntries()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getEntries_nonEmpty() {
|
||||
CorrelationContextSdk distContext = listToCorrelationContext(T1, T2);
|
||||
BaggageSdk distContext = listToBaggage(T1, T2);
|
||||
assertThat(distContext.getEntries()).containsExactly(T1, T2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getEntries_chain() {
|
||||
Entry t1alt = Entry.create(K1, V2, TMD);
|
||||
CorrelationContextSdk parent = listToCorrelationContext(T1, T2);
|
||||
CorrelationContext distContext =
|
||||
BaggageSdk parent = listToBaggage(T1, T2);
|
||||
Baggage distContext =
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.setParent(parent)
|
||||
.put(t1alt.getKey(), t1alt.getValue(), t1alt.getEntryMetadata())
|
||||
.build();
|
||||
|
|
@ -78,10 +77,10 @@ class CorrelationContextSdkTest {
|
|||
|
||||
@Test
|
||||
void put_newKey() {
|
||||
CorrelationContextSdk distContext = listToCorrelationContext(T1);
|
||||
BaggageSdk distContext = listToBaggage(T1);
|
||||
assertThat(
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.setParent(distContext)
|
||||
.put(K2, V2, TMD)
|
||||
.build()
|
||||
|
|
@ -91,10 +90,10 @@ class CorrelationContextSdkTest {
|
|||
|
||||
@Test
|
||||
void put_existingKey() {
|
||||
CorrelationContextSdk distContext = listToCorrelationContext(T1);
|
||||
BaggageSdk distContext = listToBaggage(T1);
|
||||
assertThat(
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.setParent(distContext)
|
||||
.put(K1, V2, TMD)
|
||||
.build()
|
||||
|
|
@ -104,71 +103,61 @@ class CorrelationContextSdkTest {
|
|||
|
||||
@Test
|
||||
void put_nullKey() {
|
||||
CorrelationContextSdk distContext = listToCorrelationContext(T1);
|
||||
CorrelationContext.Builder builder = contextManager.contextBuilder().setParent(distContext);
|
||||
BaggageSdk distContext = listToBaggage(T1);
|
||||
Baggage.Builder builder = contextManager.baggageBuilder().setParent(distContext);
|
||||
assertThrows(NullPointerException.class, () -> builder.put(null, V2, TMD), "key");
|
||||
}
|
||||
|
||||
@Test
|
||||
void put_nullValue() {
|
||||
CorrelationContextSdk distContext = listToCorrelationContext(T1);
|
||||
CorrelationContext.Builder builder = contextManager.contextBuilder().setParent(distContext);
|
||||
BaggageSdk distContext = listToBaggage(T1);
|
||||
Baggage.Builder builder = contextManager.baggageBuilder().setParent(distContext);
|
||||
assertThrows(NullPointerException.class, () -> builder.put(K2, null, TMD), "value");
|
||||
}
|
||||
|
||||
@Test
|
||||
void setParent_nullValue() {
|
||||
CorrelationContextSdk parent = listToCorrelationContext(T1);
|
||||
BaggageSdk parent = listToBaggage(T1);
|
||||
assertThrows(
|
||||
NullPointerException.class,
|
||||
() ->
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.setParent(parent)
|
||||
.setParent((CorrelationContext) null)
|
||||
.build());
|
||||
() -> contextManager.baggageBuilder().setParent(parent).setParent((Baggage) null).build());
|
||||
}
|
||||
|
||||
@Test
|
||||
void setParent_nullContext() {
|
||||
assertThrows(
|
||||
NullPointerException.class,
|
||||
() -> contextManager.contextBuilder().setParent((Context) null));
|
||||
() -> contextManager.baggageBuilder().setParent((Context) null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void setParent_fromContext() {
|
||||
CorrelationContextSdk parent = listToCorrelationContext(T1);
|
||||
Context context =
|
||||
CorrelationsContextUtils.withCorrelationContext(
|
||||
listToCorrelationContext(T2), Context.current());
|
||||
CorrelationContext corrContext =
|
||||
contextManager.contextBuilder().setParent(parent).setParent(context).build();
|
||||
assertThat(corrContext.getEntries()).containsExactly(T2);
|
||||
BaggageSdk parent = listToBaggage(T1);
|
||||
Context context = BaggageUtils.withBaggage(listToBaggage(T2), Context.current());
|
||||
Baggage baggage = contextManager.baggageBuilder().setParent(parent).setParent(context).build();
|
||||
assertThat(baggage.getEntries()).containsExactly(T2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void setParent_fromEmptyContext() {
|
||||
Context emptyContext = Context.current();
|
||||
CorrelationContextSdk parent = listToCorrelationContext(T1);
|
||||
try (Scope scope = CorrelationsContextUtils.currentContextWith(parent)) {
|
||||
CorrelationContext corrContext =
|
||||
contextManager.contextBuilder().setParent(emptyContext).build();
|
||||
assertThat(corrContext.getEntries()).isEmpty();
|
||||
BaggageSdk parent = listToBaggage(T1);
|
||||
try (Scope scope = BaggageUtils.currentContextWith(parent)) {
|
||||
Baggage baggage = contextManager.baggageBuilder().setParent(emptyContext).build();
|
||||
assertThat(baggage.getEntries()).isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void setParent_setNoParent() {
|
||||
CorrelationContextSdk parent = listToCorrelationContext(T1);
|
||||
CorrelationContext distContext =
|
||||
contextManager.contextBuilder().setParent(parent).setNoParent().build();
|
||||
BaggageSdk parent = listToBaggage(T1);
|
||||
Baggage distContext = contextManager.baggageBuilder().setParent(parent).setNoParent().build();
|
||||
assertThat(distContext.getEntries()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void remove_existingKey() {
|
||||
CorrelationContextSdk.Builder builder = new CorrelationContextSdk.Builder();
|
||||
BaggageSdk.Builder builder = new BaggageSdk.Builder();
|
||||
builder.put(T1.getKey(), T1.getValue(), T1.getEntryMetadata());
|
||||
builder.put(T2.getKey(), T2.getValue(), T2.getEntryMetadata());
|
||||
|
||||
|
|
@ -177,7 +166,7 @@ class CorrelationContextSdkTest {
|
|||
|
||||
@Test
|
||||
void remove_differentKey() {
|
||||
CorrelationContextSdk.Builder builder = new CorrelationContextSdk.Builder();
|
||||
BaggageSdk.Builder builder = new BaggageSdk.Builder();
|
||||
builder.put(T1.getKey(), T1.getValue(), T1.getEntryMetadata());
|
||||
builder.put(T2.getKey(), T2.getValue(), T2.getEntryMetadata());
|
||||
|
||||
|
|
@ -186,15 +175,15 @@ class CorrelationContextSdkTest {
|
|||
|
||||
@Test
|
||||
void remove_keyFromParent() {
|
||||
CorrelationContextSdk distContext = listToCorrelationContext(T1, T2);
|
||||
BaggageSdk distContext = listToBaggage(T1, T2);
|
||||
assertThat(
|
||||
contextManager.contextBuilder().setParent(distContext).remove(K1).build().getEntries())
|
||||
contextManager.baggageBuilder().setParent(distContext).remove(K1).build().getEntries())
|
||||
.containsExactly(T2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void remove_nullKey() {
|
||||
CorrelationContext.Builder builder = contextManager.contextBuilder();
|
||||
Baggage.Builder builder = contextManager.baggageBuilder();
|
||||
assertThrows(NullPointerException.class, () -> builder.remove(null), "key");
|
||||
}
|
||||
|
||||
|
|
@ -202,11 +191,11 @@ class CorrelationContextSdkTest {
|
|||
void testEquals() {
|
||||
new EqualsTester()
|
||||
.addEqualityGroup(
|
||||
contextManager.contextBuilder().put(K1, V1, TMD).put(K2, V2, TMD).build(),
|
||||
contextManager.contextBuilder().put(K1, V1, TMD).put(K2, V2, TMD).build(),
|
||||
contextManager.contextBuilder().put(K2, V2, TMD).put(K1, V1, TMD).build())
|
||||
.addEqualityGroup(contextManager.contextBuilder().put(K1, V1, TMD).put(K2, V1, TMD).build())
|
||||
.addEqualityGroup(contextManager.contextBuilder().put(K1, V2, TMD).put(K2, V1, TMD).build())
|
||||
contextManager.baggageBuilder().put(K1, V1, TMD).put(K2, V2, TMD).build(),
|
||||
contextManager.baggageBuilder().put(K1, V1, TMD).put(K2, V2, TMD).build(),
|
||||
contextManager.baggageBuilder().put(K2, V2, TMD).put(K1, V1, TMD).build())
|
||||
.addEqualityGroup(contextManager.baggageBuilder().put(K1, V1, TMD).put(K2, V1, TMD).build())
|
||||
.addEqualityGroup(contextManager.baggageBuilder().put(K1, V2, TMD).put(K2, V1, TMD).build())
|
||||
.testEquals();
|
||||
}
|
||||
}
|
||||
|
|
@ -14,25 +14,25 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext;
|
||||
package io.opentelemetry.sdk.baggage;
|
||||
|
||||
import io.opentelemetry.correlationcontext.Entry;
|
||||
import io.opentelemetry.baggage.Entry;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
class CorrelationContextTestUtil {
|
||||
class BaggageTestUtil {
|
||||
|
||||
static CorrelationContextSdk listToCorrelationContext(Entry... entries) {
|
||||
return listToCorrelationContext(Arrays.asList(entries));
|
||||
static BaggageSdk listToBaggage(Entry... entries) {
|
||||
return listToBaggage(Arrays.asList(entries));
|
||||
}
|
||||
|
||||
static CorrelationContextSdk listToCorrelationContext(List<Entry> entries) {
|
||||
CorrelationContextSdk.Builder builder = new CorrelationContextSdk.Builder();
|
||||
static BaggageSdk listToBaggage(List<Entry> entries) {
|
||||
BaggageSdk.Builder builder = new BaggageSdk.Builder();
|
||||
for (Entry entry : entries) {
|
||||
builder.put(entry.getKey(), entry.getValue(), entry.getEntryMetadata());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private CorrelationContextTestUtil() {}
|
||||
private BaggageTestUtil() {}
|
||||
}
|
||||
|
|
@ -14,23 +14,23 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext;
|
||||
package io.opentelemetry.sdk.baggage;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.baggage.Baggage;
|
||||
import io.opentelemetry.baggage.BaggageManager;
|
||||
import io.opentelemetry.baggage.EmptyBaggage;
|
||||
import io.opentelemetry.baggage.Entry;
|
||||
import io.opentelemetry.baggage.EntryMetadata;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.EmptyCorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.Entry;
|
||||
import io.opentelemetry.correlationcontext.EntryMetadata;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Unit tests for the methods in {@link CorrelationContextManagerSdk} and {@link
|
||||
* CorrelationContextSdk.Builder} that interact with the current {@link CorrelationContextSdk}.
|
||||
* Unit tests for the methods in {@link BaggageManagerSdk} and {@link BaggageSdk.Builder} that
|
||||
* interact with the current {@link BaggageSdk}.
|
||||
*/
|
||||
class ScopedCorrelationContextTest {
|
||||
class ScopedBaggageTest {
|
||||
private static final String KEY_1 = "key 1";
|
||||
private static final String KEY_2 = "key 2";
|
||||
private static final String KEY_3 = "key 3";
|
||||
|
|
@ -45,120 +45,120 @@ class ScopedCorrelationContextTest {
|
|||
private static final EntryMetadata METADATA_NO_PROPAGATION =
|
||||
EntryMetadata.create(EntryMetadata.EntryTtl.NO_PROPAGATION);
|
||||
|
||||
private final CorrelationContextManager contextManager = new CorrelationContextManagerSdk();
|
||||
private final BaggageManager contextManager = new BaggageManagerSdk();
|
||||
|
||||
@Test
|
||||
void emptyCorrelationContext() {
|
||||
CorrelationContext defaultCorrelationContext = contextManager.getCurrentContext();
|
||||
assertThat(defaultCorrelationContext.getEntries()).isEmpty();
|
||||
assertThat(defaultCorrelationContext).isInstanceOf(EmptyCorrelationContext.class);
|
||||
void emptyBaggage() {
|
||||
Baggage defaultBaggage = contextManager.getCurrentBaggage();
|
||||
assertThat(defaultBaggage.getEntries()).isEmpty();
|
||||
assertThat(defaultBaggage).isInstanceOf(EmptyBaggage.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void withContext() {
|
||||
assertThat(contextManager.getCurrentContext().getEntries()).isEmpty();
|
||||
CorrelationContext scopedEntries =
|
||||
contextManager.contextBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty();
|
||||
Baggage scopedEntries =
|
||||
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
try (Scope scope = contextManager.withContext(scopedEntries)) {
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(scopedEntries);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedEntries);
|
||||
}
|
||||
assertThat(contextManager.getCurrentContext().getEntries()).isEmpty();
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void createBuilderFromCurrentEntries() {
|
||||
CorrelationContext scopedDistContext =
|
||||
contextManager.contextBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
Baggage scopedDistContext =
|
||||
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
try (Scope scope = contextManager.withContext(scopedDistContext)) {
|
||||
CorrelationContext newEntries =
|
||||
Baggage newEntries =
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)
|
||||
.build();
|
||||
assertThat(newEntries.getEntries())
|
||||
.containsExactlyInAnyOrder(
|
||||
Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION),
|
||||
Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION));
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(scopedDistContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedDistContext);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void setCurrentEntriesWithBuilder() {
|
||||
assertThat(contextManager.getCurrentContext().getEntries()).isEmpty();
|
||||
CorrelationContext scopedDistContext =
|
||||
contextManager.contextBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty();
|
||||
Baggage scopedDistContext =
|
||||
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
try (Scope scope = contextManager.withContext(scopedDistContext)) {
|
||||
assertThat(contextManager.getCurrentContext().getEntries())
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries())
|
||||
.containsExactly(Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION));
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(scopedDistContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedDistContext);
|
||||
}
|
||||
assertThat(contextManager.getCurrentContext().getEntries()).isEmpty();
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void addToCurrentEntriesWithBuilder() {
|
||||
CorrelationContext scopedDistContext =
|
||||
contextManager.contextBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
Baggage scopedDistContext =
|
||||
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
try (Scope scope1 = contextManager.withContext(scopedDistContext)) {
|
||||
CorrelationContext innerDistContext =
|
||||
Baggage innerDistContext =
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)
|
||||
.build();
|
||||
try (Scope scope2 = contextManager.withContext(innerDistContext)) {
|
||||
assertThat(contextManager.getCurrentContext().getEntries())
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries())
|
||||
.containsExactlyInAnyOrder(
|
||||
Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION),
|
||||
Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION));
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(innerDistContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(innerDistContext);
|
||||
}
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(scopedDistContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedDistContext);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void multiScopeCorrelationContextWithMetadata() {
|
||||
CorrelationContext scopedDistContext =
|
||||
void multiScopeBaggageWithMetadata() {
|
||||
Baggage scopedDistContext =
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION)
|
||||
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)
|
||||
.build();
|
||||
try (Scope scope1 = contextManager.withContext(scopedDistContext)) {
|
||||
CorrelationContext innerDistContext =
|
||||
Baggage innerDistContext =
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.put(KEY_3, VALUE_3, METADATA_NO_PROPAGATION)
|
||||
.put(KEY_2, VALUE_4, METADATA_NO_PROPAGATION)
|
||||
.build();
|
||||
try (Scope scope2 = contextManager.withContext(innerDistContext)) {
|
||||
assertThat(contextManager.getCurrentContext().getEntries())
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries())
|
||||
.containsExactlyInAnyOrder(
|
||||
Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION),
|
||||
Entry.create(KEY_2, VALUE_4, METADATA_NO_PROPAGATION),
|
||||
Entry.create(KEY_3, VALUE_3, METADATA_NO_PROPAGATION));
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(innerDistContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(innerDistContext);
|
||||
}
|
||||
assertThat(contextManager.getCurrentContext()).isSameAs(scopedDistContext);
|
||||
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedDistContext);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void setNoParent_doesNotInheritContext() {
|
||||
assertThat(contextManager.getCurrentContext().getEntries()).isEmpty();
|
||||
CorrelationContext scopedDistContext =
|
||||
contextManager.contextBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty();
|
||||
Baggage scopedDistContext =
|
||||
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
|
||||
try (Scope scope = contextManager.withContext(scopedDistContext)) {
|
||||
CorrelationContext innerDistContext =
|
||||
Baggage innerDistContext =
|
||||
contextManager
|
||||
.contextBuilder()
|
||||
.baggageBuilder()
|
||||
.setNoParent()
|
||||
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)
|
||||
.build();
|
||||
assertThat(innerDistContext.getEntries())
|
||||
.containsExactly(Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION));
|
||||
}
|
||||
assertThat(contextManager.getCurrentContext().getEntries()).isEmpty();
|
||||
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty();
|
||||
}
|
||||
}
|
||||
|
|
@ -14,19 +14,18 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext.spi;
|
||||
package io.opentelemetry.sdk.baggage.spi;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.OpenTelemetry;
|
||||
import io.opentelemetry.sdk.correlationcontext.CorrelationContextManagerSdk;
|
||||
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class CorrelationContextManagerFactorySdkTest {
|
||||
class BaggageManagerFactorySdkTest {
|
||||
|
||||
@Test
|
||||
void testDefault() {
|
||||
assertThat(OpenTelemetry.getCorrelationContextManager())
|
||||
.isInstanceOf(CorrelationContextManagerSdk.class);
|
||||
assertThat(OpenTelemetry.getBaggageManager()).isInstanceOf(BaggageManagerSdk.class);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright 2019, OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.opentelemetry.sdk.correlationcontext;
|
||||
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContext;
|
||||
import io.opentelemetry.correlationcontext.CorrelationContextManager;
|
||||
import io.opentelemetry.correlationcontext.CorrelationsContextUtils;
|
||||
|
||||
/**
|
||||
* {@link CorrelationContextManagerSdk} is SDK implementation of {@link CorrelationContextManager}.
|
||||
*/
|
||||
public class CorrelationContextManagerSdk implements CorrelationContextManager {
|
||||
|
||||
@Override
|
||||
public CorrelationContext getCurrentContext() {
|
||||
return CorrelationsContextUtils.getCurrentCorrelationContext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CorrelationContext.Builder contextBuilder() {
|
||||
return new CorrelationContextSdk.Builder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Scope withContext(CorrelationContext distContext) {
|
||||
return CorrelationsContextUtils.currentContextWith(distContext);
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
io.opentelemetry.sdk.correlationcontext.spi.CorrelationContextManagerFactorySdk
|
||||
|
|
@ -35,8 +35,8 @@ include ":opentelemetry-all",
|
|||
":opentelemetry-integration-tests-tracecontext",
|
||||
":opentelemetry-opentracing-shim",
|
||||
":opentelemetry-proto",
|
||||
":opentelemetry-sdk-baggage",
|
||||
":opentelemetry-sdk-common",
|
||||
":opentelemetry-sdk-correlation-context",
|
||||
":opentelemetry-sdk-metrics",
|
||||
":opentelemetry-sdk-tracing",
|
||||
":opentelemetry-sdk",
|
||||
|
|
@ -53,14 +53,14 @@ include ":opentelemetry-all",
|
|||
|
||||
rootProject.children.each {
|
||||
it.projectDir = "$rootDir/" + it.name
|
||||
.replace("opentelemetry-integration-tests-", "integration_tests/")
|
||||
.replace("opentelemetry-exporters-", "exporters/")
|
||||
.replace("opentelemetry-extension-", "extensions/")
|
||||
.replace("opentelemetry-sdk-extension-", "sdk_extensions/")
|
||||
.replace("opentelemetry-sdk-", "sdk/")
|
||||
.replace("logging-", "logging/")
|
||||
.replace("opentelemetry-", "")
|
||||
.replace("-", "_") as File
|
||||
.replace("opentelemetry-integration-tests-", "integration_tests/")
|
||||
.replace("opentelemetry-exporters-", "exporters/")
|
||||
.replace("opentelemetry-extension-", "extensions/")
|
||||
.replace("opentelemetry-sdk-extension-", "sdk_extensions/")
|
||||
.replace("opentelemetry-sdk-", "sdk/")
|
||||
.replace("logging-", "logging/")
|
||||
.replace("opentelemetry-", "")
|
||||
.replace("-", "_") as File
|
||||
}
|
||||
|
||||
project(":opentelemetry-sdk").projectDir = "$rootDir/sdk/all" as File
|
||||
|
|
|
|||
Loading…
Reference in New Issue