From f679960e034c325dbcb027ff19e1d2a30a0b7ca8 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Mon, 31 Aug 2020 17:22:45 -0700 Subject: [PATCH] Update diagnosticsource to rc1 (#1203) * Step1 of updating to Rc1 of diagnostic source * Update parent.spanid to parent.traceid as traceid will be default for root. * add samplingatributes to activity tags * updating to isremote=true * updating tests * changelogs Co-authored-by: Eddy Nakamura --- NuGet.config | 1 + build/Common.props | 2 +- examples/AspNet/Examples.AspNet.csproj | 2 +- src/OpenTelemetry.Api/CHANGELOG.md | 2 + src/OpenTelemetry/CHANGELOG.md | 3 + src/OpenTelemetry/Trace/TracerProviderSdk.cs | 57 ++++++++----------- test/Benchmarks/Tracing/TraceBenchmarks.cs | 9 +-- .../JaegerActivityConversionTest.cs | 3 +- .../Implementation/JaegerUdpBatcherTests.cs | 3 +- .../OtlpExporterTest.cs | 3 +- .../ZPagesExporterTests.cs | 3 +- .../ZipkinExporterTests.cs | 3 +- ...HttpWebRequestActivitySourceTests.netfx.cs | 6 +- .../SqlClientInstrumentationOptionsTests.cs | 3 +- .../ScopeManagerShimTests.cs | 3 +- .../SpanBuilderShimTests.cs | 3 +- .../SpanShimTests.cs | 3 +- .../Trace/Propagation/B3PropagatorTest.cs | 28 ++++----- .../Trace/SpanContextTest.cs | 2 +- .../Trace/TracerProviderSdkTest.cs | 36 +++++++++++- 20 files changed, 96 insertions(+), 79 deletions(-) diff --git a/NuGet.config b/NuGet.config index c06be7ea25..f2d7a04a3b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,6 +6,7 @@ + diff --git a/build/Common.props b/build/Common.props index 2cfe954a8d..2c8e9f49e4 100644 --- a/build/Common.props +++ b/build/Common.props @@ -38,7 +38,7 @@ [2.1.58,3.0) [1.1.118,2.0) [1.4.0,2.0) - [5.0.0-preview.8.20407.11] + [5.0.0-rc.1.20428.3] [4.7.0,5.0) [4.7.0,5.0) [4.5.3,5.0) diff --git a/examples/AspNet/Examples.AspNet.csproj b/examples/AspNet/Examples.AspNet.csproj index 2d043cd530..651319fdc6 100644 --- a/examples/AspNet/Examples.AspNet.csproj +++ b/examples/AspNet/Examples.AspNet.csproj @@ -79,7 +79,7 @@ - 5.0.0-preview.8.20407.11 + 5.0.0-rc.1.20428.3 diff --git a/src/OpenTelemetry.Api/CHANGELOG.md b/src/OpenTelemetry.Api/CHANGELOG.md index d998e161bf..3f8dec5db0 100644 --- a/src/OpenTelemetry.Api/CHANGELOG.md +++ b/src/OpenTelemetry.Api/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +* Updated System.Diagnostics.DiagnosticSource to version 5.0.0-rc.1.20428.3 + ## 0.5.0-beta.2 Released 2020-08-28 diff --git a/src/OpenTelemetry/CHANGELOG.md b/src/OpenTelemetry/CHANGELOG.md index bb6fb61a64..7a60aace8a 100644 --- a/src/OpenTelemetry/CHANGELOG.md +++ b/src/OpenTelemetry/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +* Fixes [953](https://github.com/open-telemetry/opentelemetry-dotnet/issues/953) +* Changes arising from DiagnosticSource changes ([#1203](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1203/files)) + ## 0.5.0-beta.2 Released 2020-08-28 diff --git a/src/OpenTelemetry/Trace/TracerProviderSdk.cs b/src/OpenTelemetry/Trace/TracerProviderSdk.cs index 45a9c0c245..2e9bb9b4a5 100644 --- a/src/OpenTelemetry/Trace/TracerProviderSdk.cs +++ b/src/OpenTelemetry/Trace/TracerProviderSdk.cs @@ -93,30 +93,23 @@ static TracerProviderSdk() this.processor?.OnEnd(activity); } }, - - // Setting this to true means TraceId will be always - // available in sampling callbacks and will be the actual - // traceid used, if activity ends up getting created. - AutoGenerateRootContextTraceId = true, }; if (sampler is AlwaysOnSampler) { - listener.GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => - !Sdk.SuppressInstrumentation ? ActivityDataRequest.AllDataAndRecorded : ActivityDataRequest.None; + listener.Sample = (ref ActivityCreationOptions options) => + !Sdk.SuppressInstrumentation ? ActivitySamplingResult.AllDataAndRecorded : ActivitySamplingResult.None; } else if (sampler is AlwaysOffSampler) { - /*TODO: Change options.Parent.SpanId to options.Parent.TraceId - once AutoGenerateRootContextTraceId is removed.*/ - listener.GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => - !Sdk.SuppressInstrumentation ? PropagateOrIgnoreData(options.Parent.SpanId) : ActivityDataRequest.None; + listener.Sample = (ref ActivityCreationOptions options) => + !Sdk.SuppressInstrumentation ? PropagateOrIgnoreData(options.Parent.TraceId) : ActivitySamplingResult.None; } else { // This delegate informs ActivitySource about sampling decision when the parent context is an ActivityContext. - listener.GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => - !Sdk.SuppressInstrumentation ? ComputeActivityDataRequest(options, sampler) : ActivityDataRequest.None; + listener.Sample = (ref ActivityCreationOptions options) => + !Sdk.SuppressInstrumentation ? ComputeActivitySamplingResult(options, sampler) : ActivitySamplingResult.None; } if (sources.Any()) @@ -219,18 +212,13 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); } - private static ActivityDataRequest ComputeActivityDataRequest( + private static ActivitySamplingResult ComputeActivitySamplingResult( in ActivityCreationOptions options, Sampler sampler) { - // As we set ActivityListener.AutoGenerateRootContextTraceId = true, - // Parent.TraceId will always be the TraceId of the to-be-created Activity, - // if it get created. - ActivityTraceId traceId = options.Parent.TraceId; - var samplingParameters = new SamplingParameters( options.Parent, - traceId, + options.TraceId, options.Name, options.Kind, options.Tags, @@ -238,33 +226,36 @@ protected override void Dispose(bool disposing) var shouldSample = sampler.ShouldSample(samplingParameters); - var activityDataRequest = shouldSample.Decision switch + var activitySamplingResult = shouldSample.Decision switch { - SamplingDecision.RecordAndSampled => ActivityDataRequest.AllDataAndRecorded, - SamplingDecision.Record => ActivityDataRequest.AllData, - _ => ActivityDataRequest.PropagationData + SamplingDecision.RecordAndSampled => ActivitySamplingResult.AllDataAndRecorded, + SamplingDecision.Record => ActivitySamplingResult.AllData, + _ => ActivitySamplingResult.PropagationData }; - if (activityDataRequest != ActivityDataRequest.PropagationData) + if (activitySamplingResult != ActivitySamplingResult.PropagationData) { - return activityDataRequest; + foreach (var att in shouldSample.Attributes) + { + options.SamplingTags.Add(att.Key, att.Value); + } + + return activitySamplingResult; } - /*TODO: Change options.Parent.SpanId to options.Parent.TraceId - once AutoGenerateRootContextTraceId is removed.*/ - return PropagateOrIgnoreData(options.Parent.SpanId); + return PropagateOrIgnoreData(options.Parent.TraceId); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static ActivityDataRequest PropagateOrIgnoreData(ActivitySpanId spanId) + private static ActivitySamplingResult PropagateOrIgnoreData(ActivityTraceId traceId) { - var isRootSpan = spanId == default; + var isRootSpan = traceId == default; // If it is the root span select PropagationData so the trace ID is preserved // even if no activity of the trace is recorded (sampled per OpenTelemetry parlance). return isRootSpan - ? ActivityDataRequest.PropagationData - : ActivityDataRequest.None; + ? ActivitySamplingResult.PropagationData + : ActivitySamplingResult.None; } } } diff --git a/test/Benchmarks/Tracing/TraceBenchmarks.cs b/test/Benchmarks/Tracing/TraceBenchmarks.cs index 977c21316e..a5e50d33ea 100644 --- a/test/Benchmarks/Tracing/TraceBenchmarks.cs +++ b/test/Benchmarks/Tracing/TraceBenchmarks.cs @@ -39,8 +39,7 @@ public TraceBenchmarks() ActivityStarted = null, ActivityStopped = null, ShouldListenTo = (activitySource) => activitySource.Name == this.sourceWithPropagationDataListner.Name, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.PropagationData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.PropagationData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.PropagationData, }); ActivitySource.AddActivityListener(new ActivityListener @@ -48,8 +47,7 @@ public TraceBenchmarks() ActivityStarted = null, ActivityStopped = null, ShouldListenTo = (activitySource) => activitySource.Name == this.sourceWithAllDataListner.Name, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }); ActivitySource.AddActivityListener(new ActivityListener @@ -57,8 +55,7 @@ public TraceBenchmarks() ActivityStarted = null, ActivityStopped = null, ShouldListenTo = (activitySource) => activitySource.Name == this.sourceWithAllDataAndRecordedListner.Name, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllDataAndRecorded, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllDataAndRecorded, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllDataAndRecorded, }); Sdk.CreateTracerProviderBuilder() diff --git a/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerActivityConversionTest.cs b/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerActivityConversionTest.cs index e5b1476ca9..bfb4cff534 100644 --- a/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerActivityConversionTest.cs +++ b/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerActivityConversionTest.cs @@ -35,8 +35,7 @@ static JaegerActivityConversionTest() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerUdpBatcherTests.cs b/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerUdpBatcherTests.cs index 43894441f2..7a6635fe99 100644 --- a/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerUdpBatcherTests.cs +++ b/test/OpenTelemetry.Exporter.Jaeger.Tests/Implementation/JaegerUdpBatcherTests.cs @@ -41,8 +41,7 @@ static JaegerUdpBatcherTests() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpExporterTest.cs b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpExporterTest.cs index ad571c8862..db2a2eb413 100644 --- a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpExporterTest.cs +++ b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpExporterTest.cs @@ -42,8 +42,7 @@ static OtlpExporterTest() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs b/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs index e0229692f4..675bb8da2f 100644 --- a/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs +++ b/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs @@ -40,8 +40,7 @@ static ZPagesExporterTests() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs b/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs index bdd2d97c2f..e8c5caa5f7 100644 --- a/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs +++ b/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs @@ -48,8 +48,7 @@ static ZipkinExporterTests() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Instrumentation.Http.Tests/HttpWebRequestActivitySourceTests.netfx.cs b/test/OpenTelemetry.Instrumentation.Http.Tests/HttpWebRequestActivitySourceTests.netfx.cs index 1ab063d4d3..90e5069ec3 100644 --- a/test/OpenTelemetry.Instrumentation.Http.Tests/HttpWebRequestActivitySourceTests.netfx.cs +++ b/test/OpenTelemetry.Instrumentation.Http.Tests/HttpWebRequestActivitySourceTests.netfx.cs @@ -197,7 +197,7 @@ public async Task TestBasicReceiveAndResponseEvents(string method, string queryS [InlineData("POST")] public async Task TestBasicReceiveAndResponseEventsWithoutSampling(string method) { - using var eventRecords = new ActivitySourceRecorder(activityDataRequest: ActivityDataRequest.None); + using var eventRecords = new ActivitySourceRecorder(activitySamplingResult: ActivitySamplingResult.None); // Send a random Http request to generate some events using (var client = new HttpClient()) @@ -889,14 +889,14 @@ private class ActivitySourceRecorder : IDisposable private readonly Action> onEvent; private readonly ActivityListener activityListener; - public ActivitySourceRecorder(Action> onEvent = null, ActivityDataRequest activityDataRequest = ActivityDataRequest.AllDataAndRecorded) + public ActivitySourceRecorder(Action> onEvent = null, ActivitySamplingResult activitySamplingResult = ActivitySamplingResult.AllDataAndRecorded) { this.activityListener = new ActivityListener { ShouldListenTo = (activitySource) => activitySource.Name == HttpWebRequestActivitySource.ActivitySourceName, ActivityStarted = this.ActivityStarted, ActivityStopped = this.ActivityStopped, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => activityDataRequest, + Sample = (ref ActivityCreationOptions options) => activitySamplingResult, }; ActivitySource.AddActivityListener(this.activityListener); diff --git a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientInstrumentationOptionsTests.cs b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientInstrumentationOptionsTests.cs index e96cb6c319..8034d30d48 100644 --- a/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientInstrumentationOptionsTests.cs +++ b/test/OpenTelemetry.Instrumentation.SqlClient.Tests/SqlClientInstrumentationOptionsTests.cs @@ -31,8 +31,7 @@ static SqlClientInstrumentationOptionsTests() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs b/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs index a199124852..29e561e4e3 100644 --- a/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs +++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs @@ -35,8 +35,7 @@ static ScopeManagerShimTests() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs index 7a97e12b32..de92bb2522 100644 --- a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs +++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs @@ -37,8 +37,7 @@ static SpanBuilderShimTests() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs index 96690af59f..4db7d2b8f8 100644 --- a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs +++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs @@ -37,8 +37,7 @@ static SpanShimTests() var listener = new ActivityListener { ShouldListenTo = _ => true, - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + Sample = (ref ActivityCreationOptions options) => ActivitySamplingResult.AllData, }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Tests/Trace/Propagation/B3PropagatorTest.cs b/test/OpenTelemetry.Tests/Trace/Propagation/B3PropagatorTest.cs index f7d818d21c..5db438e142 100644 --- a/test/OpenTelemetry.Tests/Trace/Propagation/B3PropagatorTest.cs +++ b/test/OpenTelemetry.Tests/Trace/Propagation/B3PropagatorTest.cs @@ -77,7 +77,7 @@ public void ParseMissingSampledAndMissingFlag() { { B3Propagator.XB3TraceId, TraceIdBase16 }, { B3Propagator.XB3SpanId, SpanIdBase16 }, }; - var spanContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None); + var spanContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None, isRemote: true); Assert.Equal(new PropagationContext(spanContext, default), this.b3propagator.Extract(default, headersNotSampled, Getter)); } @@ -88,7 +88,7 @@ public void ParseSampled() { { B3Propagator.XB3TraceId, TraceIdBase16 }, { B3Propagator.XB3SpanId, SpanIdBase16 }, { B3Propagator.XB3Sampled, "1" }, }; - var activityContext = new ActivityContext(TraceId, SpanId, TraceOptions); + var activityContext = new ActivityContext(TraceId, SpanId, TraceOptions, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3propagator.Extract(default, headersSampled, Getter)); } @@ -99,7 +99,7 @@ public void ParseZeroSampled() { { B3Propagator.XB3TraceId, TraceIdBase16 }, { B3Propagator.XB3SpanId, SpanIdBase16 }, { B3Propagator.XB3Sampled, "0" }, }; - var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None); + var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3propagator.Extract(default, headersNotSampled, Getter)); } @@ -110,7 +110,7 @@ public void ParseFlag() { { B3Propagator.XB3TraceId, TraceIdBase16 }, { B3Propagator.XB3SpanId, SpanIdBase16 }, { B3Propagator.XB3Flags, "1" }, }; - var activityContext = new ActivityContext(TraceId, SpanId, TraceOptions); + var activityContext = new ActivityContext(TraceId, SpanId, TraceOptions, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3propagator.Extract(default, headersFlagSampled, Getter)); } @@ -121,7 +121,7 @@ public void ParseZeroFlag() { { B3Propagator.XB3TraceId, TraceIdBase16 }, { B3Propagator.XB3SpanId, SpanIdBase16 }, { B3Propagator.XB3Flags, "0" }, }; - var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None); + var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3propagator.Extract(default, headersFlagNotSampled, Getter)); } @@ -134,7 +134,7 @@ public void ParseEightBytesTraceId() { B3Propagator.XB3SpanId, SpanIdBase16 }, { B3Propagator.XB3Sampled, "1" }, }; - var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, TraceOptions); + var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, TraceOptions, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3propagator.Extract(default, headersEightBytes, Getter)); } @@ -145,7 +145,7 @@ public void ParseEightBytesTraceId_NotSampledSpanContext() { { B3Propagator.XB3TraceId, TraceIdBase16EightBytes }, { B3Propagator.XB3SpanId, SpanIdBase16 }, }; - var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, ActivityTraceFlags.None); + var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, ActivityTraceFlags.None, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3propagator.Extract(default, headersEightBytes, Getter)); } @@ -230,7 +230,7 @@ public void ParseMissingSampledAndMissingFlag_SingleHeader() { { B3Propagator.XB3Combined, $"{TraceIdBase16}-{SpanIdBase16}" }, }; - var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None); + var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3PropagatorSingleHeader.Extract(default, headersNotSampled, Getter)); } @@ -243,7 +243,7 @@ public void ParseSampled_SingleHeader() }; Assert.Equal( - new PropagationContext(new ActivityContext(TraceId, SpanId, TraceOptions), default), + new PropagationContext(new ActivityContext(TraceId, SpanId, TraceOptions, isRemote: true), default), this.b3PropagatorSingleHeader.Extract(default, headersSampled, Getter)); } @@ -256,7 +256,7 @@ public void ParseZeroSampled_SingleHeader() }; Assert.Equal( - new PropagationContext(new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None), default), + new PropagationContext(new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None, isRemote: true), default), this.b3PropagatorSingleHeader.Extract(default, headersNotSampled, Getter)); } @@ -267,7 +267,7 @@ public void ParseFlag_SingleHeader() { { B3Propagator.XB3Combined, $"{TraceIdBase16}-{SpanIdBase16}-1" }, }; - var activityContext = new ActivityContext(TraceId, SpanId, TraceOptions); + var activityContext = new ActivityContext(TraceId, SpanId, TraceOptions, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3PropagatorSingleHeader.Extract(default, headersFlagSampled, Getter)); } @@ -278,7 +278,7 @@ public void ParseZeroFlag_SingleHeader() { { B3Propagator.XB3Combined, $"{TraceIdBase16}-{SpanIdBase16}-0" }, }; - var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None); + var activityContext = new ActivityContext(TraceId, SpanId, ActivityTraceFlags.None, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3PropagatorSingleHeader.Extract(default, headersFlagNotSampled, Getter)); } @@ -289,7 +289,7 @@ public void ParseEightBytesTraceId_SingleHeader() { { B3Propagator.XB3Combined, $"{TraceIdBase16EightBytes}-{SpanIdBase16}-1" }, }; - var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, TraceOptions); + var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, TraceOptions, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3PropagatorSingleHeader.Extract(default, headersEightBytes, Getter)); } @@ -300,7 +300,7 @@ public void ParseEightBytesTraceId_NotSampledSpanContext_SingleHeader() { { B3Propagator.XB3Combined, $"{TraceIdBase16EightBytes}-{SpanIdBase16}" }, }; - var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, ActivityTraceFlags.None); + var activityContext = new ActivityContext(TraceIdEightBytes, SpanId, ActivityTraceFlags.None, isRemote: true); Assert.Equal(new PropagationContext(activityContext, default), this.b3PropagatorSingleHeader.Extract(default, headersEightBytes, Getter)); } diff --git a/test/OpenTelemetry.Tests/Trace/SpanContextTest.cs b/test/OpenTelemetry.Tests/Trace/SpanContextTest.cs index 64544dad10..d9d384846f 100644 --- a/test/OpenTelemetry.Tests/Trace/SpanContextTest.cs +++ b/test/OpenTelemetry.Tests/Trace/SpanContextTest.cs @@ -169,7 +169,7 @@ public void Not_Equality_DifferentTraceFlags() Assert.True(context1 != context2); } - [Fact(Skip = "Skip until ActivityContext support IsRemote")] + [Fact] public void Not_Equality_DifferentIsRemote() { var traceId = ActivityTraceId.CreateRandom(); diff --git a/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs b/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs index dac72fbed0..52be5383bc 100644 --- a/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs +++ b/test/OpenTelemetry.Tests/Trace/TracerProviderSdkTest.cs @@ -15,6 +15,7 @@ // using System; +using System.Collections.Generic; using System.Diagnostics; using OpenTelemetry.Tests; using Xunit; @@ -101,8 +102,39 @@ public void TracerProviderSdkInvokesSamplingWithCorrectParameters() } } + [Theory] + [InlineData(SamplingDecision.NotRecord)] + [InlineData(SamplingDecision.Record)] + [InlineData(SamplingDecision.RecordAndSampled)] + public void TracerProviderSdkSamplerAttributesAreAppliedToActivity(SamplingDecision sampling) + { + var testSampler = new TestSampler(); + testSampler.SamplingAction = (samplingParams) => + { + var attributes = new Dictionary(); + attributes.Add("tagkeybysampler", "tagvalueaddedbysampler"); + return new SamplingResult(sampling, attributes); + }; + + using var activitySource = new ActivitySource(ActivitySourceName); + using var sdk = Sdk.CreateTracerProviderBuilder() + .AddSource(ActivitySourceName) + .SetSampler(testSampler) + .Build(); + + using (var rootActivity = activitySource.StartActivity("root")) + { + Assert.NotNull(rootActivity); + Assert.Equal(rootActivity.TraceId, testSampler.LatestSamplingParameters.TraceId); + if (sampling != SamplingDecision.NotRecord) + { + Assert.Contains(new KeyValuePair("tagkeybysampler", "tagvalueaddedbysampler"), rootActivity.TagObjects); + } + } + } + [Fact] - public void TracerSdkSetsActivityDataRequestBasedOnSamplingDecision() + public void TracerSdkSetsActivitySamplingResultBasedOnSamplingDecision() { var testSampler = new TestSampler(); using var activitySource = new ActivitySource(ActivitySourceName); @@ -160,7 +192,7 @@ public void TracerSdkSetsActivityDataRequestBasedOnSamplingDecision() } [Fact] - public void TracerSdkSetsActivityDataRequestToNoneWhenSuppressInstrumentationIsTrue() + public void TracerSdkSetsActivitySamplingResultToNoneWhenSuppressInstrumentationIsTrue() { using var scope = SuppressInstrumentationScope.Begin();