From c470f0bb9c90db5c30112df7c3d73631d418a912 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Thu, 23 Jul 2020 00:09:50 -0700 Subject: [PATCH] TracerProvider renamings (#887) * TracerProvider renamings * rename * Remove customization.md as its contents are part of SDK readme * read only Default in TracerPRovier --- docs/customization.md | 104 ------------ docs/getting-started.md | 2 +- examples/AspNet/Global.asax.cs | 2 +- examples/AspNetCore/Startup.cs | 5 + examples/Console/TestConsoleExporter.cs | 2 +- examples/Console/TestHttpClient.cs | 2 +- examples/Console/TestJaegerExporter.cs | 2 +- .../TestOTelShimWithConsoleExporter.cs | 4 +- .../TestOpenTracingWithConsoleExporter.cs | 4 +- examples/Console/TestOtlpExporter.cs | 2 +- examples/Console/TestRedis.cs | 2 +- examples/Console/TestZPagesExporter.cs | 2 +- examples/Console/TestZipkinExporter.cs | 2 +- src/OpenTelemetry.Api/Trace/TracerProvider.cs | 24 ++- .../Implementation/TelemetryHostedService.cs | 2 +- .../OpenTelemetryServicesExtensions.cs | 8 +- .../README.md | 2 +- src/OpenTelemetry/README.md | 33 +++- src/OpenTelemetry/Trace/OpenTelemetrySdk.cs | 151 ++++++++++++++++++ src/OpenTelemetry/Trace/TracerProviderSdk.cs | 144 ++--------------- test/Benchmarks/OpenTelemetrySdkBenchmarks.cs | 12 +- .../OpenTelemetrySdkBenchmarksActivity.cs | 2 +- .../JaegerExporterTests.cs | 2 +- .../ActivityExtensionsTest.cs | 4 +- .../ZPagesExporterTests.cs | 2 +- .../ZipkinExporterTests.cs | 2 +- .../HostingExtensionsTests.cs | 6 +- .../HttpInListenerTests.cs | 2 +- .../BasicTests.cs | 10 +- .../HttpClientTests.Basic.netcore31.cs | 14 +- .../HttpClientTests.netcore31.cs | 2 +- .../HttpWebRequestTests.Basic.netfx.cs | 8 +- .../HttpWebRequestTests.netfx.cs | 2 +- .../SqlClientTests.cs | 6 +- .../SqlEventSourceTests.netfx.cs | 8 +- .../GrpcClientTests.cs | 4 +- ...isProfilerEntryToActivityConverterTests.cs | 2 +- ...kExchangeRedisCallsInstrumentationTests.cs | 4 +- .../ScopeManagerShimTests.cs | 8 +- .../SpanBuilderShimTests.cs | 34 ++-- .../SpanShimTests.cs | 34 ++-- .../TracerShimTests.cs | 18 +-- .../Trace/ActivityExtensionsTest.cs | 10 +- .../Trace/ActivityListenerSdkTest.cs | 2 +- .../Implementation/Trace/CurrentSpanTests.cs | 2 +- .../Export/BatchingActivityProcessorTests.cs | 22 +-- .../Export/SimpleActivityProcessorTest.cs | 8 +- .../Trace/OpenTelemetrySdkTest.cs | 6 +- 48 files changed, 355 insertions(+), 380 deletions(-) delete mode 100644 docs/customization.md create mode 100644 src/OpenTelemetry/Trace/OpenTelemetrySdk.cs diff --git a/docs/customization.md b/docs/customization.md deleted file mode 100644 index 0be2f1dd8..000000000 --- a/docs/customization.md +++ /dev/null @@ -1,104 +0,0 @@ -# Customizing OpenTelemetry .NET - -## Custom Samplers - -You may configure sampler of your choice - -```csharp -TracerProviderSdk.EnableTracerProvider(b => b - .AddActivitySource(ActivitySourceName) - .SetSampler(new ProbabilityActivitySampler(0.1)) - .SetResource(Resources.Resources.CreateServiceResource("my-service")) - .UseZipkinExporter(options => {})); -``` - -You can also implement a custom sampler and should subclass `ActivitySampler` - -```csharp -class MySampler : ActivitySampler -{ - public override string Description { get; } = "my custom sampler"; - - public override SamplingResult ShouldSample(in ActivitySamplingParameters samplingParameters) - { - bool sampledIn; - var parentContext = samplingParameters.ParentContext; - if (parentContext != null && parentContext.IsValid()) - { - sampledIn = ( - parentContext.TraceFlags & ActivityTraceFlags.Recorded - ) != 0; - } - else - { - sampledIn = Stopwatch.GetTimestamp() % 2 == 0; - } - - return new Decision(sampledIn); - } -} -``` - -## Custom Exporters - -### Tracing - -* Exporters should subclass `ActivityExporter` and implement `ExportAsync` and - `ShutdownAsync` methods. -* Depending on user's choice and load on the application `ExportAsync` may get - called concurrently with zero or more activities. -* Exporters should expect to receive only sampled-in ended activities. -* Exporters must not throw. -* Exporters should not modify activities they receive (the same activity may be - exported again by different exporter). - -It's a good practice to make exporter `IDisposable` and shut it down in -IDispose unless it was shut down explicitly. This helps when exporters are -registered with dependency injection framework and their lifetime is tight to -the app lifetime. - -```csharp -class MyExporter : ActivityExporter, IDisposable -{ - public override Task ExportAsync( - IEnumerable batch, CancellationToken cancellationToken) - { - foreach (var activity in batch) - { - Console.WriteLine( - $"[{activity.StartTimeUtc:o}] " + - $"{activity.DisplayName} " + - $"{activity.Context.TraceId.ToHexString()} " + - $"{activity.Context.SpanId.ToHexString()}" - ); - } - - return Task.FromResult(ExportResult.Success); - } - - public override Task ShutdownAsync(CancellationToken cancellationToken) - { - return Task.CompletedTask; - } - - public void Dispose() - { - // ... - } - - protected virtual void Dispose(bool disposing) - { - // ... - } -} -``` - -* Users may configure the exporter similarly to other exporters. -* You should also provide additional methods to simplify configuration - similarly to `UseZipkinExporter` extension method. - -```csharp -TracerProviderSdk.EnableTracerProvider(b => b - .AddActivitySource(ActivitySourceName) - .UseMyExporter(); -``` diff --git a/docs/getting-started.md b/docs/getting-started.md index c83a3fd2e..44b7471d1 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -38,7 +38,7 @@ class Program static void Main() { - using var otel = TracerProviderSdk.EnableTracerProvider(b => b + using var otel = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource("MyCompany.MyProduct.MyLibrary") .UseConsoleExporter(options => options.DisplayAsJson = true)); diff --git a/examples/AspNet/Global.asax.cs b/examples/AspNet/Global.asax.cs index ef32dcb7e..3f1cd8bd8 100644 --- a/examples/AspNet/Global.asax.cs +++ b/examples/AspNet/Global.asax.cs @@ -13,7 +13,7 @@ namespace Examples.AspNet protected void Application_Start() { - this.openTelemetry = TracerProviderSdk.EnableTracerProvider( + this.openTelemetry = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddDependencyInstrumentation() .AddRequestInstrumentation() .UseJaegerExporter(c => diff --git a/examples/AspNetCore/Startup.cs b/examples/AspNetCore/Startup.cs index 25afd5ea6..42a1d7c15 100644 --- a/examples/AspNetCore/Startup.cs +++ b/examples/AspNetCore/Startup.cs @@ -48,12 +48,17 @@ namespace Examples.AspNetCore })); */ + /* services.AddOpenTelemetry((builder) => builder.AddRequestInstrumentation().AddDependencyInstrumentation() .UseZipkinExporter(o => { o.ServiceName = this.Configuration.GetValue("Zipkin:ServiceName"); o.Endpoint = new Uri(this.Configuration.GetValue("Zipkin:Endpoint")); })); + */ + + services.AddOpenTelemetry((builder) => builder.AddRequestInstrumentation().AddDependencyInstrumentation() + .UseConsoleExporter()); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/examples/Console/TestConsoleExporter.cs b/examples/Console/TestConsoleExporter.cs index f6b4fcd26..09a825416 100644 --- a/examples/Console/TestConsoleExporter.cs +++ b/examples/Console/TestConsoleExporter.cs @@ -30,7 +30,7 @@ namespace Examples.Console { // Enable TracerProvider for the source "MyCompany.MyProduct.MyWebServer" // and use a single pipeline with a custom MyProcessor, and Console exporter. - using var tracerProvider = TracerProviderSdk.EnableTracerProvider( + using var tracerProvider = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddActivitySource("MyCompany.MyProduct.MyWebServer") .SetResource(Resources.CreateServiceResource("MyServiceName")) .UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson, diff --git a/examples/Console/TestHttpClient.cs b/examples/Console/TestHttpClient.cs index d0dce70c7..2969d6f86 100644 --- a/examples/Console/TestHttpClient.cs +++ b/examples/Console/TestHttpClient.cs @@ -26,7 +26,7 @@ namespace Examples.Console { System.Console.WriteLine("Hello World!"); - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation() .SetResource(Resources.CreateServiceResource("http-service-example")) .AddActivitySource("http-client-test") diff --git a/examples/Console/TestJaegerExporter.cs b/examples/Console/TestJaegerExporter.cs index fbdd36cc7..c4c8352e9 100644 --- a/examples/Console/TestJaegerExporter.cs +++ b/examples/Console/TestJaegerExporter.cs @@ -30,7 +30,7 @@ namespace Examples.Console { // Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient" // and use the Jaeger exporter. - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( builder => builder .AddActivitySource("Samples.SampleServer") .AddActivitySource("Samples.SampleClient") diff --git a/examples/Console/TestOTelShimWithConsoleExporter.cs b/examples/Console/TestOTelShimWithConsoleExporter.cs index 14f4ba412..74450bc58 100644 --- a/examples/Console/TestOTelShimWithConsoleExporter.cs +++ b/examples/Console/TestOTelShimWithConsoleExporter.cs @@ -25,7 +25,7 @@ namespace Examples.Console { // Enable OpenTelemetry for the source "MyCompany.MyProduct.MyWebServer" // and use a single pipeline with a custom MyProcessor, and Console exporter. - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var tracerProvider = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddActivitySource("MyCompany.MyProduct.MyWebServer") .SetResource(Resources.CreateServiceResource("MyServiceName")) .UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson)); @@ -33,7 +33,7 @@ namespace Examples.Console // The above line is required only in applications // which decide to use Open Telemetry. - var tracer = TracerProvider.GetTracer("MyCompany.MyProduct.MyWebServer"); + var tracer = TracerProvider.Default.GetTracer("MyCompany.MyProduct.MyWebServer"); var span = tracer.StartSpan("parent span"); span.SetAttribute("my", "value"); span.UpdateName("parent span new name"); diff --git a/examples/Console/TestOpenTracingWithConsoleExporter.cs b/examples/Console/TestOpenTracingWithConsoleExporter.cs index 3fd9d3bef..f9cd377af 100644 --- a/examples/Console/TestOpenTracingWithConsoleExporter.cs +++ b/examples/Console/TestOpenTracingWithConsoleExporter.cs @@ -28,7 +28,7 @@ namespace Examples.Console { // Enable OpenTelemetry for the source "MyCompany.MyProduct.MyWebServer" // and use Console exporter. - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddActivitySource("MyCompany.MyProduct.MyWebServer") .SetResource(Resources.CreateServiceResource("MyServiceName")) .UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson)); @@ -38,7 +38,7 @@ namespace Examples.Console // Following shows how to use the OpenTracing shim - var tracer = new TracerShim(TracerProvider.GetTracer("MyCompany.MyProduct.MyWebServer"), new TraceContextFormat()); + var tracer = new TracerShim(TracerProvider.Default.GetTracer("MyCompany.MyProduct.MyWebServer"), new TraceContextFormat()); using (IScope parentScope = tracer.BuildSpan("Parent").StartActive(finishSpanOnDispose: true)) { diff --git a/examples/Console/TestOtlpExporter.cs b/examples/Console/TestOtlpExporter.cs index 0d21b8d0f..64afab8c7 100644 --- a/examples/Console/TestOtlpExporter.cs +++ b/examples/Console/TestOtlpExporter.cs @@ -29,7 +29,7 @@ namespace Examples.Console { // Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient" // and use OTLP exporter. - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( builder => builder .AddActivitySource("Samples.SampleServer") .AddActivitySource("Samples.SampleClient") diff --git a/examples/Console/TestRedis.cs b/examples/Console/TestRedis.cs index 27416f4f3..4deffe419 100644 --- a/examples/Console/TestRedis.cs +++ b/examples/Console/TestRedis.cs @@ -41,7 +41,7 @@ namespace Examples.Console var connection = ConnectionMultiplexer.Connect("localhost"); // Configure exporter to export traces to Zipkin - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( builder => builder .UseZipkinExporter(o => { diff --git a/examples/Console/TestZPagesExporter.cs b/examples/Console/TestZPagesExporter.cs index f83c34bbc..f3b606048 100644 --- a/examples/Console/TestZPagesExporter.cs +++ b/examples/Console/TestZPagesExporter.cs @@ -33,7 +33,7 @@ namespace Examples.Console // Start the server httpServer.Start(); - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( builder => builder .AddActivitySource("zpages-test") .UseZPagesExporter( diff --git a/examples/Console/TestZipkinExporter.cs b/examples/Console/TestZipkinExporter.cs index 0dc240d1e..d33689304 100644 --- a/examples/Console/TestZipkinExporter.cs +++ b/examples/Console/TestZipkinExporter.cs @@ -25,7 +25,7 @@ namespace Examples.Console { // Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient" // and use the Zipkin exporter. - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( builder => builder .AddActivitySource("Samples.SampleServer") .AddActivitySource("Samples.SampleClient") diff --git a/src/OpenTelemetry.Api/Trace/TracerProvider.cs b/src/OpenTelemetry.Api/Trace/TracerProvider.cs index 10c53cf08..c3feb359f 100644 --- a/src/OpenTelemetry.Api/Trace/TracerProvider.cs +++ b/src/OpenTelemetry.Api/Trace/TracerProvider.cs @@ -14,22 +14,40 @@ // limitations under the License. // +using System; using System.Diagnostics; namespace OpenTelemetry.Trace { /// - /// TracerProvider is the entry point of the OTel API. It provides access to Tracers. + /// TracerProvider is the entry point of the OpenTelemetry API. It provides access to Tracers. /// - public abstract class TracerProvider + public class TracerProvider : IDisposable { + /// + /// Initializes a new instance of the class. + /// + protected TracerProvider() + { + } + + /// + /// Gets the default Tracer. + /// + public static TracerProvider Default { get; } = new TracerProvider(); + + /// + public virtual void Dispose() + { + } + /// /// Gets a tracer with given name and version. /// /// Name identifying the instrumentation library. /// Version of the instrumentation library. /// Tracer instance. - public static Tracer GetTracer(string name, string version = null) + public Tracer GetTracer(string name, string version = null) { if (name == null) { diff --git a/src/OpenTelemetry.Extensions.Hosting/Implementation/TelemetryHostedService.cs b/src/OpenTelemetry.Extensions.Hosting/Implementation/TelemetryHostedService.cs index 156c5b49c..442c4ea65 100644 --- a/src/OpenTelemetry.Extensions.Hosting/Implementation/TelemetryHostedService.cs +++ b/src/OpenTelemetry.Extensions.Hosting/Implementation/TelemetryHostedService.cs @@ -41,7 +41,7 @@ namespace OpenTelemetry.Extensions.Hosting.Implementation // This method is invoked when host starts, and // by requesting the OpenTelemetrySdk from DI // it ensures all instrumentations gets started. - this.serviceProvider.GetRequiredService(); + this.serviceProvider.GetRequiredService(); } catch (Exception ex) { diff --git a/src/OpenTelemetry.Extensions.Hosting/OpenTelemetryServicesExtensions.cs b/src/OpenTelemetry.Extensions.Hosting/OpenTelemetryServicesExtensions.cs index 18e30496a..0432dc12f 100644 --- a/src/OpenTelemetry.Extensions.Hosting/OpenTelemetryServicesExtensions.cs +++ b/src/OpenTelemetry.Extensions.Hosting/OpenTelemetryServicesExtensions.cs @@ -46,7 +46,7 @@ namespace Microsoft.Extensions.DependencyInjection /// The so that additional calls can be chained. public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Action configure) { - services.AddOpenTelemetry(() => TracerProviderSdk.EnableTracerProvider(configure)); + services.AddOpenTelemetry(() => OpenTelemetrySdk.CreateTracerProvider(configure)); return services; } @@ -58,7 +58,7 @@ namespace Microsoft.Extensions.DependencyInjection /// The so that additional calls can be chained. public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Action configure) { - services.AddOpenTelemetry(s => TracerProviderSdk.EnableTracerProvider(builder => configure(s, builder))); + services.AddOpenTelemetry(s => OpenTelemetrySdk.CreateTracerProvider(builder => configure(s, builder))); return services; } @@ -68,7 +68,7 @@ namespace Microsoft.Extensions.DependencyInjection /// The to add services to. /// A delegate that provides the factory to be registered. /// The so that additional calls can be chained. - public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Func createSdk) + public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Func createSdk) { if (services is null) { @@ -99,7 +99,7 @@ namespace Microsoft.Extensions.DependencyInjection /// The to add services to. /// A delegate that provides the factory to be registered. /// The so that additional calls can be chained. - public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Func createSdk) + public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Func createSdk) { if (services is null) { diff --git a/src/OpenTelemetry.Instrumentation.StackExchangeRedis/README.md b/src/OpenTelemetry.Instrumentation.StackExchangeRedis/README.md index da7cf932e..b056b540d 100644 --- a/src/OpenTelemetry.Instrumentation.StackExchangeRedis/README.md +++ b/src/OpenTelemetry.Instrumentation.StackExchangeRedis/README.md @@ -19,7 +19,7 @@ dotnet add package OpenTelemetry.Instrumentation.StackExchangeRedis using var connection = ConnectionMultiplexer.Connect("localhost:6379"); // Pass the connection to AddRedisInstrumentation. -using var openTelemetry = TracerProviderSdk.EnableTracerProvider(b => b +using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider(b => b .AddRedisInstrumentation(connection) .UseZipkinExporter() .SetResource(Resources.CreateServiceResource("my-service")); diff --git a/src/OpenTelemetry/README.md b/src/OpenTelemetry/README.md index cede7da54..909332a80 100644 --- a/src/OpenTelemetry/README.md +++ b/src/OpenTelemetry/README.md @@ -59,12 +59,12 @@ console application, and have the traces displayed in the console. the source named "companyname.product.library". ```csharp - using var openTelemetry = TracerProviderSdk.EnableTracerProvider(builder => builder + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider(builder => builder .AddActivitySource("companyname.product.library") .UseConsoleExporter()) ``` - The above requires import of namespace `OpenTelemetry.Trace.Configuration`. + The above requires import of namespace `OpenTelemetry.Trace`. 3. Generate some activities in the application as shown below. @@ -95,13 +95,40 @@ The following sample shows how to change it to with sampling probability of 25%. ```csharp -using var openTelemetry = TracerProviderSdk.EnableTracerProvider(builder => builder +using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider(builder => builder .AddActivitySource("companyname.product.library") .SetSampler(new ProbabilitySampler(.25)) .UseConsoleExporter()); ``` The above requires import of the namespace `OpenTelemetry.Trace.Samplers`. + + You can also implement a custom sampler by subclassing `Sampler` + +```csharp +class MySampler : Sampler +{ + public override string Description { get; } = "mysampler"; + + public override SamplingResult ShouldSample(in SamplingParameters samplingParameters) + { + bool sampledIn; + var parentContext = samplingParameters.ParentContext; + if (parentContext != null && parentContext.IsValid()) + { + sampledIn = ( + parentContext.TraceFlags & ActivityTraceFlags.Recorded + ) != 0; + } + else + { + sampledIn = Stopwatch.GetTimestamp() % 2 == 0; + } + + return new SamplingResult(sampledIn); + } +} +``` ### Customize Resource diff --git a/src/OpenTelemetry/Trace/OpenTelemetrySdk.cs b/src/OpenTelemetry/Trace/OpenTelemetrySdk.cs new file mode 100644 index 000000000..2c45ff7cf --- /dev/null +++ b/src/OpenTelemetry/Trace/OpenTelemetrySdk.cs @@ -0,0 +1,151 @@ +// +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +using System; +using System.Diagnostics; +using System.Linq; +using OpenTelemetry.Trace.Export; +using OpenTelemetry.Trace.Export.Internal; +using OpenTelemetry.Trace.Samplers; + +namespace OpenTelemetry.Trace +{ + /// + /// OpenTelemetry helper. + /// + public class OpenTelemetrySdk + { + /// + /// Creates TracerProvider with the configuration provided. + /// This sets up listeners for all configured ActivitySources and + /// sends activities to the pipeline of Sampler, Processor and Exporter. + /// + /// Action to configure TracerProviderBuilder. + /// TracerProvider instance, which must be disposed upon shutdown. + public static TracerProvider CreateTracerProvider(Action configureTracerProviderBuilder) + { + var tracerProviderBuilder = new TracerProviderBuilder(); + configureTracerProviderBuilder?.Invoke(tracerProviderBuilder); + + var tracerProviderSdk = new TracerProviderSdk(); + Sampler sampler = tracerProviderBuilder.Sampler ?? new AlwaysOnSampler(); + + ActivityProcessor activityProcessor; + if (tracerProviderBuilder.ProcessingPipelines == null || !tracerProviderBuilder.ProcessingPipelines.Any()) + { + // if there are no pipelines are configured, use noop processor + activityProcessor = new NoopActivityProcessor(); + } + else if (tracerProviderBuilder.ProcessingPipelines.Count == 1) + { + // if there is only one pipeline - use it's outer processor as a + // single processor on the tracerSdk. + var processorFactory = tracerProviderBuilder.ProcessingPipelines[0]; + activityProcessor = processorFactory.Build(); + } + else + { + // if there are more pipelines, use processor that will broadcast to all pipelines + var processors = new ActivityProcessor[tracerProviderBuilder.ProcessingPipelines.Count]; + + for (int i = 0; i < tracerProviderBuilder.ProcessingPipelines.Count; i++) + { + processors[i] = tracerProviderBuilder.ProcessingPipelines[i].Build(); + } + + activityProcessor = new BroadcastActivityProcessor(processors); + } + + tracerProviderSdk.Resource = tracerProviderBuilder.Resource; + + var activitySource = new ActivitySourceAdapter(sampler, activityProcessor, tracerProviderSdk.Resource); + + if (tracerProviderBuilder.InstrumentationFactories != null) + { + foreach (var instrumentation in tracerProviderBuilder.InstrumentationFactories) + { + tracerProviderSdk.Instrumentations.Add(instrumentation.Factory(activitySource)); + } + } + + // This is what subscribes to Activities. + // Think of this as the replacement for DiagnosticListener.AllListeners.Subscribe(onNext => diagnosticListener.Subscribe(..)); + tracerProviderSdk.ActivityListener = new ActivityListener + { + // Callback when Activity is started. + ActivityStarted = (activity) => + { + if (activity.IsAllDataRequested) + { + activity.SetResource(tracerProviderSdk.Resource); + } + + activityProcessor.OnStart(activity); + }, + + // Callback when Activity is stopped. + ActivityStopped = activityProcessor.OnEnd, + + // Function which takes ActivitySource and returns true/false to indicate if it should be subscribed to + // or not + ShouldListenTo = (activitySource) => tracerProviderBuilder.ActivitySourceNames?.Contains(activitySource.Name.ToUpperInvariant()) ?? false, + + // The following parameter is not used now. + GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, + + // This delegate informs ActivitySource about sampling decision when the parent context is an ActivityContext. + GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ComputeActivityDataRequest(options, sampler), + }; + + ActivitySource.AddActivityListener(tracerProviderSdk.ActivityListener); + tracerProviderSdk.ActivityProcessor = activityProcessor; + return tracerProviderSdk; + } + + internal static ActivityDataRequest ComputeActivityDataRequest( + in ActivityCreationOptions options, + Sampler sampler) + { + var isRootSpan = options.Parent.TraceId == default; + + // This is not going to be the final traceId of the Activity (if one is created), however, it is + // needed in order for the sampling to work. This differs from other OTel SDKs in which it is + // the Sampler always receives the actual traceId of a root span/activity. + ActivityTraceId traceId = !isRootSpan + ? options.Parent.TraceId + : ActivityTraceId.CreateRandom(); + + var samplingParameters = new SamplingParameters( + options.Parent, + traceId, + options.Name, + options.Kind, + options.Tags, + options.Links); + + var shouldSample = sampler.ShouldSample(samplingParameters); + if (shouldSample.IsSampled) + { + return ActivityDataRequest.AllDataAndRecorded; + } + + // 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; + } + } +} diff --git a/src/OpenTelemetry/Trace/TracerProviderSdk.cs b/src/OpenTelemetry/Trace/TracerProviderSdk.cs index 6e0da257f..20472d345 100644 --- a/src/OpenTelemetry/Trace/TracerProviderSdk.cs +++ b/src/OpenTelemetry/Trace/TracerProviderSdk.cs @@ -17,20 +17,17 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.Linq; using OpenTelemetry.Resources; using OpenTelemetry.Trace.Export; -using OpenTelemetry.Trace.Export.Internal; -using OpenTelemetry.Trace.Samplers; namespace OpenTelemetry.Trace { - public class TracerProviderSdk : TracerProvider, IDisposable + internal class TracerProviderSdk : TracerProvider, IDisposable { - private readonly List instrumentations = new List(); - private Resource resource; - private ActivityProcessor activityProcessor; - private ActivityListener listener; + internal readonly List Instrumentations = new List(); + internal Resource Resource; + internal ActivityProcessor ActivityProcessor; + internal ActivityListener ActivityListener; static TracerProviderSdk() { @@ -38,98 +35,13 @@ namespace OpenTelemetry.Trace Activity.ForceDefaultIdFormat = true; } - private TracerProviderSdk() + internal TracerProviderSdk() { } - /// - /// Enables OpenTelemetry. - /// - /// Function that configures TracerProviderBuilder. - /// instance which can be disposed on application shutdown. - public static TracerProviderSdk EnableTracerProvider(Action configureTracerProviderBuilder) + public override void Dispose() { - var tracerProviderBuilder = new TracerProviderBuilder(); - configureTracerProviderBuilder?.Invoke(tracerProviderBuilder); - - var tracerProviderSdk = new TracerProviderSdk(); - Sampler sampler = tracerProviderBuilder.Sampler ?? new AlwaysOnSampler(); - - ActivityProcessor activityProcessor; - if (tracerProviderBuilder.ProcessingPipelines == null || !tracerProviderBuilder.ProcessingPipelines.Any()) - { - // if there are no pipelines are configured, use noop processor - activityProcessor = new NoopActivityProcessor(); - } - else if (tracerProviderBuilder.ProcessingPipelines.Count == 1) - { - // if there is only one pipeline - use it's outer processor as a - // single processor on the tracerSdk. - var processorFactory = tracerProviderBuilder.ProcessingPipelines[0]; - activityProcessor = processorFactory.Build(); - } - else - { - // if there are more pipelines, use processor that will broadcast to all pipelines - var processors = new ActivityProcessor[tracerProviderBuilder.ProcessingPipelines.Count]; - - for (int i = 0; i < tracerProviderBuilder.ProcessingPipelines.Count; i++) - { - processors[i] = tracerProviderBuilder.ProcessingPipelines[i].Build(); - } - - activityProcessor = new BroadcastActivityProcessor(processors); - } - - tracerProviderSdk.resource = tracerProviderBuilder.Resource; - - var activitySource = new ActivitySourceAdapter(sampler, activityProcessor, tracerProviderSdk.resource); - - if (tracerProviderBuilder.InstrumentationFactories != null) - { - foreach (var instrumentation in tracerProviderBuilder.InstrumentationFactories) - { - tracerProviderSdk.instrumentations.Add(instrumentation.Factory(activitySource)); - } - } - - // This is what subscribes to Activities. - // Think of this as the replacement for DiagnosticListener.AllListeners.Subscribe(onNext => diagnosticListener.Subscribe(..)); - tracerProviderSdk.listener = new ActivityListener - { - // Callback when Activity is started. - ActivityStarted = (activity) => - { - if (activity.IsAllDataRequested) - { - activity.SetResource(tracerProviderSdk.resource); - } - - activityProcessor.OnStart(activity); - }, - - // Callback when Activity is stopped. - ActivityStopped = activityProcessor.OnEnd, - - // Function which takes ActivitySource and returns true/false to indicate if it should be subscribed to - // or not - ShouldListenTo = (activitySource) => tracerProviderBuilder.ActivitySourceNames?.Contains(activitySource.Name.ToUpperInvariant()) ?? false, - - // The following parameter is not used now. - GetRequestedDataUsingParentId = (ref ActivityCreationOptions options) => ActivityDataRequest.AllData, - - // This delegate informs ActivitySource about sampling decision when the parent context is an ActivityContext. - GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => ComputeActivityDataRequest(options, sampler), - }; - - ActivitySource.AddActivityListener(tracerProviderSdk.listener); - tracerProviderSdk.activityProcessor = activityProcessor; - return tracerProviderSdk; - } - - public void Dispose() - { - foreach (var item in this.instrumentations) + foreach (var item in this.Instrumentations) { if (item is IDisposable disposable) { @@ -137,9 +49,9 @@ namespace OpenTelemetry.Trace } } - this.instrumentations.Clear(); + this.Instrumentations.Clear(); - if (this.activityProcessor is IDisposable disposableProcessor) + if (this.ActivityProcessor is IDisposable disposableProcessor) { disposableProcessor.Dispose(); } @@ -147,41 +59,7 @@ namespace OpenTelemetry.Trace // Shutdown the listener last so that anything created while instrumentation cleans up will still be processed. // Redis instrumentation, for example, flushes during dispose which creates Activity objects for any profiling // sessions that were open. - this.listener.Dispose(); - } - - internal static ActivityDataRequest ComputeActivityDataRequest( - in ActivityCreationOptions options, - Sampler sampler) - { - var isRootSpan = options.Parent.TraceId == default; - - // This is not going to be the final traceId of the Activity (if one is created), however, it is - // needed in order for the sampling to work. This differs from other OTel SDKs in which it is - // the Sampler always receives the actual traceId of a root span/activity. - ActivityTraceId traceId = !isRootSpan - ? options.Parent.TraceId - : ActivityTraceId.CreateRandom(); - - var samplingParameters = new SamplingParameters( - options.Parent, - traceId, - options.Name, - options.Kind, - options.Tags, - options.Links); - - var shouldSample = sampler.ShouldSample(samplingParameters); - if (shouldSample.IsSampled) - { - return ActivityDataRequest.AllDataAndRecorded; - } - - // 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; + this.ActivityListener.Dispose(); } } } diff --git a/test/Benchmarks/OpenTelemetrySdkBenchmarks.cs b/test/Benchmarks/OpenTelemetrySdkBenchmarks.cs index f02b10c17..2f51faaa3 100644 --- a/test/Benchmarks/OpenTelemetrySdkBenchmarks.cs +++ b/test/Benchmarks/OpenTelemetrySdkBenchmarks.cs @@ -30,17 +30,17 @@ namespace Benchmarks public OpenTelemetrySdkBenchmarks() { - using var openTelemetryAlwaysOnSample = TracerProviderSdk.EnableTracerProvider( + using var openTelemetryAlwaysOnSample = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddActivitySource("AlwaysOnSample").SetSampler(new AlwaysOnSampler())); - using var openTelemetryAlwaysOffSample = TracerProviderSdk.EnableTracerProvider( + using var openTelemetryAlwaysOffSample = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddActivitySource("AlwaysOffSample").SetSampler(new AlwaysOffSampler())); - using var openTelemetryNoOp = TracerProviderSdk.EnableTracerProvider(null); + using var openTelemetryNoOp = OpenTelemetrySdk.CreateTracerProvider(null); - this.alwaysSampleTracer = TracerProvider.GetTracer("AlwaysOnSample"); - this.neverSampleTracer = TracerProvider.GetTracer("AlwaysOffSample"); - this.noopTracer = TracerProvider.GetTracer("NoOp"); + this.alwaysSampleTracer = TracerProvider.Default.GetTracer("AlwaysOnSample"); + this.neverSampleTracer = TracerProvider.Default.GetTracer("AlwaysOffSample"); + this.noopTracer = TracerProvider.Default.GetTracer("NoOp"); } [Benchmark] diff --git a/test/Benchmarks/OpenTelemetrySdkBenchmarksActivity.cs b/test/Benchmarks/OpenTelemetrySdkBenchmarksActivity.cs index 676dea903..46af9bb58 100644 --- a/test/Benchmarks/OpenTelemetrySdkBenchmarksActivity.cs +++ b/test/Benchmarks/OpenTelemetrySdkBenchmarksActivity.cs @@ -31,7 +31,7 @@ namespace Benchmarks public OpenTelemetrySdkBenchmarksActivity() { // Not configuring pipeline, which will result in default NoOpActivityProcessor. - var openTel = TracerProviderSdk.EnableTracerProvider((builder) => builder.AddActivitySource("BenchMark")); + var openTel = OpenTelemetrySdk.CreateTracerProvider((builder) => builder.AddActivitySource("BenchMark")); } [Benchmark] diff --git a/test/OpenTelemetry.Exporter.Jaeger.Tests/JaegerExporterTests.cs b/test/OpenTelemetry.Exporter.Jaeger.Tests/JaegerExporterTests.cs index 3c269c06e..294ce0678 100644 --- a/test/OpenTelemetry.Exporter.Jaeger.Tests/JaegerExporterTests.cs +++ b/test/OpenTelemetry.Exporter.Jaeger.Tests/JaegerExporterTests.cs @@ -46,7 +46,7 @@ namespace OpenTelemetry.Exporter.Jaeger.Tests endCalled = true; }; - var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .UseJaegerExporter( null, p => p.AddProcessor((next) => testActivityProcessor))); diff --git a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/ActivityExtensionsTest.cs b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/ActivityExtensionsTest.cs index 67d320661..613815b45 100644 --- a/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/ActivityExtensionsTest.cs +++ b/test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/ActivityExtensionsTest.cs @@ -66,7 +66,7 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests }); // This following is done just to set Resource to Activity. - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(sources[0].Name) .AddActivitySource(sources[1].Name) .SetResource(resource)); @@ -248,7 +248,7 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests endCalled = true; }; - var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .UseOtlpExporter( null, p => p.AddProcessor((next) => testActivityProcessor))); diff --git a/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs b/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs index f5fca9c22..a67db852d 100644 --- a/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs +++ b/test/OpenTelemetry.Exporter.ZPages.Tests/ZPagesExporterTests.cs @@ -81,7 +81,7 @@ namespace OpenTelemetry.Exporter.ZPages.Tests endCalled = true; }; - var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .UseZPagesExporter( processorConfigure: p => p.AddProcessor((next) => testActivityProcessor))); diff --git a/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs b/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs index b7d5a7014..337725620 100644 --- a/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs +++ b/test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs @@ -150,7 +150,7 @@ namespace OpenTelemetry.Exporter.Zipkin.Tests endCalled = true; }; - var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .UseZipkinExporter( o => diff --git a/test/OpenTelemetry.Extensions.Hosting.Tests/HostingExtensionsTests.cs b/test/OpenTelemetry.Extensions.Hosting.Tests/HostingExtensionsTests.cs index b4bfdeccd..56f8e87fd 100644 --- a/test/OpenTelemetry.Extensions.Hosting.Tests/HostingExtensionsTests.cs +++ b/test/OpenTelemetry.Extensions.Hosting.Tests/HostingExtensionsTests.cs @@ -74,8 +74,8 @@ namespace OpenTelemetry.Extensions.Hosting var host = builder.Build(); - var tracerFactoryBase1 = host.Services.GetRequiredService(); - var tracerFactoryBase2 = host.Services.GetRequiredService(); + var tracerFactoryBase1 = host.Services.GetRequiredService(); + var tracerFactoryBase2 = host.Services.GetRequiredService(); Assert.Same(tracerFactoryBase1, tracerFactoryBase2); } @@ -94,7 +94,7 @@ namespace OpenTelemetry.Extensions.Hosting var serviceProvider = services.BuildServiceProvider(); - var tracerFactory = serviceProvider.GetRequiredService(); + var tracerFactory = serviceProvider.GetRequiredService(); Assert.NotNull(tracerFactory); Assert.False(testInstrumentation.Disposed); diff --git a/test/OpenTelemetry.Instrumentation.AspNet.Tests/HttpInListenerTests.cs b/test/OpenTelemetry.Instrumentation.AspNet.Tests/HttpInListenerTests.cs index d0e78d079..4b7745d2e 100644 --- a/test/OpenTelemetry.Instrumentation.AspNet.Tests/HttpInListenerTests.cs +++ b/test/OpenTelemetry.Instrumentation.AspNet.Tests/HttpInListenerTests.cs @@ -138,7 +138,7 @@ namespace OpenTelemetry.Instrumentation.AspNet.Tests var activity = new Activity(ActivityNameAspNet).AddBaggage("Stuff", "123"); activity.SetParentId(expectedTraceId, expectedSpanId, ActivityTraceFlags.Recorded); var activityProcessor = new Mock(); - using (openTelemetry = TracerProviderSdk.EnableTracerProvider( + using (openTelemetry = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddRequestInstrumentation( (options) => { diff --git a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs index 1dc81a5e0..884b55fee 100644 --- a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs +++ b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/BasicTests.cs @@ -43,7 +43,7 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests : IClassFixture>, IDisposable { private readonly WebApplicationFactory factory; - private TracerProviderSdk openTelemetrySdk = null; + private TracerProvider openTelemetrySdk = null; public BasicTests(WebApplicationFactory factory) { @@ -64,7 +64,7 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests var spanProcessor = new Mock(); void ConfigureTestServices(IServiceCollection services) { - this.openTelemetrySdk = TracerProviderSdk.EnableTracerProvider( + this.openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddRequestInstrumentation() .SetResource(expectedResource) .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))); @@ -106,7 +106,7 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests .WithWebHostBuilder(builder => builder.ConfigureTestServices(services => { - this.openTelemetrySdk = TracerProviderSdk.EnableTracerProvider((builder) => builder.AddRequestInstrumentation() + this.openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider((builder) => builder.AddRequestInstrumentation() .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))); }))) { @@ -153,7 +153,7 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests .WithWebHostBuilder(builder => builder.ConfigureTestServices(services => { - this.openTelemetrySdk = TracerProviderSdk.EnableTracerProvider( + this.openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddRequestInstrumentation((opt) => opt.TextFormat = textFormat.Object) .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))); }))) @@ -185,7 +185,7 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests void ConfigureTestServices(IServiceCollection services) { - this.openTelemetrySdk = TracerProviderSdk.EnableTracerProvider( + this.openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddRequestInstrumentation((opt) => opt.RequestFilter = (ctx) => ctx.Request.Path != "/api/values/2") .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))); diff --git a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.Basic.netcore31.cs b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.Basic.netcore31.cs index 2e7370004..ef3788301 100644 --- a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.Basic.netcore31.cs +++ b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.Basic.netcore31.cs @@ -91,7 +91,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests } }); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation(o => o.TextFormat = mockTextFormat.Object) .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) { @@ -144,7 +144,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests parent.TraceStateString = "k1=v1,k2=v2"; parent.ActivityTraceFlags = ActivityTraceFlags.Recorded; - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation((opt) => opt.TextFormat = textFormat.Object) .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) { @@ -174,7 +174,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests { var spanProcessor = new Mock(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation() .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) { @@ -192,7 +192,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests { var spanProcessor = new Mock(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation() .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) { @@ -218,7 +218,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests request.Headers.Add("traceparent", "00-0123456789abcdef0123456789abcdef-0123456789abcdef-01"); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation() .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) { @@ -234,7 +234,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests { var spanProcessor = new Mock(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation( (opt) => opt.FilterFunc = (req) => !req.RequestUri.OriginalString.Contains(this.url)) @@ -252,7 +252,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests { var spanProcessor = new Mock(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation() .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) { diff --git a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.netcore31.cs b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.netcore31.cs index 3ce4825d3..b5f903a75 100644 --- a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.netcore31.cs +++ b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpClientTests.netcore31.cs @@ -55,7 +55,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests using (serverLifeTime) - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddHttpClientDependencyInstrumentation((opt) => opt.SetHttpFlavor = tc.SetHttpFlavor) .SetResource(expectedResource) .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) diff --git a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.Basic.netfx.cs b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.Basic.netfx.cs index 5f7f098a1..081af2b49 100644 --- a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.Basic.netfx.cs +++ b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.Basic.netfx.cs @@ -60,7 +60,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests public async Task HttpDependenciesInstrumentationInjectsHeadersAsync() { var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddHttpWebRequestDependencyInstrumentation(); @@ -107,7 +107,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests }); var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddHttpWebRequestDependencyInstrumentation(options => options.TextFormat = textFormat.Object); @@ -147,7 +147,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests public async Task HttpDependenciesInstrumentationBacksOffIfAlreadyInstrumented() { var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddHttpWebRequestDependencyInstrumentation(); @@ -171,7 +171,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests public async Task HttpDependenciesInstrumentationFiltersOutRequests() { var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddHttpWebRequestDependencyInstrumentation( diff --git a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.netfx.cs b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.netfx.cs index 5bbc20810..6257b43df 100644 --- a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.netfx.cs +++ b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/HttpWebRequestTests.netfx.cs @@ -48,7 +48,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests var expectedResource = Resources.Resources.CreateServiceResource("test-service"); var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.SetResource(expectedResource); b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); diff --git a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlClientTests.cs b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlClientTests.cs index c4a818f8b..23b1b34d6 100644 --- a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlClientTests.cs +++ b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlClientTests.cs @@ -77,7 +77,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests bool isFailure = false) { var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddSqlClientDependencyInstrumentation(options => @@ -132,7 +132,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests using var sqlCommand = sqlConnection.CreateCommand(); var spanProcessor = new Mock(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddSqlClientDependencyInstrumentation( (opt) => { @@ -182,7 +182,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests using var sqlCommand = sqlConnection.CreateCommand(); var spanProcessor = new Mock(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddSqlClientDependencyInstrumentation() .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) { diff --git a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlEventSourceTests.netfx.cs b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlEventSourceTests.netfx.cs index 267c84407..72c9b0c1b 100644 --- a/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlEventSourceTests.netfx.cs +++ b/test/OpenTelemetry.Instrumentation.Dependencies.Tests/SqlEventSourceTests.netfx.cs @@ -52,7 +52,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests public async Task SuccessfulCommandTest(CommandType commandType, string commandText, bool captureText, bool isFailure = false) { var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddSqlClientDependencyInstrumentation(options => @@ -105,7 +105,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests using FakeBehavingSqlEventSource fakeSqlEventSource = new FakeBehavingSqlEventSource(); var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddSqlClientDependencyInstrumentation(options => @@ -145,7 +145,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests using FakeMisbehavingSqlEventSource fakeSqlEventSource = new FakeMisbehavingSqlEventSource(); var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddSqlClientDependencyInstrumentation(); @@ -162,7 +162,7 @@ namespace OpenTelemetry.Instrumentation.Dependencies.Tests using FakeMisbehavingSqlEventSource fakeSqlEventSource = new FakeMisbehavingSqlEventSource(); var activityProcessor = new Mock(); - using var shutdownSignal = TracerProviderSdk.EnableTracerProvider(b => + using var shutdownSignal = OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddSqlClientDependencyInstrumentation(); diff --git a/test/OpenTelemetry.Instrumentation.GrpcClient.Tests/GrpcClientTests.cs b/test/OpenTelemetry.Instrumentation.GrpcClient.Tests/GrpcClientTests.cs index 015054150..49d738172 100644 --- a/test/OpenTelemetry.Instrumentation.GrpcClient.Tests/GrpcClientTests.cs +++ b/test/OpenTelemetry.Instrumentation.GrpcClient.Tests/GrpcClientTests.cs @@ -56,7 +56,7 @@ namespace OpenTelemetry.Instrumentation.GrpcClient.Tests var parent = new Activity("parent") .Start(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder .AddGrpcClientDependencyInstrumentation() .SetResource(expectedResource) @@ -107,7 +107,7 @@ namespace OpenTelemetry.Instrumentation.GrpcClient.Tests var parent = new Activity("parent") .Start(); - using (TracerProviderSdk.EnableTracerProvider( + using (OpenTelemetrySdk.CreateTracerProvider( (builder) => builder .AddDependencyInstrumentation() // AddDependencyInstrumentation applies both gRPC client and HttpClient instrumentation .AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)))) diff --git a/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/Implementation/RedisProfilerEntryToActivityConverterTests.cs b/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/Implementation/RedisProfilerEntryToActivityConverterTests.cs index 172f0b390..20563900f 100644 --- a/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/Implementation/RedisProfilerEntryToActivityConverterTests.cs +++ b/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/Implementation/RedisProfilerEntryToActivityConverterTests.cs @@ -43,7 +43,7 @@ namespace OpenTelemetry.Instrumentation.StackExchangeRedis.Implementation this.connection = ConnectionMultiplexer.Connect(connectionOptions); - this.sdk = TracerProviderSdk.EnableTracerProvider( + this.sdk = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddRedisInstrumentation(this.connection)); } diff --git a/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/StackExchangeRedisCallsInstrumentationTests.cs b/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/StackExchangeRedisCallsInstrumentationTests.cs index 87545c516..d8d63d8b4 100644 --- a/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/StackExchangeRedisCallsInstrumentationTests.cs +++ b/test/OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/StackExchangeRedisCallsInstrumentationTests.cs @@ -56,13 +56,13 @@ namespace OpenTelemetry.Instrumentation.StackExchangeRedis.Tests using var connection = ConnectionMultiplexer.Connect(connectionOptions); var activityProcessor = new Mock(); - using (TracerProviderSdk.EnableTracerProvider(b => + using (OpenTelemetrySdk.CreateTracerProvider(b => { b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object)); b.AddRedisInstrumentation(connection); })) { - IDatabase db = connection.GetDatabase(); + var db = connection.GetDatabase(); bool set = db.StringSet("key1", value, TimeSpan.FromSeconds(60)); diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs b/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs index d3534cd6f..a19912485 100644 --- a/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs +++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/ScopeManagerShimTests.cs @@ -51,7 +51,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Active_IsNull() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new ScopeManagerShim(tracer); Assert.Null(Activity.Current); @@ -61,7 +61,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Active_IsNotNull() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new ScopeManagerShim(tracer); var openTracingSpan = new SpanShim(tracer.StartSpan(SpanName)); @@ -76,7 +76,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Activate_SpanMustBeShim() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new ScopeManagerShim(tracer); Assert.Throws(() => shim.Activate(new Mock().Object, true)); @@ -85,7 +85,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Activate() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new ScopeManagerShim(tracer); var spanShim = new SpanShim(tracer.StartSpan(SpanName)); diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs index f7294179d..6f781060d 100644 --- a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs +++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanBuilderShimTests.cs @@ -47,7 +47,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void CtorArgumentValidation() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); Assert.Throws(() => new SpanBuilderShim(null, "foo")); Assert.Throws(() => new SpanBuilderShim(tracer, null)); } @@ -55,7 +55,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void IgnoreActiveSpan() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // Add a parent. The shim requires that the ISpan implementation be a SpanShim @@ -73,7 +73,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void StartWithExplicitTimestamp() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); var startTimestamp = DateTimeOffset.Now; @@ -88,7 +88,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void AsChildOf_WithNullSpan() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // Add a null parent @@ -104,7 +104,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void AsChildOf_WithSpan() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // Add a parent. @@ -122,7 +122,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests public void Start_ActivityOperationRootSpanChecks() { // matching root operation name - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo", new List { "foo" }); var spanShim = (SpanShim)shim.Start(); @@ -139,7 +139,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void AsChildOf_MultipleCallsWithSpan() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // Multiple calls @@ -160,7 +160,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void AsChildOf_WithNullSpanContext() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // Add a null parent @@ -176,7 +176,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void AsChildOfWithSpanContext() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // Add a parent @@ -192,7 +192,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void AsChildOf_MultipleCallsWithSpanContext() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // Multiple calls @@ -217,7 +217,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void WithTag_KeyIsSpanKindStringValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); shim.WithTag(global::OpenTracing.Tag.Tags.SpanKind.Key, global::OpenTracing.Tag.Tags.SpanKindClient); @@ -234,7 +234,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void WithTag_KeyIsErrorStringValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); shim.WithTag(global::OpenTracing.Tag.Tags.Error.Key, "true"); @@ -249,7 +249,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void WithTag_KeyIsNullStringValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); shim.WithTag((string)null, "unused"); @@ -264,7 +264,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void WithTag_ValueIsNullStringValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); shim.WithTag("foo", null); @@ -280,7 +280,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void WithTag_KeyIsErrorBoolValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); shim.WithTag(global::OpenTracing.Tag.Tags.Error.Key, true); @@ -295,7 +295,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void WithTag_VariousValueTypes() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); shim.WithTag("foo", "unused"); @@ -316,7 +316,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Start() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanBuilderShim(tracer, "foo"); // build diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs index dcbcc38fb..f7f08a789 100644 --- a/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs +++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/SpanShimTests.cs @@ -53,7 +53,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SpanContextIsNotNull() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); // ISpanContext validation handled in a separate test class @@ -63,7 +63,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void FinishSpan() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); shim.Finish(); @@ -74,7 +74,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void FinishSpanUsingSpecificTimestamp() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); var endTime = DateTimeOffset.UtcNow; @@ -86,7 +86,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetOperationName() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); // parameter validation @@ -99,7 +99,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void GetBaggageItem() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); // parameter validation @@ -111,7 +111,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Log() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); shim.Log("foo"); @@ -125,7 +125,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void LogWithExplicitTimestamp() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); var now = DateTimeOffset.UtcNow; @@ -141,7 +141,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void LogUsingFields() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.Log((IEnumerable>)null)); @@ -172,7 +172,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void LogUsingFieldsWithExplicitTimestamp() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.Log((IEnumerable>)null)); @@ -205,7 +205,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagStringValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag((string)null, "foo")); @@ -220,7 +220,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagBoolValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag((string)null, true)); @@ -242,7 +242,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagIntValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag((string)null, 1)); @@ -257,7 +257,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagDoubleValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag(null, 1D)); @@ -272,7 +272,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagBooleanTagValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag((BooleanTag)null, true)); @@ -294,7 +294,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagStringTagValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag((StringTag)null, "foo")); @@ -309,7 +309,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagIntTagValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag((IntTag)null, 1)); @@ -324,7 +324,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void SetTagIntOrStringTagValue() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new SpanShim(tracer.StartSpan(SpanName)); Assert.Throws(() => shim.SetTag((IntOrStringTag)null, "foo")); diff --git a/test/OpenTelemetry.Shims.OpenTracing.Tests/TracerShimTests.cs b/test/OpenTelemetry.Shims.OpenTracing.Tests/TracerShimTests.cs index d34c7b0b5..2bac270d9 100644 --- a/test/OpenTelemetry.Shims.OpenTracing.Tests/TracerShimTests.cs +++ b/test/OpenTelemetry.Shims.OpenTracing.Tests/TracerShimTests.cs @@ -43,13 +43,13 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests // null context format var tracerMock = new Mock(); - Assert.Throws(() => new TracerShim(TracerProvider.GetTracer("test"), null)); + Assert.Throws(() => new TracerShim(TracerProvider.Default.GetTracer("test"), null)); } [Fact] public void ScopeManager_NotNull() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, new TraceContextFormat()); // Internals of the ScopeManagerShim tested elsewhere @@ -59,7 +59,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void BuildSpan_NotNull() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, new TraceContextFormat()); // Internals of the SpanBuilderShim tested elsewhere @@ -69,7 +69,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Inject_ArgumentValidation() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, new TraceContextFormat()); var spanContextShim = new SpanContextShim(new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.None)); @@ -85,7 +85,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Inject_UnknownFormatIgnored() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, new TraceContextFormat()); var spanContextShim = new SpanContextShim(new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded)); @@ -101,7 +101,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Extract_ArgumentValidation() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, new TraceContextFormat()); Assert.Throws(() => shim.Extract(null, new Mock().Object)); @@ -111,7 +111,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Extract_UnknownFormatIgnored() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, new TraceContextFormat()); var spanContextShim = new SpanContextShim(new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.None)); @@ -127,7 +127,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests [Fact] public void Extract_InvalidTraceParent() { - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, new TraceContextFormat()); var mockCarrier = new Mock(); @@ -159,7 +159,7 @@ namespace OpenTelemetry.Shims.OpenTracing.Tests var format = new TraceContextFormat(); - var tracer = TracerProvider.GetTracer(TracerName); + var tracer = TracerProvider.Default.GetTracer(TracerName); var shim = new TracerShim(tracer, format); // first inject diff --git a/test/OpenTelemetry.Tests/Implementation/Trace/ActivityExtensionsTest.cs b/test/OpenTelemetry.Tests/Implementation/Trace/ActivityExtensionsTest.cs index 24aedbf75..ce4521294 100644 --- a/test/OpenTelemetry.Tests/Implementation/Trace/ActivityExtensionsTest.cs +++ b/test/OpenTelemetry.Tests/Implementation/Trace/ActivityExtensionsTest.cs @@ -29,7 +29,7 @@ namespace OpenTelemetry.Trace.Test [Fact] public void SetStatus() { - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName)); using var source = new ActivitySource(ActivitySourceName); @@ -43,7 +43,7 @@ namespace OpenTelemetry.Trace.Test [Fact] public void SetStatusWithDescription() { - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName)); using var source = new ActivitySource(ActivitySourceName); @@ -59,7 +59,7 @@ namespace OpenTelemetry.Trace.Test [Fact] public void SetCancelledStatus() { - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName)); using var source = new ActivitySource(ActivitySourceName); @@ -73,7 +73,7 @@ namespace OpenTelemetry.Trace.Test [Fact] public void GetStatusWithNoStatusInActivity() { - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName)); using var source = new ActivitySource(ActivitySourceName); @@ -86,7 +86,7 @@ namespace OpenTelemetry.Trace.Test [Fact(Skip = "Activity does not support UpdateTag now. Enable once .NET Activity support SetTag method.")] public void LastSetStatusWins() { - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName)); using var source = new ActivitySource(ActivitySourceName); diff --git a/test/OpenTelemetry.Tests/Implementation/Trace/ActivityListenerSdkTest.cs b/test/OpenTelemetry.Tests/Implementation/Trace/ActivityListenerSdkTest.cs index a14975f35..9d3493265 100644 --- a/test/OpenTelemetry.Tests/Implementation/Trace/ActivityListenerSdkTest.cs +++ b/test/OpenTelemetry.Tests/Implementation/Trace/ActivityListenerSdkTest.cs @@ -39,7 +39,7 @@ namespace OpenTelemetry.Tests.Implementation.Trace { ShouldListenTo = _ => true, GetRequestedDataUsingContext = (ref ActivityCreationOptions options) => - TracerProviderSdk.ComputeActivityDataRequest(options, testSampler), + OpenTelemetry.Trace.OpenTelemetrySdk.ComputeActivityDataRequest(options, testSampler), }; ActivitySource.AddActivityListener(listener); diff --git a/test/OpenTelemetry.Tests/Implementation/Trace/CurrentSpanTests.cs b/test/OpenTelemetry.Tests/Implementation/Trace/CurrentSpanTests.cs index a37690198..87b5a3699 100644 --- a/test/OpenTelemetry.Tests/Implementation/Trace/CurrentSpanTests.cs +++ b/test/OpenTelemetry.Tests/Implementation/Trace/CurrentSpanTests.cs @@ -31,7 +31,7 @@ namespace OpenTelemetry.Trace.Test Activity.DefaultIdFormat = ActivityIdFormat.W3C; Activity.ForceDefaultIdFormat = true; - this.tracer = TracerProvider.GetTracer(null); + this.tracer = TracerProvider.Default.GetTracer(null); } [Fact] diff --git a/test/OpenTelemetry.Tests/Implementation/Trace/Export/BatchingActivityProcessorTests.cs b/test/OpenTelemetry.Tests/Implementation/Trace/Export/BatchingActivityProcessorTests.cs index 0ee686b3a..df5dce70a 100644 --- a/test/OpenTelemetry.Tests/Implementation/Trace/Export/BatchingActivityProcessorTests.cs +++ b/test/OpenTelemetry.Tests/Implementation/Trace/Export/BatchingActivityProcessorTests.cs @@ -89,7 +89,7 @@ namespace OpenTelemetry.Trace.Export.Test using var inMemoryEventListener = new InMemoryEventListener(); var activityExporter = new TestActivityExporter(null, sleepMilliseconds: 5000); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(0), 1); - using (var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using (var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)))) @@ -105,7 +105,7 @@ namespace OpenTelemetry.Trace.Export.Test { var activityExporter = new TestActivityExporter(null); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, 128); - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))); @@ -133,7 +133,7 @@ namespace OpenTelemetry.Trace.Export.Test }); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, TimeSpan.FromMilliseconds(30), DefaultTimeout, 10); - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))); @@ -165,7 +165,7 @@ namespace OpenTelemetry.Trace.Export.Test Thread.Sleep(50); }); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 1, TimeSpan.FromMilliseconds(100), DefaultTimeout, 1); - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))); @@ -195,7 +195,7 @@ namespace OpenTelemetry.Trace.Export.Test }); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, 3); - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))); @@ -229,7 +229,7 @@ namespace OpenTelemetry.Trace.Export.Test int exportCalledCount = 0; var activityExporter = new TestActivityExporter(_ => Interlocked.Increment(ref exportCalledCount)); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, 1); - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .SetSampler(new ParentOrElseSampler(new AlwaysOffSampler())) .AddActivitySource(ActivitySourceName) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))); @@ -257,7 +257,7 @@ namespace OpenTelemetry.Trace.Export.Test var activityExporter = new TestActivityExporter(_ => resetEvent.WaitOne(TimeSpan.FromSeconds(10))); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, 128); - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))); @@ -286,7 +286,7 @@ namespace OpenTelemetry.Trace.Export.Test var activityExporter = new TestActivityExporter(_ => Interlocked.Increment(ref exportCalledCount)); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, batchSize); - using (var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using (var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)))) @@ -332,7 +332,7 @@ namespace OpenTelemetry.Trace.Export.Test using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, batchSize); - using (var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using (var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)))) @@ -374,7 +374,7 @@ namespace OpenTelemetry.Trace.Export.Test int exportCalledCount = 0; var activityExporter = new TestActivityExporter(_ => Interlocked.Increment(ref exportCalledCount)); using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, batchSize); - using (var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using (var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)))) @@ -419,7 +419,7 @@ namespace OpenTelemetry.Trace.Export.Test using var inMemoryEventListener = new InMemoryEventListener(); using (var batchingActivityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, batchSize)) { - using var openTelemetrySdk = TracerProviderSdk.EnableTracerProvider(b => b + using var openTelemetrySdk = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .SetSampler(new AlwaysOnSampler()) .AddProcessorPipeline(pp => pp.AddProcessor(ap => batchingActivityProcessor))); diff --git a/test/OpenTelemetry.Tests/Implementation/Trace/Export/SimpleActivityProcessorTest.cs b/test/OpenTelemetry.Tests/Implementation/Trace/Export/SimpleActivityProcessorTest.cs index 551290a11..0e5e7f7a1 100644 --- a/test/OpenTelemetry.Tests/Implementation/Trace/Export/SimpleActivityProcessorTest.cs +++ b/test/OpenTelemetry.Tests/Implementation/Trace/Export/SimpleActivityProcessorTest.cs @@ -32,13 +32,13 @@ namespace OpenTelemetry.Trace.Export.Test private const string ActivitySourceName = "defaultactivitysource"; private TestActivityExporter activityExporter; - private TracerProviderSdk openTelemetry; + private TracerProvider openTelemetry; private ActivitySource activitySource; public SimpleActivityProcessorTest() { this.activityExporter = new TestActivityExporter(null); - this.openTelemetry = TracerProviderSdk.EnableTracerProvider(b => b + this.openTelemetry = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource(ActivitySourceName) .AddProcessorPipeline(p => p .SetExporter(this.activityExporter) @@ -57,7 +57,7 @@ namespace OpenTelemetry.Trace.Export.Test public void ThrowsInExporter() { this.activityExporter = new TestActivityExporter(_ => throw new ArgumentException("123")); - this.openTelemetry = TracerProviderSdk.EnableTracerProvider(b => b + this.openTelemetry = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource("cijo") .AddProcessorPipeline(p => p .SetExporter(this.activityExporter) @@ -74,7 +74,7 @@ namespace OpenTelemetry.Trace.Export.Test public void ProcessorDoesNotBlockOnExporter() { this.activityExporter = new TestActivityExporter(async _ => await Task.Delay(500)); - this.openTelemetry = TracerProviderSdk.EnableTracerProvider(b => b + this.openTelemetry = OpenTelemetrySdk.CreateTracerProvider(b => b .AddActivitySource("cijo") .AddProcessorPipeline(p => p .SetExporter(this.activityExporter) diff --git a/test/OpenTelemetry.Tests/Implementation/Trace/OpenTelemetrySdkTest.cs b/test/OpenTelemetry.Tests/Implementation/Trace/OpenTelemetrySdkTest.cs index e72c08702..446cd30df 100644 --- a/test/OpenTelemetry.Tests/Implementation/Trace/OpenTelemetrySdkTest.cs +++ b/test/OpenTelemetry.Tests/Implementation/Trace/OpenTelemetrySdkTest.cs @@ -27,9 +27,9 @@ namespace OpenTelemetry.Tests.Implementation.Trace public void ResourceGetsAssociatedWithActivity() { using var activitySource = new ActivitySource(nameof(this.ResourceGetsAssociatedWithActivity)); - var expectedResource = OpenTelemetry.Resources.Resources.CreateServiceResource("ServiceNameAbc"); + var expectedResource = Resources.Resources.CreateServiceResource("ServiceNameAbc"); - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddActivitySource(nameof(this.ResourceGetsAssociatedWithActivity)) .SetResource(expectedResource)); @@ -45,7 +45,7 @@ namespace OpenTelemetry.Tests.Implementation.Trace using var activitySource = new ActivitySource(nameof(this.ResourceGetsAssociatedWithActivity)); var expectedResource = Resource.Empty; - using var openTelemetry = TracerProviderSdk.EnableTracerProvider( + using var openTelemetry = OpenTelemetrySdk.CreateTracerProvider( (builder) => builder.AddActivitySource(nameof(this.ResourceGetsAssociatedWithActivity))); using (var root = activitySource.StartActivity("root"))