Skip to content

Commit efa4dcd

Browse files
committed
Add baggage test to AbstractHttpServerTest
1 parent 4ea2005 commit efa4dcd

File tree

5 files changed

+62
-4
lines changed

5 files changed

+62
-4
lines changed

testing-common/build.gradle.kts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ group = "io.opentelemetry.javaagent"
99
sourceSets {
1010
main {
1111
val armeriaShadedDeps = project(":testing:armeria-shaded-for-testing")
12-
output.dir(armeriaShadedDeps.file("build/extracted/shadow"), "builtBy" to ":testing:armeria-shaded-for-testing:extractShadowJar")
12+
output.dir(
13+
armeriaShadedDeps.file("build/extracted/shadow"),
14+
"builtBy" to ":testing:armeria-shaded-for-testing:extractShadowJar"
15+
)
1316

1417
val protoShadedDeps = project(":testing:proto-shaded-for-testing")
15-
output.dir(protoShadedDeps.file("build/extracted/shadow"), "builtBy" to ":testing:proto-shaded-for-testing:extractShadowJar")
18+
output.dir(
19+
protoShadedDeps.file("build/extracted/shadow"),
20+
"builtBy" to ":testing:proto-shaded-for-testing:extractShadowJar"
21+
)
1622
}
1723
}
1824

@@ -62,6 +68,7 @@ dependencies {
6268
implementation("org.slf4j:jcl-over-slf4j")
6369
implementation("org.slf4j:jul-to-slf4j")
6470
implementation("io.opentelemetry:opentelemetry-exporter-logging")
71+
implementation("io.opentelemetry.contrib:opentelemetry-baggage-processor")
6572
api(project(":instrumentation-api-incubator"))
6673

6774
annotationProcessor("com.google.auto.service:auto-service")

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/LibraryTestRunner.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77

88
import io.opentelemetry.api.GlobalOpenTelemetry;
99
import io.opentelemetry.api.OpenTelemetry;
10+
import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator;
1011
import io.opentelemetry.api.logs.LoggerProvider;
1112
import io.opentelemetry.api.metrics.MeterProvider;
1213
import io.opentelemetry.api.trace.TracerBuilder;
1314
import io.opentelemetry.api.trace.TracerProvider;
1415
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
1516
import io.opentelemetry.context.Context;
1617
import io.opentelemetry.context.propagation.ContextPropagators;
18+
import io.opentelemetry.context.propagation.TextMapPropagator;
19+
import io.opentelemetry.contrib.baggage.processor.BaggageSpanProcessor;
1720
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
1821
import io.opentelemetry.sdk.OpenTelemetrySdk;
1922
import io.opentelemetry.sdk.common.CompletableResultCode;
@@ -73,13 +76,18 @@ public final class LibraryTestRunner extends InstrumentationTestRunner {
7376
.addSpanProcessor(new FlushTrackingSpanProcessor())
7477
.addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
7578
.addSpanProcessor(SimpleSpanProcessor.create(testSpanExporter))
79+
.addSpanProcessor(BaggageSpanProcessor.allowAllBaggageKeys())
7680
.build())
7781
.setMeterProvider(SdkMeterProvider.builder().registerMetricReader(metricReader).build())
7882
.setLoggerProvider(
7983
SdkLoggerProvider.builder()
8084
.addLogRecordProcessor(SimpleLogRecordProcessor.create(testLogRecordExporter))
8185
.build())
82-
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
86+
.setPropagators(
87+
ContextPropagators.create(
88+
TextMapPropagator.composite(
89+
W3CTraceContextPropagator.getInstance(),
90+
W3CBaggagePropagator.getInstance())))
8391
.buildAndRegisterGlobal();
8492
openTelemetry = wrap(openTelemetrySdk);
8593
}

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/InstrumentationExtension.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package io.opentelemetry.instrumentation.testing.junit;
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
9-
import static org.assertj.core.api.Assertions.assertThat;
109
import static org.awaitility.Awaitility.await;
1110

1211
import io.opentelemetry.api.OpenTelemetry;

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/AbstractHttpServerTest.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,49 @@ void requestWithNonStandardHttpMethod() throws InterruptedException {
543543
}
544544
}
545545

546+
@Test
547+
void extractSingleBaggage() {
548+
String method = "GET";
549+
AggregatedHttpRequest request =
550+
AggregatedHttpRequest.of(
551+
request(SUCCESS, method).headers().toBuilder()
552+
.set("baggage", "test-baggage-key-1=test-baggage-value-1")
553+
.build());
554+
client.execute(request).aggregate().join();
555+
556+
testing.waitAndAssertTraces(
557+
trace ->
558+
trace.anySatisfy(
559+
span ->
560+
assertServerSpan(assertThat(span), method, SUCCESS, SUCCESS.status)
561+
.hasAttribute(
562+
AttributeKey.stringKey("test-baggage-key-1"), "test-baggage-value-1")));
563+
}
564+
565+
@Test
566+
void extractMultiBaggage() {
567+
assumeTrue(options.testExtractMultiBaggage);
568+
569+
String method = "GET";
570+
AggregatedHttpRequest request =
571+
AggregatedHttpRequest.of(
572+
request(SUCCESS, method).headers().toBuilder()
573+
.add("baggage", "test-baggage-key-1=test-baggage-value-1")
574+
.add("baggage", "test-baggage-key-2=test-baggage-value-2")
575+
.build());
576+
client.execute(request).aggregate().join();
577+
578+
testing.waitAndAssertTraces(
579+
trace ->
580+
trace.anySatisfy(
581+
span ->
582+
assertServerSpan(assertThat(span), method, SUCCESS, SUCCESS.status)
583+
.hasAttribute(
584+
AttributeKey.stringKey("test-baggage-key-1"), "test-baggage-value-1")
585+
.hasAttribute(
586+
AttributeKey.stringKey("test-baggage-key-2"), "test-baggage-value-2")));
587+
}
588+
546589
private static Bootstrap buildBootstrap(EventLoopGroup eventLoopGroup) {
547590
Bootstrap bootstrap = new Bootstrap();
548591
bootstrap

testing-common/src/main/java/io/opentelemetry/instrumentation/testing/junit/http/HttpServerTestOptions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public final class HttpServerTestOptions {
6464
boolean testNonStandardHttpMethod = true;
6565
boolean verifyServerSpanEndTime = true;
6666
boolean useHttp2 = false;
67+
boolean testExtractMultiBaggage = false;
6768

6869
HttpServerTestOptions() {}
6970

0 commit comments

Comments
 (0)