Make the baggage API fully functional in the API (#1822)

* Make the baggage API fully functional in the API
and get rid of the BaggageManager that was needed previously.

* javadoc cleanup

* more javadoc cleanup

* make the ImmutableBaggage package access
This commit is contained in:
John Watson 2020-10-20 21:57:17 -07:00 committed by GitHub
parent 9efb503544
commit e13e631847
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 211 additions and 828 deletions

View File

@ -6,7 +6,6 @@
package io.opentelemetry; package io.opentelemetry;
import io.opentelemetry.baggage.BaggageManager; import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.baggage.DefaultBaggageManager;
import io.opentelemetry.baggage.spi.BaggageManagerFactory; import io.opentelemetry.baggage.spi.BaggageManagerFactory;
import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.DefaultContextPropagators; import io.opentelemetry.context.propagation.DefaultContextPropagators;
@ -37,13 +36,13 @@ import javax.annotation.concurrent.ThreadSafe;
*/ */
@ThreadSafe @ThreadSafe
public final class OpenTelemetry { public final class OpenTelemetry {
private static final Object mutex = new Object(); private static final Object mutex = new Object();
@Nullable private static volatile OpenTelemetry instance; @Nullable private static volatile OpenTelemetry instance;
private final TracerProvider tracerProvider; private final TracerProvider tracerProvider;
private final MeterProvider meterProvider; private final MeterProvider meterProvider;
private final BaggageManager contextManager;
private volatile ContextPropagators propagators = DefaultContextPropagators.builder().build(); private volatile ContextPropagators propagators = DefaultContextPropagators.builder().build();
@ -126,17 +125,6 @@ public final class OpenTelemetry {
return getMeterProvider().get(instrumentationName, instrumentationVersion); return getMeterProvider().get(instrumentationName, instrumentationVersion);
} }
/**
* Returns a singleton {@link BaggageManager}.
*
* @return registered manager or default via {@link DefaultBaggageManager#getInstance()}.
* @throws IllegalStateException if a specified manager (via system properties) could not be
* found.
*/
public static BaggageManager getBaggageManager() {
return getInstance().contextManager;
}
/** /**
* Returns a {@link ContextPropagators} object, which can be used to access the set of registered * Returns a {@link ContextPropagators} object, which can be used to access the set of registered
* propagators for each supported format. * propagators for each supported format.
@ -188,11 +176,6 @@ public final class OpenTelemetry {
meterProviderFactory != null meterProviderFactory != null
? meterProviderFactory.create() ? meterProviderFactory.create()
: DefaultMeterProvider.getInstance(); : DefaultMeterProvider.getInstance();
BaggageManagerFactory contextManagerProvider = loadSpi(BaggageManagerFactory.class);
contextManager =
contextManagerProvider != null
? contextManagerProvider.create()
: DefaultBaggageManager.getInstance();
} }
/** /**

View File

@ -19,6 +19,17 @@ import javax.annotation.concurrent.Immutable;
*/ */
@Immutable @Immutable
public interface Baggage { public interface Baggage {
/** Baggage with no entries. */
static Baggage empty() {
return ImmutableBaggage.EMPTY;
}
/** Creates a new {@link Builder} for creating Baggage. */
static Builder builder() {
return ImmutableBaggage.builder();
}
/** /**
* Returns an immutable collection of the entries in this {@code Baggage}. Order of entries is not * Returns an immutable collection of the entries in this {@code Baggage}. Order of entries is not
* guaranteed. * guaranteed.
@ -39,10 +50,11 @@ public interface Baggage {
/** Builder for the {@link Baggage} class. */ /** Builder for the {@link Baggage} class. */
interface Builder { interface Builder {
/** /**
* Sets the parent {@link Baggage} to use from the specified {@code Context}. If no parent * 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 Baggage} is provided, the value of {@link BaggageUtils#getCurrentBaggage()} at {@link
* {@link #build()} time will be used as parent, unless {@link #setNoParent()} was called. * #build()} time will be used as parent, unless {@link #setNoParent()} was called.
* *
* <p>If no parent {@link Baggage} is available in the specified {@code Context}, the resulting * <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. * {@link Baggage} will become a root instance, as if {@link #setNoParent()} had been called.
@ -62,7 +74,7 @@ public interface Baggage {
/** /**
* Sets the option to become a root {@link Baggage} with no parent. If <b>not</b> called, the * Sets the option to become a root {@link Baggage} with no parent. If <b>not</b> called, the
* value provided using {@link #setParent(Context)} or otherwise {@link * value provided using {@link #setParent(Context)} or otherwise {@link
* BaggageManager#getCurrentBaggage()} at {@link #build()} time will be used as parent. * BaggageUtils#getCurrentBaggage()} at {@link #build()} time will be used as parent.
* *
* @return this. * @return this.
*/ */
@ -78,6 +90,15 @@ public interface Baggage {
*/ */
Builder put(String key, String value, EntryMetadata entryMetadata); Builder put(String key, String value, EntryMetadata entryMetadata);
/**
* Adds the key/value pair with empty metadata regardless of whether the key is present.
*
* @param key the {@code String} key which will be set.
* @param value the {@code String} value to set for the given key.
* @return this
*/
Builder put(String key, String value);
/** /**
* Removes the key if it exists. * Removes the key if it exists.
* *

View File

@ -47,7 +47,7 @@ public final class BaggageUtils {
*/ */
public static Baggage getBaggage(Context context) { public static Baggage getBaggage(Context context) {
Baggage baggage = context.getValue(CORR_CONTEXT_KEY); Baggage baggage = context.getValue(CORR_CONTEXT_KEY);
return baggage == null ? EmptyBaggage.getInstance() : baggage; return baggage == null ? Baggage.empty() : baggage;
} }
/** /**

View File

@ -1,77 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.baggage;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import java.util.Objects;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.ThreadSafe;
/** No-op implementations of {@link BaggageManager}. */
@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 withBaggage(Baggage baggage) {
return BaggageUtils.currentContextWith(baggage);
}
@Immutable
private static final class NoopBaggageBuilder implements Baggage.Builder {
@Override
public Baggage.Builder setParent(Context context) {
Objects.requireNonNull(context, "context");
return this;
}
@Override
public Baggage.Builder setNoParent() {
return this;
}
@Override
public Baggage.Builder put(String key, String value, EntryMetadata entryMetadata) {
Objects.requireNonNull(key, "key");
Objects.requireNonNull(value, "value");
Objects.requireNonNull(entryMetadata, "entryMetadata");
return this;
}
@Override
public Baggage.Builder remove(String key) {
Objects.requireNonNull(key, "key");
return this;
}
@Override
public Baggage build() {
return EmptyBaggage.getInstance();
}
}
}

View File

@ -1,39 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
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 Baggage} that does not contain any entries. */
@Immutable
public class EmptyBaggage implements Baggage {
/**
* Returns the single instance of the {@link EmptyBaggage} class.
*
* @return the single instance of the {@code EmptyBaggage} class.
*/
public static Baggage getInstance() {
return INSTANCE;
}
private static final Baggage INSTANCE = new EmptyBaggage();
@Override
public Collection<Entry> getEntries() {
return Collections.emptyList();
}
@Nullable
@Override
public String getEntryValue(String entryKey) {
return null;
}
private EmptyBaggage() {}
}

View File

@ -3,13 +3,8 @@
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
package io.opentelemetry.sdk.baggage; package io.opentelemetry.baggage;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.BaggageUtils;
import io.opentelemetry.baggage.Entry;
import io.opentelemetry.baggage.EntryMetadata;
import io.opentelemetry.context.Context; import io.opentelemetry.context.Context;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -22,24 +17,29 @@ import javax.annotation.concurrent.Immutable;
@Immutable @Immutable
// TODO: Migrate to AutoValue // TODO: Migrate to AutoValue
// @AutoValue // @AutoValue
class BaggageSdk implements Baggage { class ImmutableBaggage implements Baggage {
static final Baggage EMPTY = new ImmutableBaggage.Builder().build();
// The types of the EntryKey and Entry must match for each entry. // The types of the EntryKey and Entry must match for each entry.
private final Map<String, Entry> entries; private final Map<String, Entry> entries;
@Nullable private final Baggage parent; @Nullable private final Baggage parent;
/** /**
* Creates a new {@link BaggageSdk} with the given entries. * Creates a new {@link ImmutableBaggage} with the given entries.
* *
* @param entries the initial entries for this {@code BaggageSdk}. * @param entries the initial entries for this {@code BaggageSdk}.
* @param parent providing a default set of entries * @param parent providing a default set of entries
*/ */
private BaggageSdk(Map<String, ? extends Entry> entries, Baggage parent) { private ImmutableBaggage(Map<String, ? extends Entry> entries, Baggage parent) {
this.entries = this.entries =
Collections.unmodifiableMap(new HashMap<>(Objects.requireNonNull(entries, "entries"))); Collections.unmodifiableMap(new HashMap<>(Objects.requireNonNull(entries, "entries")));
this.parent = parent; this.parent = parent;
} }
public static Baggage.Builder builder() {
return new Builder();
}
@Override @Override
public Collection<Entry> getEntries() { public Collection<Entry> getEntries() {
Map<String, Entry> combined = new HashMap<>(entries); Map<String, Entry> combined = new HashMap<>(entries);
@ -72,16 +72,16 @@ class BaggageSdk implements Baggage {
if (this == o) { if (this == o) {
return true; return true;
} }
if (!(o instanceof BaggageSdk)) { if (!(o instanceof ImmutableBaggage)) {
return false; return false;
} }
BaggageSdk baggageSdk = (BaggageSdk) o; ImmutableBaggage baggage = (ImmutableBaggage) o;
if (!entries.equals(baggageSdk.entries)) { if (!entries.equals(baggage.entries)) {
return false; return false;
} }
return Objects.equals(parent, baggageSdk.parent); return Objects.equals(parent, baggage.parent);
} }
@Override @Override
@ -91,6 +91,11 @@ class BaggageSdk implements Baggage {
return result; return result;
} }
@Override
public String toString() {
return "ImmutableBaggage{" + "entries=" + entries + ", parent=" + parent + '}';
}
// TODO: Migrate to AutoValue.Builder // TODO: Migrate to AutoValue.Builder
// @AutoValue.Builder // @AutoValue.Builder
static class Builder implements Baggage.Builder { static class Builder implements Baggage.Builder {
@ -128,6 +133,14 @@ class BaggageSdk implements Baggage {
return this; return this;
} }
@Override
public Baggage.Builder put(String key, String value) {
entries.put(
Objects.requireNonNull(key, "key"),
Entry.create(key, Objects.requireNonNull(value, "value"), EntryMetadata.EMPTY));
return this;
}
@Override @Override
public Baggage.Builder remove(String key) { public Baggage.Builder remove(String key) {
entries.remove(Objects.requireNonNull(key, "key")); entries.remove(Objects.requireNonNull(key, "key"));
@ -138,11 +151,11 @@ class BaggageSdk implements Baggage {
} }
@Override @Override
public BaggageSdk build() { public ImmutableBaggage build() {
if (parent == null && !noImplicitParent) { if (parent == null && !noImplicitParent) {
parent = OpenTelemetry.getBaggageManager().getCurrentBaggage(); parent = BaggageUtils.getCurrentBaggage();
} }
return new BaggageSdk(entries, parent); return new ImmutableBaggage(entries, parent);
} }
} }
} }

View File

@ -11,7 +11,6 @@ import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.baggage.Baggage; import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.BaggageManager; import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.baggage.BaggageUtils; import io.opentelemetry.baggage.BaggageUtils;
import io.opentelemetry.baggage.EmptyBaggage;
import io.opentelemetry.baggage.Entry; import io.opentelemetry.baggage.Entry;
import io.opentelemetry.baggage.EntryMetadata; import io.opentelemetry.baggage.EntryMetadata;
import io.opentelemetry.context.Context; import io.opentelemetry.context.Context;
@ -26,15 +25,7 @@ public class W3CBaggagePropagator implements TextMapPropagator {
private static final String FIELD = "baggage"; private static final String FIELD = "baggage";
private static final List<String> FIELDS = singletonList(FIELD); private static final List<String> FIELDS = singletonList(FIELD);
private static final W3CBaggagePropagator INSTANCE = private static final W3CBaggagePropagator INSTANCE = new W3CBaggagePropagator();
new W3CBaggagePropagator(OpenTelemetry.getBaggageManager());
private final BaggageManager baggageManager;
// visible for testing
W3CBaggagePropagator(BaggageManager baggageManager) {
this.baggageManager = baggageManager;
}
/** /**
* Singleton instance of the W3C Baggage Propagator. Uses the {@link BaggageManager} from the * Singleton instance of the W3C Baggage Propagator. Uses the {@link BaggageManager} from the
@ -77,14 +68,14 @@ public class W3CBaggagePropagator implements TextMapPropagator {
return context; return context;
} }
if (baggageHeader.isEmpty()) { if (baggageHeader.isEmpty()) {
return BaggageUtils.withBaggage(EmptyBaggage.getInstance(), context); return BaggageUtils.withBaggage(Baggage.empty(), context);
} }
Baggage.Builder baggageBuilder = baggageManager.baggageBuilder(); Baggage.Builder baggageBuilder = Baggage.builder();
try { try {
extractEntries(baggageHeader, baggageBuilder); extractEntries(baggageHeader, baggageBuilder);
} catch (Exception e) { } catch (Exception e) {
return BaggageUtils.withBaggage(EmptyBaggage.getInstance(), context); return BaggageUtils.withBaggage(Baggage.empty(), context);
} }
return BaggageUtils.withBaggage(baggageBuilder.build(), context); return BaggageUtils.withBaggage(baggageBuilder.build(), context);
} }

View File

@ -9,11 +9,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue; 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.ContextPropagators;
import io.opentelemetry.context.propagation.DefaultContextPropagators; import io.opentelemetry.context.propagation.DefaultContextPropagators;
import io.opentelemetry.metrics.BatchRecorder; import io.opentelemetry.metrics.BatchRecorder;
@ -60,7 +55,6 @@ class OpenTelemetryTest {
OpenTelemetry.reset(); OpenTelemetry.reset();
System.clearProperty(TracerProviderFactory.class.getName()); System.clearProperty(TracerProviderFactory.class.getName());
System.clearProperty(MeterProviderFactory.class.getName()); System.clearProperty(MeterProviderFactory.class.getName());
System.clearProperty(BaggageManagerFactory.class.getName());
} }
@Test @Test
@ -69,8 +63,6 @@ class OpenTelemetryTest {
assertThat(OpenTelemetry.getTracerProvider()).isSameAs(OpenTelemetry.getTracerProvider()); assertThat(OpenTelemetry.getTracerProvider()).isSameAs(OpenTelemetry.getTracerProvider());
assertThat(OpenTelemetry.getMeterProvider()).isInstanceOf(DefaultMeterProvider.class); assertThat(OpenTelemetry.getMeterProvider()).isInstanceOf(DefaultMeterProvider.class);
assertThat(OpenTelemetry.getMeterProvider()).isSameAs(OpenTelemetry.getMeterProvider()); assertThat(OpenTelemetry.getMeterProvider()).isSameAs(OpenTelemetry.getMeterProvider());
assertThat(OpenTelemetry.getBaggageManager()).isInstanceOf(DefaultBaggageManager.class);
assertThat(OpenTelemetry.getBaggageManager()).isSameAs(OpenTelemetry.getBaggageManager());
assertThat(OpenTelemetry.getPropagators()).isInstanceOf(DefaultContextPropagators.class); assertThat(OpenTelemetry.getPropagators()).isInstanceOf(DefaultContextPropagators.class);
assertThat(OpenTelemetry.getPropagators()).isSameAs(OpenTelemetry.getPropagators()); assertThat(OpenTelemetry.getPropagators()).isSameAs(OpenTelemetry.getPropagators());
} }
@ -155,41 +147,6 @@ class OpenTelemetryTest {
assertThrows(IllegalStateException.class, () -> OpenTelemetry.getMeterProvider()); assertThrows(IllegalStateException.class, () -> OpenTelemetry.getMeterProvider());
} }
@Test
void testBaggageManagerLoadArbitrary() throws IOException {
File serviceFile =
createService(
BaggageManagerFactory.class, FirstBaggageManager.class, SecondBaggageManager.class);
try {
assertTrue(
(OpenTelemetry.getBaggageManager() instanceof FirstBaggageManager)
|| (OpenTelemetry.getBaggageManager() instanceof SecondBaggageManager));
assertThat(OpenTelemetry.getBaggageManager()).isEqualTo(OpenTelemetry.getBaggageManager());
} finally {
serviceFile.delete();
}
}
@Test
void testBaggageManagerSystemProperty() throws IOException {
File serviceFile =
createService(
BaggageManagerFactory.class, FirstBaggageManager.class, SecondBaggageManager.class);
System.setProperty(BaggageManagerFactory.class.getName(), SecondBaggageManager.class.getName());
try {
assertThat(OpenTelemetry.getBaggageManager()).isInstanceOf(SecondBaggageManager.class);
assertThat(OpenTelemetry.getBaggageManager()).isEqualTo(OpenTelemetry.getBaggageManager());
} finally {
serviceFile.delete();
}
}
@Test
void testBaggageManagerNotFound() {
System.setProperty(BaggageManagerFactory.class.getName(), "io.does.not.exists");
assertThrows(IllegalStateException.class, () -> OpenTelemetry.getBaggageManager());
}
@Test @Test
void testPropagatorsSet() { void testPropagatorsSet() {
ContextPropagators propagators = DefaultContextPropagators.builder().build(); ContextPropagators propagators = DefaultContextPropagators.builder().build();
@ -218,6 +175,7 @@ class OpenTelemetryTest {
} }
public static class SecondTracerProviderFactory extends FirstTracerProviderFactory { public static class SecondTracerProviderFactory extends FirstTracerProviderFactory {
@Override @Override
public Tracer get(String instrumentationName) { public Tracer get(String instrumentationName) {
return new SecondTracerProviderFactory(); return new SecondTracerProviderFactory();
@ -236,6 +194,7 @@ class OpenTelemetryTest {
public static class FirstTracerProviderFactory public static class FirstTracerProviderFactory
implements Tracer, TracerProvider, TracerProviderFactory { implements Tracer, TracerProvider, TracerProviderFactory {
@Override @Override
public Tracer get(String instrumentationName) { public Tracer get(String instrumentationName) {
return new FirstTracerProviderFactory(); return new FirstTracerProviderFactory();
@ -259,6 +218,7 @@ class OpenTelemetryTest {
} }
public static class SecondMeterProviderFactory extends FirstMeterProviderFactory { public static class SecondMeterProviderFactory extends FirstMeterProviderFactory {
@Override @Override
public Meter get(String instrumentationName) { public Meter get(String instrumentationName) {
return new SecondMeterProviderFactory(); return new SecondMeterProviderFactory();
@ -277,6 +237,7 @@ class OpenTelemetryTest {
public static class FirstMeterProviderFactory public static class FirstMeterProviderFactory
implements Meter, MeterProviderFactory, MeterProvider { implements Meter, MeterProviderFactory, MeterProvider {
@Override @Override
public MeterProvider create() { public MeterProvider create() {
return new FirstMeterProviderFactory(); return new FirstMeterProviderFactory();
@ -370,36 +331,4 @@ class OpenTelemetryTest {
return get(instrumentationName); return get(instrumentationName);
} }
} }
public static class SecondBaggageManager extends FirstBaggageManager {
@Override
public BaggageManager create() {
return new SecondBaggageManager();
}
}
public static class FirstBaggageManager implements BaggageManager, BaggageManagerFactory {
@Override
public BaggageManager create() {
return new FirstBaggageManager();
}
@Nullable
@Override
public Baggage getCurrentBaggage() {
return null;
}
@Nullable
@Override
public Baggage.Builder baggageBuilder() {
return null;
}
@Nullable
@Override
public Scope withBaggage(Baggage baggage) {
return null;
}
}
} }

View File

@ -16,12 +16,12 @@ class BaggageUtilsTest {
@Test @Test
void testGetCurrentBaggage_Default() { void testGetCurrentBaggage_Default() {
Baggage baggage = BaggageUtils.getCurrentBaggage(); Baggage baggage = BaggageUtils.getCurrentBaggage();
assertThat(baggage).isSameAs(EmptyBaggage.getInstance()); assertThat(baggage).isSameAs(Baggage.empty());
} }
@Test @Test
void testGetCurrentBaggage_SetCorrContext() { void testGetCurrentBaggage_SetCorrContext() {
Baggage baggage = DefaultBaggageManager.getInstance().baggageBuilder().build(); Baggage baggage = Baggage.empty();
try (Scope ignored = BaggageUtils.withBaggage(baggage, Context.current()).makeCurrent()) { try (Scope ignored = BaggageUtils.withBaggage(baggage, Context.current()).makeCurrent()) {
assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(baggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(baggage);
} }
@ -30,12 +30,12 @@ class BaggageUtilsTest {
@Test @Test
void testGetBaggage_DefaultContext() { void testGetBaggage_DefaultContext() {
Baggage baggage = BaggageUtils.getBaggage(Context.current()); Baggage baggage = BaggageUtils.getBaggage(Context.current());
assertThat(baggage).isSameAs(EmptyBaggage.getInstance()); assertThat(baggage).isSameAs(Baggage.empty());
} }
@Test @Test
void testGetBaggage_ExplicitContext() { void testGetBaggage_ExplicitContext() {
Baggage baggage = DefaultBaggageManager.getInstance().baggageBuilder().build(); Baggage baggage = Baggage.empty();
Context context = BaggageUtils.withBaggage(baggage, Context.current()); Context context = BaggageUtils.withBaggage(baggage, Context.current());
assertThat(BaggageUtils.getBaggage(context)).isSameAs(baggage); assertThat(BaggageUtils.getBaggage(context)).isSameAs(baggage);
} }
@ -48,7 +48,7 @@ class BaggageUtilsTest {
@Test @Test
void testGetBaggageWithoutDefault_ExplicitContext() { void testGetBaggageWithoutDefault_ExplicitContext() {
Baggage baggage = DefaultBaggageManager.getInstance().baggageBuilder().build(); Baggage baggage = Baggage.empty();
Context context = BaggageUtils.withBaggage(baggage, Context.current()); Context context = BaggageUtils.withBaggage(baggage, Context.current());
assertThat(BaggageUtils.getBaggage(context)).isSameAs(baggage); assertThat(BaggageUtils.getBaggage(context)).isSameAs(baggage);
} }

View File

@ -1,127 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.baggage;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import java.util.Collection;
import java.util.Collections;
import org.junit.jupiter.api.Test;
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 EntryMetadata SAMPLE_METADATA = EntryMetadata.create("sample");
private static final Baggage DIST_CONTEXT =
new Baggage() {
@Override
public Collection<Entry> getEntries() {
return Collections.singletonList(Entry.create(KEY, VALUE, SAMPLE_METADATA));
}
@Override
public String getEntryValue(String entryKey) {
return VALUE;
}
};
@Test
void builderMethod() {
assertThat(DEFAULT_BAGGAGE_MANAGER.baggageBuilder().build().getEntries()).isEmpty();
}
@Test
void getCurrentContext_DefaultContext() {
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
}
@Test
void getCurrentContext_ContextSetToNull() {
try (Scope ignored = BaggageUtils.withBaggage(null, Context.current()).makeCurrent()) {
Baggage baggage = DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage();
assertThat(baggage).isNotNull();
assertThat(baggage.getEntries()).isEmpty();
}
}
@Test
void withContext() {
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
try (Scope wtm = DEFAULT_BAGGAGE_MANAGER.withBaggage(DIST_CONTEXT)) {
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(DIST_CONTEXT);
}
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
}
@Test
void withContext_nullContext() {
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
try (Scope wtm = DEFAULT_BAGGAGE_MANAGER.withBaggage(null)) {
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
}
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance());
}
@Test
void withContextUsingWrap() {
Runnable runnable;
try (Scope wtm = DEFAULT_BAGGAGE_MANAGER.withBaggage(DIST_CONTEXT)) {
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(DIST_CONTEXT);
runnable =
Context.current()
.wrap(
() -> {
assertThat(DEFAULT_BAGGAGE_MANAGER.getCurrentBaggage()).isSameAs(DIST_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_DisallowsNullContext() {
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
assertThrows(NullPointerException.class, () -> noopBuilder.setParent((Context) null));
;
}
@Test
void noopContextBuilder_SetParent_fromContext() {
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
noopBuilder.setParent(Context.current()); // No error.
}
@Test
void noopContextBuilder_Put_DisallowsNullKey() {
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
assertThrows(NullPointerException.class, () -> noopBuilder.put(null, VALUE, SAMPLE_METADATA));
}
@Test
void noopContextBuilder_Put_DisallowsNullValue() {
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
assertThrows(NullPointerException.class, () -> noopBuilder.put(KEY, null, SAMPLE_METADATA));
}
@Test
void noopContextBuilder_Put_DisallowsNullEntryMetadata() {
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
assertThrows(NullPointerException.class, () -> noopBuilder.put(KEY, VALUE, null));
}
@Test
void noopContextBuilder_Remove_DisallowsNullKey() {
Baggage.Builder noopBuilder = DEFAULT_BAGGAGE_MANAGER.baggageBuilder();
assertThrows(NullPointerException.class, () -> noopBuilder.remove(null));
}
}

View File

@ -5,34 +5,20 @@
package io.opentelemetry.baggage.propagation; package io.opentelemetry.baggage.propagation;
import static java.util.Collections.emptyMap;
import static java.util.Collections.singletonMap; import static java.util.Collections.singletonMap;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import io.opentelemetry.baggage.Baggage; import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.baggage.BaggageUtils; import io.opentelemetry.baggage.BaggageUtils;
import io.opentelemetry.baggage.EmptyBaggage;
import io.opentelemetry.baggage.Entry;
import io.opentelemetry.baggage.EntryMetadata; import io.opentelemetry.baggage.EntryMetadata;
import io.opentelemetry.context.Context; import io.opentelemetry.context.Context;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
class W3CBaggagePropagatorTest { class W3CBaggagePropagatorTest {
@Mock private BaggageManager baggageManager;
@Test @Test
void fields() { void fields() {
assertThat(W3CBaggagePropagator.getInstance().fields()).containsExactly("baggage"); assertThat(W3CBaggagePropagator.getInstance().fields()).containsExactly("baggage");
@ -40,7 +26,7 @@ class W3CBaggagePropagatorTest {
@Test @Test
void extract_noBaggageHeader() { void extract_noBaggageHeader() {
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
Context result = Context result =
propagator.extract(Context.root(), ImmutableMap.<String, String>of(), Map::get); propagator.extract(Context.root(), ImmutableMap.<String, String>of(), Map::get);
@ -50,33 +36,29 @@ class W3CBaggagePropagatorTest {
@Test @Test
void extract_emptyBaggageHeader() { void extract_emptyBaggageHeader() {
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
Context result = Context result =
propagator.extract(Context.root(), ImmutableMap.of("baggage", ""), ImmutableMap::get); propagator.extract(Context.root(), ImmutableMap.of("baggage", ""), ImmutableMap::get);
assertThat(BaggageUtils.getBaggage(result)).isEqualTo(EmptyBaggage.getInstance()); assertThat(BaggageUtils.getBaggage(result)).isEqualTo(Baggage.empty());
} }
@Test @Test
void extract_singleEntry() { void extract_singleEntry() {
when(baggageManager.baggageBuilder()).thenReturn(new TestBaggageBuilder()); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager);
Context result = Context result =
propagator.extract( propagator.extract(
Context.root(), ImmutableMap.of("baggage", "key=value"), ImmutableMap::get); Context.root(), ImmutableMap.of("baggage", "key=value"), ImmutableMap::get);
Baggage expectedBaggage = new TestBaggage(ImmutableMap.of("key", Entry.create("key", "value"))); Baggage expectedBaggage = Baggage.builder().put("key", "value").build();
assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage); assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage);
} }
@Test @Test
void extract_multiEntry() { void extract_multiEntry() {
when(baggageManager.baggageBuilder()).thenReturn(new TestBaggageBuilder()); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager);
Context result = Context result =
propagator.extract( propagator.extract(
@ -84,33 +66,25 @@ class W3CBaggagePropagatorTest {
ImmutableMap.of("baggage", "key1=value1,key2=value2"), ImmutableMap.of("baggage", "key1=value1,key2=value2"),
ImmutableMap::get); ImmutableMap::get);
Baggage expectedBaggage = Baggage expectedBaggage = Baggage.builder().put("key1", "value1").put("key2", "value2").build();
new TestBaggage(
ImmutableMap.of(
"key1", Entry.create("key1", "value1"), "key2", Entry.create("key2", "value2")));
assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage); assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage);
} }
@Test @Test
void extract_duplicateKeys() { void extract_duplicateKeys() {
when(baggageManager.baggageBuilder()).thenReturn(new TestBaggageBuilder()); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager);
Context result = Context result =
propagator.extract( propagator.extract(
Context.root(), ImmutableMap.of("baggage", "key=value1,key=value2"), ImmutableMap::get); Context.root(), ImmutableMap.of("baggage", "key=value1,key=value2"), ImmutableMap::get);
Baggage expectedBaggage = Baggage expectedBaggage = Baggage.builder().put("key", "value2").build();
new TestBaggage(ImmutableMap.of("key", Entry.create("key", "value2")));
assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage); assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage);
} }
@Test @Test
void extract_withMetadata() { void extract_withMetadata() {
when(baggageManager.baggageBuilder()).thenReturn(new TestBaggageBuilder()); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager);
Context result = Context result =
propagator.extract( propagator.extract(
@ -119,19 +93,15 @@ class W3CBaggagePropagatorTest {
ImmutableMap::get); ImmutableMap::get);
Baggage expectedBaggage = Baggage expectedBaggage =
new TestBaggage( Baggage.builder()
ImmutableMap.of( .put("key", "value", EntryMetadata.create("metadata-key=value;othermetadata"))
"key", .build();
Entry.create(
"key", "value", EntryMetadata.create("metadata-key=value;othermetadata"))));
assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage); assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage);
} }
@Test @Test
void extract_fullComplexities() { void extract_fullComplexities() {
when(baggageManager.baggageBuilder()).thenReturn(new TestBaggageBuilder()); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager);
Context result = Context result =
propagator.extract( propagator.extract(
@ -143,15 +113,11 @@ class W3CBaggagePropagatorTest {
ImmutableMap::get); ImmutableMap::get);
Baggage expectedBaggage = Baggage expectedBaggage =
new TestBaggage( Baggage.builder()
ImmutableMap.of( .put("key1", "value1", EntryMetadata.create("metadata-key = value; othermetadata"))
"key1", .put("key2", "value2", EntryMetadata.EMPTY)
Entry.create( .put("key3", "value3")
"key1", "value1", EntryMetadata.create("metadata-key = value; othermetadata")), .build();
"key2",
Entry.create("key2", "value2", EntryMetadata.EMPTY),
"key3",
Entry.create("key3", "value3")));
assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage); assertThat(BaggageUtils.getBaggage(result)).isEqualTo(expectedBaggage);
} }
@ -161,9 +127,7 @@ class W3CBaggagePropagatorTest {
*/ */
@Test @Test
void extract_invalidHeader() { void extract_invalidHeader() {
when(baggageManager.baggageBuilder()).thenReturn(new TestBaggageBuilder()); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager);
Context result = Context result =
propagator.extract( propagator.extract(
@ -174,12 +138,12 @@ class W3CBaggagePropagatorTest {
+ "value; othermetadata, key2 =value2 , key3 =\tvalue3 ; "), + "value; othermetadata, key2 =value2 , key3 =\tvalue3 ; "),
ImmutableMap::get); ImmutableMap::get);
assertThat(BaggageUtils.getBaggage(result)).isEqualTo(EmptyBaggage.getInstance()); assertThat(BaggageUtils.getBaggage(result)).isEqualTo(Baggage.empty());
} }
@Test @Test
void inject_noBaggage() { void inject_noBaggage() {
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
Map<String, String> carrier = new HashMap<>(); Map<String, String> carrier = new HashMap<>();
propagator.inject(Context.root(), carrier, Map::put); propagator.inject(Context.root(), carrier, Map::put);
assertThat(carrier).isEmpty(); assertThat(carrier).isEmpty();
@ -187,8 +151,8 @@ class W3CBaggagePropagatorTest {
@Test @Test
void inject_emptyBaggage() { void inject_emptyBaggage() {
Baggage baggage = new TestBaggage(emptyMap()); Baggage baggage = Baggage.empty();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
Map<String, String> carrier = new HashMap<>(); Map<String, String> carrier = new HashMap<>();
propagator.inject(BaggageUtils.withBaggage(baggage, Context.root()), carrier, Map::put); propagator.inject(BaggageUtils.withBaggage(baggage, Context.root()), carrier, Map::put);
assertThat(carrier).isEmpty(); assertThat(carrier).isEmpty();
@ -196,13 +160,12 @@ class W3CBaggagePropagatorTest {
@Test @Test
void inject() { void inject() {
LinkedHashMap<String, Entry> data = new LinkedHashMap<>(); Baggage baggage =
data.put("nometa", Entry.create("nometa", "nometa-value")); Baggage.builder()
data.put( .put("nometa", "nometa-value")
"meta", .put("meta", "meta-value", EntryMetadata.create("somemetadata; someother=foo"))
Entry.create("meta", "meta-value", EntryMetadata.create("somemetadata; someother=foo"))); .build();
Baggage baggage = new TestBaggage(data); W3CBaggagePropagator propagator = new W3CBaggagePropagator();
W3CBaggagePropagator propagator = new W3CBaggagePropagator(baggageManager);
Map<String, String> carrier = new HashMap<>(); Map<String, String> carrier = new HashMap<>();
propagator.inject(BaggageUtils.withBaggage(baggage, Context.root()), carrier, Map::put); propagator.inject(BaggageUtils.withBaggage(baggage, Context.root()), carrier, Map::put);
assertThat(carrier) assertThat(carrier)
@ -210,80 +173,4 @@ class W3CBaggagePropagatorTest {
singletonMap( singletonMap(
"baggage", "nometa=nometa-value,meta=meta-value;somemetadata; someother=foo")); "baggage", "nometa=nometa-value,meta=meta-value;somemetadata; someother=foo"));
} }
private static class TestBaggageBuilder implements Baggage.Builder {
private final Map<String, Entry> values = new HashMap<>();
@Override
public Baggage.Builder setParent(Context context) {
return this;
}
@Override
public Baggage.Builder setNoParent() {
return this;
}
@Override
public Baggage.Builder put(String key, String value, EntryMetadata entryMetadata) {
values.put(key, Entry.create(key, value, entryMetadata));
return this;
}
@Override
public Baggage.Builder remove(String key) {
values.remove(key);
return this;
}
@Override
public Baggage build() {
return new TestBaggage(values);
}
}
private static class TestBaggage implements Baggage {
private final Map<String, Entry> values;
public TestBaggage(Map<String, Entry> values) {
this.values = values;
}
@Override
public Collection<Entry> getEntries() {
return values.values();
}
@Override
public String getEntryValue(String entryKey) {
Entry entry = values.get(entryKey);
return entry == null ? null : entry.getValue();
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof TestBaggage)) {
return false;
}
TestBaggage that = (TestBaggage) o;
return Objects.equals(values, that.values);
}
@Override
public int hashCode() {
return values != null ? values.hashCode() : 0;
}
@Override
public String toString() {
return "TestBaggage{" + "values=" + values + '}';
}
}
} }

View File

@ -5,11 +5,11 @@
package io.opentelemetry.opentracingshim; package io.opentelemetry.opentracingshim;
import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.trace.Tracer; import io.opentelemetry.trace.Tracer;
abstract class BaseShimObject { abstract class BaseShimObject {
final TelemetryInfo telemetryInfo; final TelemetryInfo telemetryInfo;
BaseShimObject(TelemetryInfo telemetryInfo) { BaseShimObject(TelemetryInfo telemetryInfo) {
@ -24,10 +24,6 @@ abstract class BaseShimObject {
return telemetryInfo.tracer(); return telemetryInfo.tracer();
} }
BaggageManager contextManager() {
return telemetryInfo.contextManager();
}
SpanContextShimTable spanContextTable() { SpanContextShimTable spanContextTable() {
return telemetryInfo.spanContextTable(); return telemetryInfo.spanContextTable();
} }

View File

@ -40,7 +40,7 @@ final class SpanContextShim extends BaseShimObject implements SpanContext {
SpanContextShim newWithKeyValue(String key, String value) { SpanContextShim newWithKeyValue(String key, String value) {
Context parentContext = BaggageUtils.withBaggage(baggage, Context.current()); Context parentContext = BaggageUtils.withBaggage(baggage, Context.current());
Baggage.Builder builder = contextManager().baggageBuilder().setParent(parentContext); Baggage.Builder builder = Baggage.builder().setParent(parentContext);
builder.put(key, value, EntryMetadata.EMPTY); builder.put(key, value, EntryMetadata.EMPTY);
return new SpanContextShim(telemetryInfo(), context, builder.build()); return new SpanContextShim(telemetryInfo(), context, builder.build());

View File

@ -6,7 +6,6 @@
package io.opentelemetry.opentracingshim; package io.opentelemetry.opentracingshim;
import io.opentelemetry.baggage.Baggage; import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.trace.Tracer; import io.opentelemetry.trace.Tracer;
@ -15,17 +14,16 @@ import io.opentelemetry.trace.Tracer;
* the OT Shim layer. * the OT Shim layer.
*/ */
final class TelemetryInfo { final class TelemetryInfo {
private final Tracer tracer; private final Tracer tracer;
private final BaggageManager contextManager;
private final Baggage emptyBaggage; private final Baggage emptyBaggage;
private final ContextPropagators propagators; private final ContextPropagators propagators;
private final SpanContextShimTable spanContextTable; private final SpanContextShimTable spanContextTable;
TelemetryInfo(Tracer tracer, BaggageManager contextManager, ContextPropagators propagators) { TelemetryInfo(Tracer tracer, ContextPropagators propagators) {
this.tracer = tracer; this.tracer = tracer;
this.contextManager = contextManager;
this.propagators = propagators; this.propagators = propagators;
this.emptyBaggage = contextManager.baggageBuilder().build(); this.emptyBaggage = Baggage.empty();
this.spanContextTable = new SpanContextShimTable(); this.spanContextTable = new SpanContextShimTable();
} }
@ -33,10 +31,6 @@ final class TelemetryInfo {
return tracer; return tracer;
} }
BaggageManager contextManager() {
return contextManager;
}
SpanContextShimTable spanContextTable() { SpanContextShimTable spanContextTable() {
return spanContextTable; return spanContextTable;
} }

View File

@ -6,7 +6,6 @@
package io.opentelemetry.opentracingshim; package io.opentelemetry.opentracingshim;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.trace.Tracer; import io.opentelemetry.trace.Tracer;
import io.opentelemetry.trace.TracerProvider; import io.opentelemetry.trace.TracerProvider;
import java.util.Objects; import java.util.Objects;
@ -23,9 +22,7 @@ public final class TraceShim {
public static io.opentracing.Tracer createTracerShim() { public static io.opentracing.Tracer createTracerShim() {
return new TracerShim( return new TracerShim(
new TelemetryInfo( new TelemetryInfo(
getTracer(OpenTelemetry.getTracerProvider()), getTracer(OpenTelemetry.getTracerProvider()), OpenTelemetry.getPropagators()));
OpenTelemetry.getBaggageManager(),
OpenTelemetry.getPropagators()));
} }
/** /**
@ -33,15 +30,12 @@ public final class TraceShim {
* BaggageManager}. * BaggageManager}.
* *
* @param tracerProvider the {@code TracerProvider} used by this shim. * @param tracerProvider the {@code TracerProvider} used by this shim.
* @param contextManager the {@code BaggageManager} used by this shim.
* @return a {@code io.opentracing.Tracer}. * @return a {@code io.opentracing.Tracer}.
*/ */
public static io.opentracing.Tracer createTracerShim( public static io.opentracing.Tracer createTracerShim(TracerProvider tracerProvider) {
TracerProvider tracerProvider, BaggageManager contextManager) {
return new TracerShim( return new TracerShim(
new TelemetryInfo( new TelemetryInfo(
getTracer(Objects.requireNonNull(tracerProvider, "tracerProvider")), getTracer(Objects.requireNonNull(tracerProvider, "tracerProvider")),
Objects.requireNonNull(contextManager, "contextManager"),
OpenTelemetry.getPropagators())); OpenTelemetry.getPropagators()));
} }

View File

@ -10,16 +10,16 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.trace.Tracer; import io.opentelemetry.trace.Tracer;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
class SpanBuilderShimTest { class SpanBuilderShimTest {
private final TracerSdkProvider tracerSdkFactory = TracerSdkProvider.builder().build(); private final TracerSdkProvider tracerSdkFactory = TracerSdkProvider.builder().build();
private final Tracer tracer = tracerSdkFactory.get("SpanShimTest"); private final Tracer tracer = tracerSdkFactory.get("SpanShimTest");
private final TelemetryInfo telemetryInfo = private final TelemetryInfo telemetryInfo =
new TelemetryInfo(tracer, new BaggageManagerSdk(), OpenTelemetry.getPropagators()); new TelemetryInfo(tracer, OpenTelemetry.getPropagators());
private static final String SPAN_NAME = "Span"; private static final String SPAN_NAME = "Span";

View File

@ -13,7 +13,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Span;
import io.opentelemetry.trace.Tracer; import io.opentelemetry.trace.Tracer;
@ -23,10 +22,11 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
class SpanShimTest { class SpanShimTest {
private final TracerSdkProvider tracerSdkFactory = TracerSdkProvider.builder().build(); private final TracerSdkProvider tracerSdkFactory = TracerSdkProvider.builder().build();
private final Tracer tracer = tracerSdkFactory.get("SpanShimTest"); private final Tracer tracer = tracerSdkFactory.get("SpanShimTest");
private final TelemetryInfo telemetryInfo = private final TelemetryInfo telemetryInfo =
new TelemetryInfo(tracer, new BaggageManagerSdk(), OpenTelemetry.getPropagators()); new TelemetryInfo(tracer, OpenTelemetry.getPropagators());
private Span span; private Span span;
private static final String SPAN_NAME = "Span"; private static final String SPAN_NAME = "Span";

View File

@ -5,13 +5,10 @@
package io.opentelemetry.opentracingshim; package io.opentelemetry.opentracingshim;
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.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -21,31 +18,18 @@ class TraceShimTest {
void createTracerShim_default() { void createTracerShim_default() {
TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim(); TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim();
assertEquals(OpenTelemetry.getTracer("opentracingshim"), tracerShim.tracer()); assertEquals(OpenTelemetry.getTracer("opentracingshim"), tracerShim.tracer());
assertEquals(OpenTelemetry.getBaggageManager(), tracerShim.contextManager());
} }
@Test @Test
void createTracerShim_nullTracer() { void createTracerShim_nullTracer() {
assertThrows( assertThrows(
NullPointerException.class, NullPointerException.class, () -> TraceShim.createTracerShim(null), "tracerProvider");
() -> TraceShim.createTracerShim(null, getBaggageManager()),
"tracerProvider");
}
@Test
void createTracerShim_nullContextManager() {
assertThrows(
NullPointerException.class,
() -> TraceShim.createTracerShim(getTracerProvider(), null),
"contextManager");
} }
@Test @Test
void createTracerShim() { void createTracerShim() {
TracerSdkProvider sdk = TracerSdkProvider.builder().build(); TracerSdkProvider sdk = TracerSdkProvider.builder().build();
BaggageManagerSdk contextManager = new BaggageManagerSdk(); TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim(sdk);
TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim(sdk, contextManager);
assertEquals(sdk.get("opentracingshim"), tracerShim.tracer()); assertEquals(sdk.get("opentracingshim"), tracerShim.tracer());
assertEquals(contextManager, tracerShim.contextManager());
} }
} }

View File

@ -23,6 +23,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
class TracerShimTest { class TracerShimTest {
TracerShim tracerShim; TracerShim tracerShim;
@BeforeEach @BeforeEach
@ -30,9 +31,7 @@ class TracerShimTest {
tracerShim = tracerShim =
new TracerShim( new TracerShim(
new TelemetryInfo( new TelemetryInfo(
OpenTelemetry.getTracer("opentracingshim"), OpenTelemetry.getTracer("opentracingshim"), OpenTelemetry.getPropagators()));
OpenTelemetry.getBaggageManager(),
OpenTelemetry.getPropagators()));
} }
@Test @Test

View File

@ -10,7 +10,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.baggage.DefaultBaggageManager;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
@ -29,9 +28,7 @@ class OpenTelemetryInteroperabilityTest {
InMemoryTracing.builder() InMemoryTracing.builder()
.setTracerSdkManagement(OpenTelemetrySdk.getTracerManagement()) .setTracerSdkManagement(OpenTelemetrySdk.getTracerManagement())
.build(); .build();
private final Tracer otTracer = private final Tracer otTracer = TraceShim.createTracerShim(OpenTelemetry.getTracerProvider());
TraceShim.createTracerShim(
OpenTelemetry.getTracerProvider(), DefaultBaggageManager.getInstance());
@BeforeEach @BeforeEach
void before() { void before() {

View File

@ -16,7 +16,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.SpanId;
@ -35,7 +34,7 @@ class ActiveSpanReplacementTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
@Test @Test

View File

@ -11,7 +11,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.Span.Kind;
@ -40,7 +39,7 @@ class ActorPropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private Phaser phaser; private Phaser phaser;
@BeforeEach @BeforeEach

View File

@ -9,7 +9,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentracing.Span; import io.opentracing.Span;
import io.opentracing.Tracer; import io.opentracing.Tracer;
@ -23,7 +22,7 @@ public final class BaggageHandlingTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
@Test @Test

View File

@ -14,7 +14,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.Span.Kind;
@ -31,7 +30,7 @@ class TestClientServerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final ArrayBlockingQueue<Message> queue = new ArrayBlockingQueue<>(10); private final ArrayBlockingQueue<Message> queue = new ArrayBlockingQueue<>(10);
private Server server; private Server server;

View File

@ -15,7 +15,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.Span.Kind; import io.opentelemetry.trace.Span.Kind;
@ -39,7 +38,7 @@ class HandlerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final Client client = new Client(new RequestHandler(tracer)); private final Client client = new Client(new RequestHandler(tracer));
@BeforeEach @BeforeEach

View File

@ -13,7 +13,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.sdk.trace.data.SpanData.Event; import io.opentelemetry.sdk.trace.data.SpanData.Event;
@ -37,7 +36,7 @@ public final class ErrorReportingTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
/* Very simple error handling **/ /* Very simple error handling **/

View File

@ -13,7 +13,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentracing.Scope; import io.opentracing.Scope;
@ -30,7 +29,7 @@ public final class LateSpanFinishTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
@Test @Test

View File

@ -10,7 +10,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Span;
@ -23,7 +22,7 @@ class ListenerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
@Test @Test
void test() throws Exception { void test() throws Exception {

View File

@ -13,7 +13,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentracing.Scope; import io.opentracing.Scope;
@ -35,7 +34,7 @@ class MultipleCallbacksTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
@Test @Test
void test() { void test() {

View File

@ -15,7 +15,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import io.opentelemetry.common.ReadableAttributes; import io.opentelemetry.common.ReadableAttributes;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentracing.Scope; import io.opentracing.Scope;
@ -33,7 +32,7 @@ public final class NestedCallbacksTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
@Test @Test

View File

@ -12,7 +12,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.common.AttributeKey; import io.opentelemetry.common.AttributeKey;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.SpanId;
@ -39,7 +38,7 @@ class PromisePropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private Phaser phaser; private Phaser phaser;
@BeforeEach @BeforeEach

View File

@ -9,7 +9,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentracing.Tracer; import io.opentracing.Tracer;
@ -28,7 +27,7 @@ public final class HandlerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
private final Client client = new Client(new RequestHandler(tracer)); private final Client client = new Client(new RequestHandler(tracer));
@BeforeEach @BeforeEach

View File

@ -9,7 +9,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.opentracingshim.TraceShim; import io.opentelemetry.opentracingshim.TraceShim;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import io.opentelemetry.trace.SpanId; import io.opentelemetry.trace.SpanId;
@ -28,7 +27,7 @@ class SuspendResumePropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final TracerSdkProvider sdk = TracerSdkProvider.builder().build();
private final InMemoryTracing inMemoryTracing = private final InMemoryTracing inMemoryTracing =
InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = TraceShim.createTracerShim(sdk, new BaggageManagerSdk()); private final Tracer tracer = TraceShim.createTracerShim(sdk);
@BeforeEach @BeforeEach
void before() {} void before() {}

View File

@ -7,14 +7,13 @@ package io.opentelemetry.sdk;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.internal.Obfuscated; import io.opentelemetry.internal.Obfuscated;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import io.opentelemetry.sdk.metrics.MeterSdkProvider; import io.opentelemetry.sdk.metrics.MeterSdkProvider;
import io.opentelemetry.sdk.trace.TracerSdkManagement; import io.opentelemetry.sdk.trace.TracerSdkManagement;
import javax.annotation.concurrent.ThreadSafe; import javax.annotation.concurrent.ThreadSafe;
/** /**
* This class provides a static global accessor for SDK telemetry objects {@link * This class provides a static global accessor for SDK telemetry objects {@link
* TracerSdkManagement}, {@link MeterSdkProvider} and {@link BaggageManagerSdk}. * TracerSdkManagement}, {@link MeterSdkProvider}.
* *
* <p>This is a convenience class getting and casting the telemetry objects from {@link * <p>This is a convenience class getting and casting the telemetry objects from {@link
* OpenTelemetry}. * OpenTelemetry}.
@ -23,6 +22,7 @@ import javax.annotation.concurrent.ThreadSafe;
*/ */
@ThreadSafe @ThreadSafe
public final class OpenTelemetrySdk { public final class OpenTelemetrySdk {
/** /**
* Returns a {@link TracerSdkManagement}. * Returns a {@link TracerSdkManagement}.
* *
@ -41,14 +41,5 @@ public final class OpenTelemetrySdk {
return (MeterSdkProvider) OpenTelemetry.getMeterProvider(); return (MeterSdkProvider) OpenTelemetry.getMeterProvider();
} }
/**
* Returns a {@link BaggageManagerSdk}.
*
* @return context manager returned by {@link OpenTelemetry#getBaggageManager()}.
*/
public static BaggageManagerSdk getBaggageManager() {
return (BaggageManagerSdk) OpenTelemetry.getBaggageManager();
}
private OpenTelemetrySdk() {} private OpenTelemetrySdk() {}
} }

View File

@ -17,7 +17,6 @@ class OpenTelemetrySdkTest {
void testDefault() { void testDefault() {
assertThat(((TracerSdkProvider) OpenTelemetrySdk.getTracerManagement()).get("")) assertThat(((TracerSdkProvider) OpenTelemetrySdk.getTracerManagement()).get(""))
.isSameAs(OpenTelemetry.getTracerProvider().get("")); .isSameAs(OpenTelemetry.getTracerProvider().get(""));
assertThat(OpenTelemetrySdk.getBaggageManager()).isSameAs(OpenTelemetry.getBaggageManager());
assertThat(OpenTelemetrySdk.getMeterProvider()).isSameAs(OpenTelemetry.getMeterProvider()); assertThat(OpenTelemetrySdk.getMeterProvider()).isSameAs(OpenTelemetry.getMeterProvider());
} }

View File

@ -1,30 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
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 withBaggage(Baggage baggage) {
return BaggageUtils.currentContextWith(baggage);
}
}

View File

@ -1,14 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
/**
* The SDK implementation of baggage.
*
* @see io.opentelemetry.sdk.baggage.BaggageManagerSdk
*/
@ParametersAreNonnullByDefault
package io.opentelemetry.sdk.baggage;
import javax.annotation.ParametersAreNonnullByDefault;

View File

@ -1,24 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.sdk.baggage.spi;
import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.baggage.spi.BaggageManagerFactory;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
/**
* {@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 BaggageManagerFactorySdk implements BaggageManagerFactory {
@Override
public BaggageManager create() {
return new BaggageManagerSdk();
}
}

View File

@ -1,10 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
/** The SPI implementation which provides the SDK implementation of baggage. */
@ParametersAreNonnullByDefault
package io.opentelemetry.sdk.baggage.spi;
import javax.annotation.ParametersAreNonnullByDefault;

View File

@ -9,7 +9,6 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.baggage.Baggage; import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.BaggageUtils; import io.opentelemetry.baggage.BaggageUtils;
import io.opentelemetry.baggage.EmptyBaggage;
import io.opentelemetry.context.Context; import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
@ -17,13 +16,10 @@ import org.junit.jupiter.api.Test;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
/** Unit tests for {@link BaggageManagerSdk}. */ /** Unit tests for {@link Baggage} and {@link BaggageUtils}. TODO: move these where appropriate */
// Need to suppress warnings for MustBeClosed because Android 14 does not support
// try-with-resources.
@SuppressWarnings("MustBeClosedChecker")
class BaggageManagerSdkTest { class BaggageManagerSdkTest {
@Mock private Baggage baggage; @Mock private Baggage baggage;
private final BaggageManagerSdk contextManager = new BaggageManagerSdk();
@BeforeEach @BeforeEach
void setUp() { void setUp() {
@ -32,13 +28,13 @@ class BaggageManagerSdkTest {
@Test @Test
void testGetCurrentContext_DefaultContext() { void testGetCurrentContext_DefaultContext() {
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance()); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(Baggage.empty());
} }
@Test @Test
void testGetCurrentContext_ContextSetToNull() { void testGetCurrentContext_ContextSetToNull() {
try (Scope ignored = BaggageUtils.withBaggage(null, Context.current()).makeCurrent()) { try (Scope ignored = BaggageUtils.withBaggage(null, Context.current()).makeCurrent()) {
Baggage baggage = contextManager.getCurrentBaggage(); Baggage baggage = BaggageUtils.getCurrentBaggage();
assertThat(baggage).isNotNull(); assertThat(baggage).isNotNull();
assertThat(baggage.getEntries()).isEmpty(); assertThat(baggage.getEntries()).isEmpty();
} }
@ -46,26 +42,26 @@ class BaggageManagerSdkTest {
@Test @Test
void testWithBaggage() { void testWithBaggage() {
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance()); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(Baggage.empty());
try (Scope wtm = contextManager.withBaggage(baggage)) { try (Scope wtm = BaggageUtils.currentContextWith(baggage)) {
assertThat(contextManager.getCurrentBaggage()).isSameAs(baggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(baggage);
} }
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance()); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(Baggage.empty());
} }
@Test @Test
void testWithBaggageUsingWrap() { void testWithBaggageUsingWrap() {
Runnable runnable; Runnable runnable;
try (Scope wtm = contextManager.withBaggage(baggage)) { try (Scope wtm = BaggageUtils.currentContextWith(baggage)) {
assertThat(contextManager.getCurrentBaggage()).isSameAs(baggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(baggage);
runnable = runnable =
Context.current() Context.current()
.wrap( .wrap(
() -> { () -> {
assertThat(contextManager.getCurrentBaggage()).isSameAs(baggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(baggage);
}); });
} }
assertThat(contextManager.getCurrentBaggage()).isSameAs(EmptyBaggage.getInstance()); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(Baggage.empty());
// When we run the runnable we will have the Baggage in the current Context. // When we run the runnable we will have the Baggage in the current Context.
runnable.run(); runnable.run();
} }

View File

@ -5,18 +5,19 @@
package io.opentelemetry.sdk.baggage; package io.opentelemetry.sdk.baggage;
import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.Entry; import io.opentelemetry.baggage.Entry;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
class BaggageTestUtil { class BaggageTestUtil {
static BaggageSdk listToBaggage(Entry... entries) { static Baggage listToBaggage(Entry... entries) {
return listToBaggage(Arrays.asList(entries)); return listToBaggage(Arrays.asList(entries));
} }
static BaggageSdk listToBaggage(List<Entry> entries) { static Baggage listToBaggage(List<Entry> entries) {
BaggageSdk.Builder builder = new BaggageSdk.Builder(); Baggage.Builder builder = Baggage.builder();
for (Entry entry : entries) { for (Entry entry : entries) {
builder.put(entry.getKey(), entry.getValue(), entry.getEntryMetadata()); builder.put(entry.getKey(), entry.getValue(), entry.getEntryMetadata());
} }

View File

@ -11,7 +11,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import com.google.common.testing.EqualsTester; import com.google.common.testing.EqualsTester;
import io.opentelemetry.baggage.Baggage; import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.BaggageManager;
import io.opentelemetry.baggage.BaggageUtils; import io.opentelemetry.baggage.BaggageUtils;
import io.opentelemetry.baggage.Entry; import io.opentelemetry.baggage.Entry;
import io.opentelemetry.baggage.EntryMetadata; import io.opentelemetry.baggage.EntryMetadata;
@ -20,13 +19,11 @@ import io.opentelemetry.context.Scope;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
/** /**
* Tests for {@link BaggageSdk} and {@link BaggageSdk.Builder}. * Tests for {@link Baggage} and {@link Baggage.Builder}.
* *
* <p>Tests for scope management with {@link BaggageManagerSdk} are in {@link ScopedBaggageTest}. * <p>Tests for scope management with {@link Baggage} are in {@link ScopedBaggageTest}.
*/ */
class BaggageSdkTest { class ImmutableBaggageTest {
private final BaggageManager contextManager = new BaggageManagerSdk();
private static final EntryMetadata TMD = EntryMetadata.create("tmd"); private static final EntryMetadata TMD = EntryMetadata.create("tmd");
@ -41,13 +38,13 @@ class BaggageSdkTest {
@Test @Test
void getEntries_empty() { void getEntries_empty() {
BaggageSdk baggage = new BaggageSdk.Builder().build(); Baggage baggage = Baggage.empty();
assertThat(baggage.getEntries()).isEmpty(); assertThat(baggage.getEntries()).isEmpty();
} }
@Test @Test
void getEntries_nonEmpty() { void getEntries_nonEmpty() {
BaggageSdk baggage = listToBaggage(T1, T2); Baggage baggage = listToBaggage(T1, T2);
assertThat(baggage.getEntries()).containsExactly(T1, T2); assertThat(baggage.getEntries()).containsExactly(T1, T2);
} }
@ -57,8 +54,7 @@ class BaggageSdkTest {
Baggage parent = listToBaggage(T1, T2); Baggage parent = listToBaggage(T1, T2);
Context parentContext = BaggageUtils.withBaggage(parent, Context.root()); Context parentContext = BaggageUtils.withBaggage(parent, Context.root());
Baggage baggage = Baggage baggage =
contextManager Baggage.builder()
.baggageBuilder()
.setParent(parentContext) .setParent(parentContext)
.put(t1alt.getKey(), t1alt.getValue(), t1alt.getEntryMetadata()) .put(t1alt.getKey(), t1alt.getValue(), t1alt.getEntryMetadata())
.build(); .build();
@ -69,27 +65,15 @@ class BaggageSdkTest {
void put_newKey() { void put_newKey() {
Baggage parent = listToBaggage(T1); Baggage parent = listToBaggage(T1);
Context parentContext = BaggageUtils.withBaggage(parent, Context.root()); Context parentContext = BaggageUtils.withBaggage(parent, Context.root());
assertThat( assertThat(Baggage.builder().setParent(parentContext).put(K2, V2, TMD).build().getEntries())
contextManager
.baggageBuilder()
.setParent(parentContext)
.put(K2, V2, TMD)
.build()
.getEntries())
.containsExactly(T1, T2); .containsExactly(T1, T2);
} }
@Test @Test
void put_existingKey() { void put_existingKey() {
BaggageSdk parent = listToBaggage(T1); Baggage parent = listToBaggage(T1);
Context parentContext = BaggageUtils.withBaggage(parent, Context.root()); Context parentContext = BaggageUtils.withBaggage(parent, Context.root());
assertThat( assertThat(Baggage.builder().setParent(parentContext).put(K1, V2, TMD).build().getEntries())
contextManager
.baggageBuilder()
.setParent(parentContext)
.put(K1, V2, TMD)
.build()
.getEntries())
.containsExactly(Entry.create(K1, V2, TMD)); .containsExactly(Entry.create(K1, V2, TMD));
} }
@ -97,54 +81,51 @@ class BaggageSdkTest {
void put_nullKey() { void put_nullKey() {
Baggage parent = listToBaggage(T1); Baggage parent = listToBaggage(T1);
Context parentContext = BaggageUtils.withBaggage(parent, Context.root()); Context parentContext = BaggageUtils.withBaggage(parent, Context.root());
Baggage.Builder builder = contextManager.baggageBuilder().setParent(parentContext); Baggage.Builder builder = Baggage.builder().setParent(parentContext);
assertThrows(NullPointerException.class, () -> builder.put(null, V2, TMD), "key"); assertThrows(NullPointerException.class, () -> builder.put(null, V2, TMD), "key");
} }
@Test @Test
void put_nullValue() { void put_nullValue() {
BaggageSdk parent = listToBaggage(T1); Baggage parent = listToBaggage(T1);
Context parentContext = BaggageUtils.withBaggage(parent, Context.root()); Context parentContext = BaggageUtils.withBaggage(parent, Context.root());
Baggage.Builder builder = contextManager.baggageBuilder().setParent(parentContext); Baggage.Builder builder = Baggage.builder().setParent(parentContext);
assertThrows(NullPointerException.class, () -> builder.put(K2, null, TMD), "value"); assertThrows(NullPointerException.class, () -> builder.put(K2, null, TMD), "value");
} }
@Test @Test
void setParent_nullContext() { void setParent_nullContext() {
assertThrows( assertThrows(NullPointerException.class, () -> Baggage.builder().setParent((Context) null));
NullPointerException.class,
() -> contextManager.baggageBuilder().setParent((Context) null));
} }
@Test @Test
void setParent_fromContext() { void setParent_fromContext() {
Context context = BaggageUtils.withBaggage(listToBaggage(T2), Context.current()); Context context = BaggageUtils.withBaggage(listToBaggage(T2), Context.current());
Baggage baggage = contextManager.baggageBuilder().setParent(context).build(); Baggage baggage = Baggage.builder().setParent(context).build();
assertThat(baggage.getEntries()).containsExactly(T2); assertThat(baggage.getEntries()).containsExactly(T2);
} }
@Test @Test
void setParent_fromEmptyContext() { void setParent_fromEmptyContext() {
Context emptyContext = Context.current(); Context emptyContext = Context.current();
BaggageSdk parent = listToBaggage(T1); Baggage parent = listToBaggage(T1);
try (Scope scope = BaggageUtils.currentContextWith(parent)) { try (Scope scope = BaggageUtils.currentContextWith(parent)) {
Baggage baggage = contextManager.baggageBuilder().setParent(emptyContext).build(); Baggage baggage = Baggage.builder().setParent(emptyContext).build();
assertThat(baggage.getEntries()).isEmpty(); assertThat(baggage.getEntries()).isEmpty();
} }
} }
@Test @Test
void setParent_setNoParent() { void setParent_setNoParent() {
BaggageSdk parent = listToBaggage(T1); Baggage parent = listToBaggage(T1);
Context parentContext = BaggageUtils.withBaggage(parent, Context.root()); Context parentContext = BaggageUtils.withBaggage(parent, Context.root());
Baggage baggage = Baggage baggage = Baggage.builder().setParent(parentContext).setNoParent().build();
contextManager.baggageBuilder().setParent(parentContext).setNoParent().build();
assertThat(baggage.getEntries()).isEmpty(); assertThat(baggage.getEntries()).isEmpty();
} }
@Test @Test
void remove_existingKey() { void remove_existingKey() {
BaggageSdk.Builder builder = new BaggageSdk.Builder(); Baggage.Builder builder = Baggage.builder();
builder.put(T1.getKey(), T1.getValue(), T1.getEntryMetadata()); builder.put(T1.getKey(), T1.getValue(), T1.getEntryMetadata());
builder.put(T2.getKey(), T2.getValue(), T2.getEntryMetadata()); builder.put(T2.getKey(), T2.getValue(), T2.getEntryMetadata());
@ -153,7 +134,7 @@ class BaggageSdkTest {
@Test @Test
void remove_differentKey() { void remove_differentKey() {
BaggageSdk.Builder builder = new BaggageSdk.Builder(); Baggage.Builder builder = Baggage.builder();
builder.put(T1.getKey(), T1.getValue(), T1.getEntryMetadata()); builder.put(T1.getKey(), T1.getValue(), T1.getEntryMetadata());
builder.put(T2.getKey(), T2.getValue(), T2.getEntryMetadata()); builder.put(T2.getKey(), T2.getValue(), T2.getEntryMetadata());
@ -162,21 +143,15 @@ class BaggageSdkTest {
@Test @Test
void remove_keyFromParent() { void remove_keyFromParent() {
BaggageSdk parent = listToBaggage(T1, T2); Baggage parent = listToBaggage(T1, T2);
Context parentContext = BaggageUtils.withBaggage(parent, Context.root()); Context parentContext = BaggageUtils.withBaggage(parent, Context.root());
assertThat( assertThat(Baggage.builder().setParent(parentContext).remove(K1).build().getEntries())
contextManager
.baggageBuilder()
.setParent(parentContext)
.remove(K1)
.build()
.getEntries())
.containsExactly(T2); .containsExactly(T2);
} }
@Test @Test
void remove_nullKey() { void remove_nullKey() {
Baggage.Builder builder = contextManager.baggageBuilder(); Baggage.Builder builder = Baggage.builder();
assertThrows(NullPointerException.class, () -> builder.remove(null), "key"); assertThrows(NullPointerException.class, () -> builder.remove(null), "key");
} }
@ -184,11 +159,11 @@ class BaggageSdkTest {
void testEquals() { void testEquals() {
new EqualsTester() new EqualsTester()
.addEqualityGroup( .addEqualityGroup(
contextManager.baggageBuilder().put(K1, V1, TMD).put(K2, V2, TMD).build(), Baggage.builder().put(K1, V1, TMD).put(K2, V2, TMD).build(),
contextManager.baggageBuilder().put(K1, V1, TMD).put(K2, V2, TMD).build(), Baggage.builder().put(K1, V1, TMD).put(K2, V2, TMD).build(),
contextManager.baggageBuilder().put(K2, V2, TMD).put(K1, V1, TMD).build()) Baggage.builder().put(K2, V2, TMD).put(K1, V1, TMD).build())
.addEqualityGroup(contextManager.baggageBuilder().put(K1, V1, TMD).put(K2, V1, TMD).build()) .addEqualityGroup(Baggage.builder().put(K1, V1, TMD).put(K2, V1, TMD).build())
.addEqualityGroup(contextManager.baggageBuilder().put(K1, V2, TMD).put(K2, V1, TMD).build()) .addEqualityGroup(Baggage.builder().put(K1, V2, TMD).put(K2, V1, TMD).build())
.testEquals(); .testEquals();
} }
} }

View File

@ -8,16 +8,15 @@ package io.opentelemetry.sdk.baggage;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.baggage.Baggage; import io.opentelemetry.baggage.Baggage;
import io.opentelemetry.baggage.BaggageManager; import io.opentelemetry.baggage.BaggageUtils;
import io.opentelemetry.baggage.EmptyBaggage;
import io.opentelemetry.baggage.Entry; import io.opentelemetry.baggage.Entry;
import io.opentelemetry.baggage.EntryMetadata; import io.opentelemetry.baggage.EntryMetadata;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
/** /**
* Unit tests for the methods in {@link BaggageManagerSdk} and {@link BaggageSdk.Builder} that * Unit tests for the methods in {@link BaggageUtils} and {@link Baggage} that interact with the
* interact with the current {@link BaggageSdk}. * current {@link Baggage}.
*/ */
class ScopedBaggageTest { class ScopedBaggageTest {
@ -34,120 +33,108 @@ class ScopedBaggageTest {
EntryMetadata.create("unlimited"); EntryMetadata.create("unlimited");
private static final EntryMetadata METADATA_NO_PROPAGATION = EntryMetadata.create("noprop"); private static final EntryMetadata METADATA_NO_PROPAGATION = EntryMetadata.create("noprop");
private final BaggageManager contextManager = new BaggageManagerSdk();
@Test @Test
void emptyBaggage() { void emptyBaggage() {
Baggage defaultBaggage = contextManager.getCurrentBaggage(); Baggage defaultBaggage = BaggageUtils.getCurrentBaggage();
assertThat(defaultBaggage.getEntries()).isEmpty(); assertThat(defaultBaggage.getEntries()).isEmpty();
assertThat(defaultBaggage).isInstanceOf(EmptyBaggage.class);
} }
@Test @Test
void withContext() { void withContext() {
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty(); assertThat(BaggageUtils.getCurrentBaggage().getEntries()).isEmpty();
Baggage scopedEntries = Baggage scopedEntries =
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build(); Baggage.builder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
try (Scope scope = contextManager.withBaggage(scopedEntries)) { try (Scope scope = BaggageUtils.currentContextWith(scopedEntries)) {
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedEntries); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(scopedEntries);
} }
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty(); assertThat(BaggageUtils.getCurrentBaggage().getEntries()).isEmpty();
} }
@Test @Test
void createBuilderFromCurrentEntries() { void createBuilderFromCurrentEntries() {
Baggage scopedBaggage = Baggage scopedBaggage =
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build(); Baggage.builder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
try (Scope scope = contextManager.withBaggage(scopedBaggage)) { try (Scope scope = BaggageUtils.currentContextWith(scopedBaggage)) {
Baggage newEntries = Baggage newEntries =
contextManager Baggage.builder().put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION).build();
.baggageBuilder()
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)
.build();
assertThat(newEntries.getEntries()) assertThat(newEntries.getEntries())
.containsExactlyInAnyOrder( .containsExactlyInAnyOrder(
Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION), Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION),
Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)); Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION));
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedBaggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(scopedBaggage);
} }
} }
@Test @Test
void setCurrentEntriesWithBuilder() { void setCurrentEntriesWithBuilder() {
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty(); assertThat(BaggageUtils.getCurrentBaggage().getEntries()).isEmpty();
Baggage scopedBaggage = Baggage scopedBaggage =
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build(); Baggage.builder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
try (Scope scope = contextManager.withBaggage(scopedBaggage)) { try (Scope scope = BaggageUtils.currentContextWith(scopedBaggage)) {
assertThat(contextManager.getCurrentBaggage().getEntries()) assertThat(BaggageUtils.getCurrentBaggage().getEntries())
.containsExactly(Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION)); .containsExactly(Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION));
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedBaggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(scopedBaggage);
} }
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty(); assertThat(BaggageUtils.getCurrentBaggage().getEntries()).isEmpty();
} }
@Test @Test
void addToCurrentEntriesWithBuilder() { void addToCurrentEntriesWithBuilder() {
Baggage scopedBaggage = Baggage scopedBaggage =
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build(); Baggage.builder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
try (Scope scope1 = contextManager.withBaggage(scopedBaggage)) { try (Scope scope1 = BaggageUtils.currentContextWith(scopedBaggage)) {
Baggage innerBaggage = Baggage innerBaggage =
contextManager Baggage.builder().put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION).build();
.baggageBuilder() try (Scope scope2 = BaggageUtils.currentContextWith(innerBaggage)) {
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION) assertThat(BaggageUtils.getCurrentBaggage().getEntries())
.build();
try (Scope scope2 = contextManager.withBaggage(innerBaggage)) {
assertThat(contextManager.getCurrentBaggage().getEntries())
.containsExactlyInAnyOrder( .containsExactlyInAnyOrder(
Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION), Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION),
Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)); Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION));
assertThat(contextManager.getCurrentBaggage()).isSameAs(innerBaggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(innerBaggage);
} }
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedBaggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(scopedBaggage);
} }
} }
@Test @Test
void multiScopeBaggageWithMetadata() { void multiScopeBaggageWithMetadata() {
Baggage scopedBaggage = Baggage scopedBaggage =
contextManager Baggage.builder()
.baggageBuilder()
.put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION) .put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION)
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION) .put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)
.build(); .build();
try (Scope scope1 = contextManager.withBaggage(scopedBaggage)) { try (Scope scope1 = BaggageUtils.currentContextWith(scopedBaggage)) {
Baggage innerBaggage = Baggage innerBaggage =
contextManager Baggage.builder()
.baggageBuilder()
.put(KEY_3, VALUE_3, METADATA_NO_PROPAGATION) .put(KEY_3, VALUE_3, METADATA_NO_PROPAGATION)
.put(KEY_2, VALUE_4, METADATA_NO_PROPAGATION) .put(KEY_2, VALUE_4, METADATA_NO_PROPAGATION)
.build(); .build();
try (Scope scope2 = contextManager.withBaggage(innerBaggage)) { try (Scope scope2 = BaggageUtils.currentContextWith(innerBaggage)) {
assertThat(contextManager.getCurrentBaggage().getEntries()) assertThat(BaggageUtils.getCurrentBaggage().getEntries())
.containsExactlyInAnyOrder( .containsExactlyInAnyOrder(
Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION), Entry.create(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION),
Entry.create(KEY_2, VALUE_4, METADATA_NO_PROPAGATION), Entry.create(KEY_2, VALUE_4, METADATA_NO_PROPAGATION),
Entry.create(KEY_3, VALUE_3, METADATA_NO_PROPAGATION)); Entry.create(KEY_3, VALUE_3, METADATA_NO_PROPAGATION));
assertThat(contextManager.getCurrentBaggage()).isSameAs(innerBaggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(innerBaggage);
} }
assertThat(contextManager.getCurrentBaggage()).isSameAs(scopedBaggage); assertThat(BaggageUtils.getCurrentBaggage()).isSameAs(scopedBaggage);
} }
} }
@Test @Test
void setNoParent_doesNotInheritContext() { void setNoParent_doesNotInheritContext() {
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty(); assertThat(BaggageUtils.getCurrentBaggage().getEntries()).isEmpty();
Baggage scopedBaggage = Baggage scopedBaggage =
contextManager.baggageBuilder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build(); Baggage.builder().put(KEY_1, VALUE_1, METADATA_UNLIMITED_PROPAGATION).build();
try (Scope scope = contextManager.withBaggage(scopedBaggage)) { try (Scope scope = BaggageUtils.currentContextWith(scopedBaggage)) {
Baggage innerBaggage = Baggage innerBaggage =
contextManager Baggage.builder()
.baggageBuilder()
.setNoParent() .setNoParent()
.put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION) .put(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)
.build(); .build();
assertThat(innerBaggage.getEntries()) assertThat(innerBaggage.getEntries())
.containsExactly(Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION)); .containsExactly(Entry.create(KEY_2, VALUE_2, METADATA_UNLIMITED_PROPAGATION));
} }
assertThat(contextManager.getCurrentBaggage().getEntries()).isEmpty(); assertThat(BaggageUtils.getCurrentBaggage().getEntries()).isEmpty();
} }
} }

View File

@ -1,20 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.sdk.baggage.spi;
import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.OpenTelemetry;
import io.opentelemetry.sdk.baggage.BaggageManagerSdk;
import org.junit.jupiter.api.Test;
class BaggageManagerFactorySdkTest {
@Test
void testDefault() {
assertThat(OpenTelemetry.getBaggageManager()).isInstanceOf(BaggageManagerSdk.class);
}
}