Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import javax.annotation.ParametersAreNonnullByDefault;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.tabletest.junit.TableTest;
Expand All @@ -28,6 +29,7 @@ class BaggagePropagatorTest extends DDJavaSpecification {
private Map<String, String> carrier;
private Context context;

@ParametersAreNonnullByDefault
static class MapCarrierAccessor
implements CarrierSetter<Map<String, String>>, CarrierVisitor<Map<String, String>> {
@Override
Expand Down Expand Up @@ -78,7 +80,7 @@ void testBaggagePropagatorContextInjection(Map<String, String> baggageMap, Strin
"third entry dropped | [key1: val1, key2: val2, key3: val3] | 'key1=val1,key2=val2'"
})
void testBaggageInjectItemLimit(Map<String, String> baggage, String baggageHeader) {
// creating a new instance after injecting config
// Creating propagator with test item limit
propagator = new BaggagePropagator(true, true, 2, DEFAULT_TRACE_BAGGAGE_MAX_BYTES);
context = Baggage.create(baggage).storeInto(context);

Expand All @@ -94,7 +96,7 @@ void testBaggageInjectItemLimit(Map<String, String> baggage, String baggageHeade
"single entry exceeds bytes once encoded | [abcdefg: 'hijklmnopq♥'] | '' "
})
void testBaggageInjectBytesLimit(Map<String, String> baggage, String baggageHeader) {
// creating a new instance after injecting config
// Creating propagator with test bytes limit
propagator = new BaggagePropagator(true, true, DEFAULT_TRACE_BAGGAGE_MAX_ITEMS, 20);
context = Baggage.create(baggage).storeInto(context);

Expand All @@ -113,7 +115,9 @@ void testTracingPropagatorContextExtractor(String baggageHeader, Map<String, Str

context = this.propagator.extract(context, headers, ContextVisitors.stringValuesMap());

assertEquals(baggageMap, Baggage.fromContext(context).asMap());
Baggage baggage = Baggage.fromContext(context);
assertNotNull(baggage);
assertEquals(baggageMap, baggage.asMap());
}

@Test
Expand All @@ -123,7 +127,7 @@ void testExtractingNonAsciiHeaders() {
context = this.propagator.extract(context, headers, ContextVisitors.stringValuesMap());
Baggage baggage = Baggage.fromContext(context);

// non ASCII values data are still accessible as part of the API
// non-ASCII values data are still accessible as part of the API
assertNotNull(baggage);
assertEquals("vallée", baggage.asMap().get("key1"));
assertEquals("value", baggage.asMap().get("clé2"));
Expand Down Expand Up @@ -163,8 +167,9 @@ void testBaggageCache(String baggageHeader, String cachedString) {

context = this.propagator.extract(context, headers, ContextVisitors.stringValuesMap());

Baggage baggageContext = Baggage.fromContext(context);
assertEquals(cachedString, baggageContext.getW3cHeader());
Baggage baggage = Baggage.fromContext(context);
assertNotNull(baggage);
assertEquals(cachedString, baggage.getW3cHeader());
}

@TableTest({
Expand All @@ -180,24 +185,26 @@ void testBaggageCacheItemsLimit(String baggageHeader, String cachedString) {

context = this.propagator.extract(context, headers, ContextVisitors.stringValuesMap());

Baggage baggageContext = Baggage.fromContext(context);
assertEquals(cachedString, baggageContext.getW3cHeader());
Baggage baggage = Baggage.fromContext(context);
assertNotNull(baggage);
assertEquals(cachedString, baggage.getW3cHeader());
}

@TableTest({
"scenario | baggageHeader | cachedString ",
"limit not reached | 'key1=val1,key2=val2' | 'key1=val1,key2=val2'",
"third entry truncates | 'key1=val1,key2=val2,key3=val3' | 'key1=val1,key2=val2'"
})
void testBaggageCacheBytesLimit(String scenario, String baggageHeader, String cachedString) {
// creating a new instance after injecting config
void testBaggageCacheBytesLimit(String baggageHeader, String cachedString) {
// Creating propagator with test bytes limit
propagator = new BaggagePropagator(true, true, DEFAULT_TRACE_BAGGAGE_MAX_ITEMS, 20);
Map<String, String> headers = singletonMap(BAGGAGE_KEY, baggageHeader);

context = this.propagator.extract(context, headers, ContextVisitors.stringValuesMap());

Baggage baggageContext = Baggage.fromContext(context);
assertEquals(cachedString, baggageContext.getW3cHeader());
Baggage baggage = Baggage.fromContext(context);
assertNotNull(baggage);
assertEquals(cachedString, baggage.getW3cHeader());
}

@TableTest({
Expand All @@ -207,14 +214,16 @@ void testBaggageCacheBytesLimit(String scenario, String baggageHeader, String ca
"third entry dropped | 'key1=val1,key2=val2,key3=val3' | [key1: val1, key2: val2]"
})
void testBaggageExtractItemsLimit(String baggageHeader, Map<String, String> baggageMap) {
// creating a new instance after injecting config
// Creating propagator with test item limit
propagator = new BaggagePropagator(true, true, 2, DEFAULT_TRACE_BAGGAGE_MAX_BYTES);
Map<String, String> headers = singletonMap(BAGGAGE_KEY, baggageHeader);

context = this.propagator.extract(context, headers, ContextVisitors.stringValuesMap());

// parsing stops once the item limit is exceeded
assertEquals(baggageMap, Baggage.fromContext(context).asMap());
Baggage baggage = Baggage.fromContext(context);
assertNotNull(baggage);
assertEquals(baggageMap, baggage.asMap());
}

@TableTest({
Expand All @@ -224,14 +233,16 @@ void testBaggageExtractItemsLimit(String baggageHeader, Map<String, String> bagg
"third entry dropped | 'key1=val1,key2=val2,key3=val3' | [key1: val1, key2: val2]"
})
void testBaggageExtractBytesLimit(String baggageHeader, Map<String, String> baggageMap) {
// creating a new instance after injecting config
// Creating propagator with test bytes limit
propagator = new BaggagePropagator(true, true, DEFAULT_TRACE_BAGGAGE_MAX_ITEMS, 20);
Map<String, String> headers = singletonMap(BAGGAGE_KEY, baggageHeader);

context = this.propagator.extract(context, headers, ContextVisitors.stringValuesMap());

// parsing stops once the byte limit is exceeded
assertEquals(baggageMap, Baggage.fromContext(context).asMap());
Baggage baggage = Baggage.fromContext(context);
assertNotNull(baggage);
assertEquals(baggageMap, baggage.asMap());
}

@Test
Expand Down
Loading