Refactor TracerProvider to make configuration easy. (#1027)
* Refactor TracerProvider to make configuration easy. * build break fix * MyExporter change * format * sql build fix * fix * test fix
This commit is contained in:
parent
5f2e8d0cd9
commit
47a6fe7621
|
|
@ -24,12 +24,14 @@ public class Program
|
|||
|
||||
public static void Main()
|
||||
{
|
||||
using var tracerProvider = Sdk.CreateTracerProvider(
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySources(
|
||||
new string[]
|
||||
{
|
||||
"MyCompany.MyProduct.MyLibrary",
|
||||
})
|
||||
.AddMyExporter();
|
||||
.AddMyExporter()
|
||||
.Build();
|
||||
|
||||
using (var activity = MyActivitySource.StartActivity("SayHello"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// <copyright file="TracerProviderExtensions.cs" company="OpenTelemetry Authors">
|
||||
// <copyright file="TracerProviderBuilderExtensions.cs" company="OpenTelemetry Authors">
|
||||
// Copyright The OpenTelemetry Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
@ -16,10 +16,10 @@
|
|||
|
||||
using OpenTelemetry.Trace;
|
||||
|
||||
internal static class TracerProviderExtensions
|
||||
internal static class TracerProviderBuilderExtensions
|
||||
{
|
||||
public static TracerProvider AddMyExporter(this TracerProvider provider)
|
||||
public static TracerProviderBuilder AddMyExporter(this TracerProviderBuilder builder)
|
||||
{
|
||||
return provider?.AddProcessor(new SimpleActivityProcessor(new MyExporter()));
|
||||
return builder?.AddProcessor(new SimpleActivityProcessor(new MyExporter()));
|
||||
}
|
||||
}
|
||||
|
|
@ -25,13 +25,14 @@ public class Program
|
|||
|
||||
public static void Main()
|
||||
{
|
||||
using var tracerProvider = Sdk.CreateTracerProvider(
|
||||
new string[]
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySources(new string[]
|
||||
{
|
||||
"MyCompany.MyProduct.MyLibrary",
|
||||
})
|
||||
.AddProcessor(new MyActivityProcessor("A"))
|
||||
.AddProcessor(new MyActivityProcessor("B"));
|
||||
.AddProcessor(new MyActivityProcessor("B"))
|
||||
.Build();
|
||||
|
||||
using (var activity = MyActivitySource.StartActivity("Foo"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,13 +26,15 @@ public class Program
|
|||
|
||||
public static void Main()
|
||||
{
|
||||
using var tracerProvider = Sdk.CreateTracerProvider(
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySources(
|
||||
new string[]
|
||||
{
|
||||
"MyCompany.MyProduct.MyLibrary",
|
||||
},
|
||||
new MySampler())
|
||||
.AddProcessor(new SimpleActivityProcessor(new ConsoleExporter(new ConsoleExporterOptions())));
|
||||
})
|
||||
.SetSampler(new MySampler())
|
||||
.AddProcessor(new SimpleActivityProcessor(new ConsoleExporter(new ConsoleExporterOptions())))
|
||||
.Build();
|
||||
|
||||
using (var activity = MyActivitySource.StartActivity("SayHello"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,12 +26,14 @@ public class Program
|
|||
|
||||
public static void Main()
|
||||
{
|
||||
using var tracerProvider = Sdk.CreateTracerProvider(
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySources(
|
||||
new string[]
|
||||
{
|
||||
"MyCompany.MyProduct.MyLibrary",
|
||||
})
|
||||
.AddProcessor(new SimpleActivityProcessor(new ConsoleExporter(new ConsoleExporterOptions())));
|
||||
.AddProcessor(new SimpleActivityProcessor(new ConsoleExporter(new ConsoleExporterOptions())))
|
||||
.Build();
|
||||
|
||||
using (var activity = MyActivitySource.StartActivity("SayHello"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,15 +32,15 @@ namespace Examples.AspNet
|
|||
|
||||
protected void Application_Start()
|
||||
{
|
||||
this.openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder
|
||||
this.openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddAspNetInstrumentation()
|
||||
.UseJaegerExporter(c =>
|
||||
.UseJaegerExporter(c =>
|
||||
{
|
||||
c.AgentHost = "localhost";
|
||||
c.AgentPort = 6831;
|
||||
}));
|
||||
})
|
||||
.Build();
|
||||
|
||||
GlobalConfiguration.Configure(WebApiConfig.Register);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,13 +29,12 @@ namespace Examples.Console
|
|||
internal static object Run(ConsoleOptions options)
|
||||
{
|
||||
// Enable TracerProvider for the source "MyCompany.MyProduct.MyWebServer"
|
||||
// and use a single pipeline with a custom MyProcessor, and Console exporter.
|
||||
using var tracerProvider = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("MyCompany.MyProduct.MyWebServer")
|
||||
.SetResource(Resources.CreateServiceResource("MyServiceName"))
|
||||
.UseConsoleExporter(
|
||||
opt => opt.DisplayAsJson = options.DisplayAsJson,
|
||||
(p) => p.AddProcessor((next) => new MyProcessor(next))));
|
||||
// and use a custom MyProcessor, along with Console exporter.
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder().AddActivitySource("MyCompany.MyProduct.MyWebServer")
|
||||
.SetResource(Resources.CreateServiceResource("MyServiceName"))
|
||||
.AddProcessor(new MyProcessor()) // This must be added before ConsoleExporter
|
||||
.UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson)
|
||||
.Build();
|
||||
|
||||
// The above line is required only in applications
|
||||
// which decide to use Open Telemetry.
|
||||
|
|
@ -102,18 +101,6 @@ namespace Examples.Console
|
|||
|
||||
internal class MyProcessor : ActivityProcessor
|
||||
{
|
||||
private ActivityProcessor next;
|
||||
|
||||
public MyProcessor(ActivityProcessor next)
|
||||
{
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
public override void OnEnd(Activity activity)
|
||||
{
|
||||
this.next.OnEnd(activity);
|
||||
}
|
||||
|
||||
public override void OnStart(Activity activity)
|
||||
{
|
||||
if (activity.IsAllDataRequested)
|
||||
|
|
@ -127,18 +114,6 @@ namespace Examples.Console
|
|||
activity.SetTag("customClientTag", "Custom Tag Value for Client");
|
||||
}
|
||||
}
|
||||
|
||||
this.next.OnStart(activity);
|
||||
}
|
||||
|
||||
public override Task ShutdownAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
return this.next.ShutdownAsync(cancellationToken);
|
||||
}
|
||||
|
||||
public override Task ForceFlushAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
return this.next.ForceFlushAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,11 +27,12 @@ namespace Examples.Console
|
|||
{
|
||||
System.Console.WriteLine("Hello World!");
|
||||
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation()
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.SetResource(Resources.CreateServiceResource("http-service-example"))
|
||||
.AddActivitySource("http-client-test")
|
||||
.UseConsoleExporter(opt => opt.DisplayAsJson = false));
|
||||
.UseConsoleExporter(opt => opt.DisplayAsJson = false)
|
||||
.Build();
|
||||
|
||||
var source = new ActivitySource("http-client-test");
|
||||
using (var parent = source.StartActivity("incoming request", ActivityKind.Server))
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@ namespace Examples.Console
|
|||
{
|
||||
// Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient"
|
||||
// and use the Jaeger exporter.
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
builder => builder
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("Samples.SampleServer")
|
||||
.AddActivitySource("Samples.SampleClient")
|
||||
.UseJaegerExporter(o =>
|
||||
|
|
@ -38,7 +37,8 @@ namespace Examples.Console
|
|||
o.ServiceName = "jaeger-test";
|
||||
o.AgentHost = host;
|
||||
o.AgentPort = port;
|
||||
}));
|
||||
})
|
||||
.Build();
|
||||
|
||||
// The above lines are required only in Applications
|
||||
// which decide to use OT.
|
||||
|
|
|
|||
|
|
@ -26,10 +26,11 @@ 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 tracerProvider = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("MyCompany.MyProduct.MyWebServer")
|
||||
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("MyCompany.MyProduct.MyWebServer")
|
||||
.SetResource(Resources.CreateServiceResource("MyServiceName"))
|
||||
.UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson));
|
||||
.UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson)
|
||||
.Build();
|
||||
|
||||
// The above line is required only in applications
|
||||
// which decide to use Open Telemetry.
|
||||
|
|
|
|||
|
|
@ -29,10 +29,11 @@ namespace Examples.Console
|
|||
{
|
||||
// Enable OpenTelemetry for the source "MyCompany.MyProduct.MyWebServer"
|
||||
// and use Console exporter.
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("MyCompany.MyProduct.MyWebServer")
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("MyCompany.MyProduct.MyWebServer")
|
||||
.SetResource(Resources.CreateServiceResource("MyServiceName"))
|
||||
.UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson));
|
||||
.UseConsoleExporter(opt => opt.DisplayAsJson = options.DisplayAsJson)
|
||||
.Build();
|
||||
|
||||
// The above line is required only in applications
|
||||
// which decide to use OpenTelemetry.
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@ namespace Examples.Console
|
|||
{
|
||||
// Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient"
|
||||
// and use OTLP exporter.
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
builder => builder
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("Samples.SampleServer")
|
||||
.AddActivitySource("Samples.SampleClient")
|
||||
.UseOtlpExporter(opt => opt.Endpoint = endpoint));
|
||||
.UseOtlpExporter(opt => opt.Endpoint = endpoint)
|
||||
.Build();
|
||||
|
||||
// The above line is required only in Applications
|
||||
// which decide to use OT.
|
||||
|
|
|
|||
|
|
@ -42,8 +42,7 @@ namespace Examples.Console
|
|||
var connection = ConnectionMultiplexer.Connect("localhost");
|
||||
|
||||
// Configure exporter to export traces to Zipkin
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
builder => builder
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.UseZipkinExporter(o =>
|
||||
{
|
||||
o.ServiceName = "redis-test";
|
||||
|
|
@ -54,7 +53,8 @@ namespace Examples.Console
|
|||
// changing flushinterval from 10s to 5s
|
||||
options.FlushInterval = TimeSpan.FromSeconds(5);
|
||||
})
|
||||
.AddActivitySource("redis-test"));
|
||||
.AddActivitySource("redis-test")
|
||||
.Build();
|
||||
|
||||
ActivitySource activitySource = new ActivitySource("redis-test");
|
||||
|
||||
|
|
|
|||
|
|
@ -34,12 +34,11 @@ namespace Examples.Console
|
|||
// Start the server
|
||||
httpServer.Start();
|
||||
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
builder => builder
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("zpages-test")
|
||||
.UseZPagesExporter(
|
||||
processorConfigure: processor => processor
|
||||
.AddProcessor((next) => zpagesProcessor)));
|
||||
.AddProcessor(zpagesProcessor)
|
||||
.UseZPagesExporter()
|
||||
.Build();
|
||||
|
||||
ActivitySource activitySource = new ActivitySource("zpages-test");
|
||||
|
||||
|
|
|
|||
|
|
@ -33,15 +33,15 @@ namespace Examples.Console
|
|||
|
||||
// Enable OpenTelemetry for the sources "Samples.SampleServer" and "Samples.SampleClient"
|
||||
// and use the Zipkin exporter.
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
builder => builder
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("Samples.SampleServer")
|
||||
.AddActivitySource("Samples.SampleClient")
|
||||
.UseZipkinExporter(o =>
|
||||
{
|
||||
o.ServiceName = "test-zipkin";
|
||||
o.Endpoint = new Uri(zipkinUri);
|
||||
}));
|
||||
})
|
||||
.Build();
|
||||
|
||||
using (var sample = new InstrumentationWithActivitySource())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,24 +26,19 @@ namespace OpenTelemetry.Trace
|
|||
/// </summary>
|
||||
/// <param name="builder"><see cref="TracerProviderBuilder"/> builder to use.</param>
|
||||
/// <param name="configure">Exporter configuration options.</param>
|
||||
/// <param name="processorConfigure">Activity processor configuration.</param>
|
||||
/// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns>
|
||||
public static TracerProviderBuilder UseConsoleExporter(this TracerProviderBuilder builder, Action<ConsoleExporterOptions> configure = null, Action<ActivityProcessorPipelineBuilder> processorConfigure = null)
|
||||
public static TracerProviderBuilder UseConsoleExporter(this TracerProviderBuilder builder, Action<ConsoleExporterOptions> configure = null)
|
||||
{
|
||||
// TODO: Rename to AddConsoleExporter?
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
return builder.AddProcessorPipeline(pipeline =>
|
||||
{
|
||||
var exporterOptions = new ConsoleExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
|
||||
var consoleExporter = new ConsoleExporter(exporterOptions);
|
||||
processorConfigure?.Invoke(pipeline);
|
||||
pipeline.SetExporter(consoleExporter);
|
||||
});
|
||||
var exporterOptions = new ConsoleExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
var consoleExporter = new ConsoleExporter(exporterOptions);
|
||||
return builder.AddProcessor(new SimpleActivityProcessor(consoleExporter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,24 +29,20 @@ namespace OpenTelemetry.Trace
|
|||
/// </summary>
|
||||
/// <param name="builder"><see cref="TracerProviderBuilder"/> builder to use.</param>
|
||||
/// <param name="configure">Exporter configuration options.</param>
|
||||
/// <param name="processorConfigure">Activity processor configuration.</param>
|
||||
/// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns>
|
||||
public static TracerProviderBuilder UseJaegerExporter(this TracerProviderBuilder builder, Action<JaegerExporterOptions> configure = null, Action<ActivityProcessorPipelineBuilder> processorConfigure = null)
|
||||
public static TracerProviderBuilder UseJaegerExporter(this TracerProviderBuilder builder, Action<JaegerExporterOptions> configure = null)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
return builder.AddProcessorPipeline(pipeline =>
|
||||
{
|
||||
var exporterOptions = new JaegerExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
var exporterOptions = new JaegerExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
var jaegerExporter = new JaegerExporter(exporterOptions);
|
||||
|
||||
var activityExporter = new JaegerExporter(exporterOptions);
|
||||
processorConfigure?.Invoke(pipeline);
|
||||
pipeline.SetExporter(activityExporter);
|
||||
});
|
||||
// TODO: Pick Simple vs Batching based on JaegerExporterOptions
|
||||
return builder.AddProcessor(new SimpleActivityProcessor(jaegerExporter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,24 +29,20 @@ namespace OpenTelemetry.Trace
|
|||
/// </summary>
|
||||
/// <param name="builder">Open Telemetry builder to use.</param>
|
||||
/// <param name="configure">Exporter configuration options.</param>
|
||||
/// <param name="processorConfigure">Activity processor configuration.</param>
|
||||
/// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns>
|
||||
public static TracerProviderBuilder UseOtlpExporter(this TracerProviderBuilder builder, Action<OtlpExporterOptions> configure = null, Action<ActivityProcessorPipelineBuilder> processorConfigure = null)
|
||||
public static TracerProviderBuilder UseOtlpExporter(this TracerProviderBuilder builder, Action<OtlpExporterOptions> configure = null)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
return builder.AddProcessorPipeline(pipeline =>
|
||||
{
|
||||
var exporterOptions = new OtlpExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
var exporterOptions = new OtlpExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
var otlpExporter = new OtlpExporter(exporterOptions);
|
||||
|
||||
var activityExporter = new OtlpExporter(exporterOptions);
|
||||
processorConfigure?.Invoke(pipeline);
|
||||
pipeline.SetExporter(activityExporter);
|
||||
});
|
||||
// TODO: Pick Simple vs Batching based on OtlpExporterOptions
|
||||
return builder.AddProcessor(new SimpleActivityProcessor(otlpExporter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,27 +30,22 @@ namespace OpenTelemetry.Trace
|
|||
/// </summary>
|
||||
/// <param name="builder"><see cref="TracerProviderBuilder"/> builder to use.</param>
|
||||
/// <param name="configure">Exporter configuration options.</param>
|
||||
/// <param name="processorConfigure">Activity processor configuration.</param>
|
||||
/// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns>
|
||||
public static TracerProviderBuilder UseZPagesExporter(
|
||||
this TracerProviderBuilder builder,
|
||||
Action<ZPagesExporterOptions> configure = null,
|
||||
Action<ActivityProcessorPipelineBuilder> processorConfigure = null)
|
||||
Action<ZPagesExporterOptions> configure = null)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
return builder.AddProcessorPipeline(pipeline =>
|
||||
{
|
||||
var options = new ZPagesExporterOptions();
|
||||
configure?.Invoke(options);
|
||||
var exporterOptions = new ZPagesExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
var zpagesExporter = new ZPagesExporter(exporterOptions);
|
||||
|
||||
var exporter = new ZPagesExporter(options);
|
||||
processorConfigure?.Invoke(pipeline);
|
||||
pipeline.SetExporter(exporter);
|
||||
});
|
||||
// TODO: Pick Simple vs Batching based on ZipkinExporterOptions
|
||||
return builder.AddProcessor(new SimpleActivityProcessor(zpagesExporter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,24 +29,20 @@ namespace OpenTelemetry.Trace
|
|||
/// </summary>
|
||||
/// <param name="builder"><see cref="TracerProviderBuilder"/> builder to use.</param>
|
||||
/// <param name="configure">Exporter configuration options.</param>
|
||||
/// <param name="processorConfigure">Activity processor configuration.</param>
|
||||
/// <returns>The instance of <see cref="TracerProviderBuilder"/> to chain the calls.</returns>
|
||||
public static TracerProviderBuilder UseZipkinExporter(this TracerProviderBuilder builder, Action<ZipkinExporterOptions> configure = null, Action<ActivityProcessorPipelineBuilder> processorConfigure = null)
|
||||
public static TracerProviderBuilder UseZipkinExporter(this TracerProviderBuilder builder, Action<ZipkinExporterOptions> configure = null)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
return builder.AddProcessorPipeline(pipeline =>
|
||||
{
|
||||
var options = new ZipkinExporterOptions();
|
||||
configure?.Invoke(options);
|
||||
var exporterOptions = new ZipkinExporterOptions();
|
||||
configure?.Invoke(exporterOptions);
|
||||
var zipkinExporter = new ZipkinExporter(exporterOptions);
|
||||
|
||||
var exporter = new ZipkinExporter(options);
|
||||
processorConfigure?.Invoke(pipeline);
|
||||
pipeline.SetExporter(exporter);
|
||||
});
|
||||
// TODO: Pick Simple vs Batching based on ZipkinExporterOptions
|
||||
return builder.AddProcessor(new SimpleActivityProcessor(zipkinExporter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,9 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
/// <returns>The <see cref="IServiceCollection"/> so that additional calls can be chained.</returns>
|
||||
public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Action<TracerProviderBuilder> configure)
|
||||
{
|
||||
services.AddOpenTelemetry(() => Sdk.CreateTracerProvider(configure));
|
||||
var builder = Sdk.CreateTracerProviderBuilder();
|
||||
configure(builder);
|
||||
services.AddOpenTelemetry(() => builder.Build());
|
||||
return services;
|
||||
}
|
||||
|
||||
|
|
@ -59,7 +61,12 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
/// <returns>The <see cref="IServiceCollection"/> so that additional calls can be chained.</returns>
|
||||
public static IServiceCollection AddOpenTelemetry(this IServiceCollection services, Action<IServiceProvider, TracerProviderBuilder> configure)
|
||||
{
|
||||
services.AddOpenTelemetry(s => Sdk.CreateTracerProvider(builder => configure(s, builder)));
|
||||
var builder = Sdk.CreateTracerProviderBuilder();
|
||||
services.AddOpenTelemetry((sp) =>
|
||||
{
|
||||
configure(sp, builder);
|
||||
return builder.Build();
|
||||
});
|
||||
return services;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,15 +16,10 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using OpenTelemetry.Metrics;
|
||||
using OpenTelemetry.Metrics.Export;
|
||||
using OpenTelemetry.Resources;
|
||||
using OpenTelemetry.Trace;
|
||||
using OpenTelemetry.Trace.Internal;
|
||||
using OpenTelemetry.Trace.Samplers;
|
||||
using static OpenTelemetry.Metrics.MeterProviderSdk;
|
||||
|
||||
namespace OpenTelemetry
|
||||
|
|
@ -73,180 +68,13 @@ namespace OpenTelemetry
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// Creates TracerProviderBuilder which should be used to build
|
||||
/// TracerProvider.
|
||||
/// </summary>
|
||||
/// <param name="configureTracerProviderBuilder">Action to configure TracerProviderBuilder.</param>
|
||||
/// <returns>TracerProvider instance, which must be disposed upon shutdown.</returns>
|
||||
public static TracerProvider CreateTracerProvider(Action<TracerProviderBuilder> configureTracerProviderBuilder)
|
||||
/// <returns>TracerProviderBuilder instance, which should be used to build TracerProvider.</returns>
|
||||
public static TracerProviderBuilder CreateTracerProviderBuilder()
|
||||
{
|
||||
var tracerProviderBuilder = new TracerProviderBuilder();
|
||||
configureTracerProviderBuilder?.Invoke(tracerProviderBuilder);
|
||||
|
||||
var tracerProviderSdk = new TracerProviderSdk();
|
||||
Sampler sampler = tracerProviderBuilder.Sampler ?? new ParentOrElseSampler(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 FanOutActivityProcessor(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,
|
||||
|
||||
// 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,
|
||||
|
||||
// This delegate informs ActivitySource about sampling decision when the parent context is an ActivityContext.
|
||||
GetRequestedDataUsingContext = (ref ActivityCreationOptions<ActivityContext> options) => ComputeActivityDataRequest(options, sampler),
|
||||
};
|
||||
|
||||
ActivitySource.AddActivityListener(tracerProviderSdk.ActivityListener);
|
||||
tracerProviderSdk.ActivityProcessor = activityProcessor;
|
||||
return tracerProviderSdk;
|
||||
}
|
||||
|
||||
public static TracerProvider CreateTracerProvider(IEnumerable<string> sources, Sampler sampler = null, Resource resource = null)
|
||||
{
|
||||
var activitySources = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
foreach (var name in sources)
|
||||
{
|
||||
activitySources[name] = true;
|
||||
}
|
||||
|
||||
var provider = new TracerProviderSdk
|
||||
{
|
||||
Resource = resource,
|
||||
Sampler = sampler,
|
||||
};
|
||||
|
||||
provider.ActivityListener = new ActivityListener
|
||||
{
|
||||
// Callback when Activity is started.
|
||||
ActivityStarted = (activity) =>
|
||||
{
|
||||
if (activity.IsAllDataRequested)
|
||||
{
|
||||
activity.SetResource(resource);
|
||||
}
|
||||
|
||||
provider.ActivityProcessor?.OnStart(activity);
|
||||
},
|
||||
|
||||
// Callback when Activity is stopped.
|
||||
ActivityStopped = (activity) =>
|
||||
{
|
||||
provider.ActivityProcessor?.OnEnd(activity);
|
||||
},
|
||||
|
||||
// Function which takes ActivitySource and returns true/false to indicate if it should be subscribed to
|
||||
// or not.
|
||||
ShouldListenTo = (activitySource) => activitySources.ContainsKey(activitySource.Name),
|
||||
|
||||
// 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,
|
||||
|
||||
// This delegate informs ActivitySource about sampling decision when the parent context is an ActivityContext.
|
||||
GetRequestedDataUsingContext = (ref ActivityCreationOptions<ActivityContext> options) => ComputeActivityDataRequest(options, sampler),
|
||||
};
|
||||
|
||||
ActivitySource.AddActivityListener(provider.ActivityListener);
|
||||
|
||||
return provider;
|
||||
}
|
||||
|
||||
internal static ActivityDataRequest ComputeActivityDataRequest(
|
||||
in ActivityCreationOptions<ActivityContext> options,
|
||||
Sampler sampler)
|
||||
{
|
||||
var isRootSpan = /*TODO: Put back once AutoGenerateRootContextTraceId is removed.
|
||||
options.Parent.TraceId == default ||*/ options.Parent.SpanId == default;
|
||||
|
||||
if (sampler != null)
|
||||
{
|
||||
// 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.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;
|
||||
return new TracerProviderBuilder();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,12 +15,14 @@
|
|||
// </copyright>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using OpenTelemetry.Resources;
|
||||
using OpenTelemetry.Trace.Samplers;
|
||||
|
||||
namespace OpenTelemetry.Trace
|
||||
{
|
||||
/// <summary>
|
||||
/// Build TracerProvider pipeline with Sampler, Processors and Exporters.
|
||||
/// Build TracerProvider with Resource, Sampler, Processors and Instrumentation.
|
||||
/// </summary>
|
||||
public class TracerProviderBuilder
|
||||
{
|
||||
|
|
@ -28,41 +30,18 @@ namespace OpenTelemetry.Trace
|
|||
{
|
||||
}
|
||||
|
||||
internal List<ActivityProcessorPipelineBuilder> ProcessingPipelines { get; private set; }
|
||||
|
||||
internal List<InstrumentationFactory> InstrumentationFactories { get; private set; }
|
||||
|
||||
internal Sampler Sampler { get; private set; }
|
||||
|
||||
internal Resource Resource { get; private set; } = Resource.Empty;
|
||||
|
||||
internal HashSet<string> ActivitySourceNames { get; private set; }
|
||||
internal ActivityProcessor ActivityProcessor { get; private set; }
|
||||
|
||||
internal Dictionary<string, bool> ActivitySourceNames { get; private set; }
|
||||
|
||||
internal List<InstrumentationFactory> InstrumentationFactories { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Sets processing and exporting pipeline.
|
||||
/// </summary>
|
||||
/// <param name="configure">Function that configures pipeline.</param>
|
||||
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
|
||||
public TracerProviderBuilder AddProcessorPipeline(Action<ActivityProcessorPipelineBuilder> configure)
|
||||
{
|
||||
if (configure == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(configure));
|
||||
}
|
||||
|
||||
if (this.ProcessingPipelines == null)
|
||||
{
|
||||
this.ProcessingPipelines = new List<ActivityProcessorPipelineBuilder>();
|
||||
}
|
||||
|
||||
var pipelineBuilder = new ActivityProcessorPipelineBuilder();
|
||||
configure(pipelineBuilder);
|
||||
this.ProcessingPipelines.Add(pipelineBuilder);
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configures sampler.
|
||||
/// Sets sampler.
|
||||
/// </summary>
|
||||
/// <param name="sampler">Sampler instance.</param>
|
||||
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
|
||||
|
|
@ -94,10 +73,59 @@ namespace OpenTelemetry.Trace
|
|||
// Today it ignores version.
|
||||
if (this.ActivitySourceNames == null)
|
||||
{
|
||||
this.ActivitySourceNames = new HashSet<string>();
|
||||
this.ActivitySourceNames = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
this.ActivitySourceNames[activitySourceName] = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds given activitysource names to the list of subscribed sources.
|
||||
/// </summary>
|
||||
/// <param name="activitySourceNames">Activity source names.</param>
|
||||
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
|
||||
public TracerProviderBuilder AddActivitySources(IEnumerable<string> activitySourceNames)
|
||||
{
|
||||
// TODO: We need to fix the listening model.
|
||||
// Today it ignores version.
|
||||
if (this.ActivitySourceNames == null)
|
||||
{
|
||||
this.ActivitySourceNames = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
foreach (var activitySourceName in activitySourceNames)
|
||||
{
|
||||
this.ActivitySourceNames[activitySourceName] = true;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds processor to the provider.
|
||||
/// </summary>
|
||||
/// <param name="activityProcessor">Activity processor to add.</param>
|
||||
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
|
||||
public TracerProviderBuilder AddProcessor(ActivityProcessor activityProcessor)
|
||||
{
|
||||
if (this.ActivityProcessor == null)
|
||||
{
|
||||
this.ActivityProcessor = activityProcessor;
|
||||
}
|
||||
else if (this.ActivityProcessor is CompositeActivityProcessor compositeProcessor)
|
||||
{
|
||||
compositeProcessor.AddProcessor(activityProcessor);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ActivityProcessor = new CompositeActivityProcessor(new[]
|
||||
{
|
||||
this.ActivityProcessor,
|
||||
activityProcessor,
|
||||
});
|
||||
}
|
||||
|
||||
this.ActivitySourceNames.Add(activitySourceName.ToUpperInvariant());
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -130,6 +158,108 @@ namespace OpenTelemetry.Trace
|
|||
return this;
|
||||
}
|
||||
|
||||
public TracerProvider Build()
|
||||
{
|
||||
this.Sampler = this.Sampler ?? new ParentOrElseSampler(new AlwaysOnSampler());
|
||||
|
||||
var provider = new TracerProviderSdk
|
||||
{
|
||||
Resource = this.Resource,
|
||||
Sampler = this.Sampler,
|
||||
ActivityProcessor = this.ActivityProcessor,
|
||||
};
|
||||
|
||||
var activitySource = new ActivitySourceAdapter(provider.Sampler, provider.ActivityProcessor, provider.Resource);
|
||||
|
||||
if (this.InstrumentationFactories != null)
|
||||
{
|
||||
foreach (var instrumentation in this.InstrumentationFactories)
|
||||
{
|
||||
provider.Instrumentations.Add(instrumentation.Factory(activitySource));
|
||||
}
|
||||
}
|
||||
|
||||
provider.ActivityListener = new ActivityListener
|
||||
{
|
||||
// Callback when Activity is started.
|
||||
ActivityStarted = (activity) =>
|
||||
{
|
||||
if (activity.IsAllDataRequested)
|
||||
{
|
||||
activity.SetResource(this.Resource);
|
||||
}
|
||||
|
||||
provider.ActivityProcessor?.OnStart(activity);
|
||||
},
|
||||
|
||||
// Callback when Activity is stopped.
|
||||
ActivityStopped = (activity) =>
|
||||
{
|
||||
provider.ActivityProcessor?.OnEnd(activity);
|
||||
},
|
||||
|
||||
// Function which takes ActivitySource and returns true/false to indicate if it should be subscribed to
|
||||
// or not.
|
||||
ShouldListenTo = (activitySource) =>
|
||||
{
|
||||
if (this.ActivitySourceNames == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return this.ActivitySourceNames.ContainsKey(activitySource.Name);
|
||||
},
|
||||
|
||||
// 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,
|
||||
|
||||
// This delegate informs ActivitySource about sampling decision when the parent context is an ActivityContext.
|
||||
GetRequestedDataUsingContext = (ref ActivityCreationOptions<ActivityContext> options) => ComputeActivityDataRequest(options, this.Sampler),
|
||||
};
|
||||
|
||||
ActivitySource.AddActivityListener(provider.ActivityListener);
|
||||
|
||||
return provider;
|
||||
}
|
||||
|
||||
internal static ActivityDataRequest ComputeActivityDataRequest(
|
||||
in ActivityCreationOptions<ActivityContext> options,
|
||||
Sampler sampler)
|
||||
{
|
||||
var isRootSpan = /*TODO: Put back once AutoGenerateRootContextTraceId is removed.
|
||||
options.Parent.TraceId == default ||*/ options.Parent.SpanId == default;
|
||||
|
||||
if (sampler != null)
|
||||
{
|
||||
// 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.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;
|
||||
}
|
||||
|
||||
internal readonly struct InstrumentationFactory
|
||||
{
|
||||
public readonly string Name;
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace OpenTelemetry.Trace
|
|||
}
|
||||
|
||||
this.Instrumentations.Clear();
|
||||
|
||||
(this.Sampler as IDisposable)?.Dispose();
|
||||
this.ActivityProcessor?.Dispose();
|
||||
|
||||
// Shutdown the listener last so that anything created while instrumentation cleans up will still be processed.
|
||||
|
|
|
|||
|
|
@ -31,13 +31,13 @@ namespace Benchmarks
|
|||
|
||||
public OpenTelemetrySdkBenchmarks()
|
||||
{
|
||||
using var openTelemetryAlwaysOnSample = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("AlwaysOnSample").SetSampler(new AlwaysOnSampler()));
|
||||
using var openTelemetryAlwaysOnSample = Sdk.CreateTracerProviderBuilder().AddActivitySource("AlwaysOnSample")
|
||||
.SetSampler(new AlwaysOnSampler()).Build();
|
||||
|
||||
using var openTelemetryAlwaysOffSample = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("AlwaysOffSample").SetSampler(new AlwaysOffSampler()));
|
||||
using var openTelemetryAlwaysOffSample = Sdk.CreateTracerProviderBuilder().AddActivitySource("AlwaysOffSample")
|
||||
.SetSampler(new AlwaysOffSampler()).Build();
|
||||
|
||||
using var openTelemetryNoop = Sdk.CreateTracerProvider(null);
|
||||
using var openTelemetryNoop = Sdk.CreateTracerProviderBuilder().Build();
|
||||
|
||||
this.alwaysSampleTracer = TracerProvider.Default.GetTracer("AlwaysOnSample");
|
||||
this.neverSampleTracer = TracerProvider.Default.GetTracer("AlwaysOffSample");
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace Benchmarks
|
|||
public OpenTelemetrySdkBenchmarksActivity()
|
||||
{
|
||||
// Not configuring pipeline, which will result in default NoopActivityProcessor.
|
||||
var openTel = Sdk.CreateTracerProvider((builder) => builder.AddActivitySource("BenchMark"));
|
||||
var openTel = Sdk.CreateTracerProviderBuilder().AddActivitySource("BenchMark");
|
||||
}
|
||||
|
||||
[Benchmark]
|
||||
|
|
|
|||
|
|
@ -54,10 +54,11 @@ namespace OpenTelemetry.Exporter.Jaeger.Tests
|
|||
endCalled = true;
|
||||
};
|
||||
|
||||
var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.UseJaegerExporter(
|
||||
null, p => p.AddProcessor((next) => testActivityProcessor)));
|
||||
var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.AddProcessor(testActivityProcessor)
|
||||
.UseJaegerExporter()
|
||||
.Build();
|
||||
|
||||
var source = new ActivitySource(ActivitySourceName);
|
||||
var activity = source.StartActivity("Test Jaeger Activity");
|
||||
|
|
|
|||
|
|
@ -73,10 +73,11 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests
|
|||
});
|
||||
|
||||
// This following is done just to set Resource to Activity.
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(sources[0].Name)
|
||||
.AddActivitySource(sources[1].Name)
|
||||
.SetResource(resource));
|
||||
.SetResource(resource)
|
||||
.Build();
|
||||
|
||||
var activities = new List<Activity>();
|
||||
Activity activity = null;
|
||||
|
|
@ -258,10 +259,11 @@ namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests
|
|||
endCalled = true;
|
||||
};
|
||||
|
||||
var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.UseOtlpExporter(
|
||||
null, p => p.AddProcessor((next) => testActivityProcessor)));
|
||||
.AddProcessor(testActivityProcessor)
|
||||
.UseOtlpExporter()
|
||||
.Build();
|
||||
|
||||
var source = new ActivitySource(ActivitySourceName);
|
||||
var activity = source.StartActivity("Test Otlp Activity");
|
||||
|
|
|
|||
|
|
@ -87,10 +87,11 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
endCalled = true;
|
||||
};
|
||||
|
||||
var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.UseZPagesExporter(
|
||||
processorConfigure: p => p.AddProcessor((next) => testActivityProcessor)));
|
||||
.AddProcessor(testActivityProcessor)
|
||||
.UseZPagesExporter()
|
||||
.Build();
|
||||
|
||||
var source = new ActivitySource(ActivitySourceName);
|
||||
var activity = source.StartActivity("Test Zipkin Activity");
|
||||
|
|
@ -128,10 +129,11 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
ZPagesExporter exporter = new ZPagesExporter(options);
|
||||
var zpagesProcessor = new ZPagesProcessor(exporter);
|
||||
|
||||
var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.UseZPagesExporter(
|
||||
processorConfigure: p => p.AddProcessor((next) => zpagesProcessor)));
|
||||
.AddProcessor(zpagesProcessor)
|
||||
.UseZPagesExporter()
|
||||
.Build();
|
||||
|
||||
var source = new ActivitySource(ActivitySourceName);
|
||||
var activity0 = source.StartActivity("Test Zipkin Activity");
|
||||
|
|
|
|||
|
|
@ -157,14 +157,16 @@ namespace OpenTelemetry.Exporter.Zipkin.Tests
|
|||
endCalled = true;
|
||||
};
|
||||
|
||||
var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.AddProcessor(testActivityProcessor)
|
||||
.UseZipkinExporter(
|
||||
o =>
|
||||
{
|
||||
o.ServiceName = "test-zipkin";
|
||||
o.Endpoint = new Uri($"http://{this.testServerHost}:{this.testServerPort}/api/v2/spans?requestId={requestId}");
|
||||
}, p => p.AddProcessor((next) => testActivityProcessor)));
|
||||
})
|
||||
.Build();
|
||||
|
||||
var source = new ActivitySource(ActivitySourceName);
|
||||
var activity = source.StartActivity("Test Zipkin Activity");
|
||||
|
|
|
|||
|
|
@ -137,8 +137,8 @@ namespace OpenTelemetry.Instrumentation.AspNet.Tests
|
|||
var activity = new Activity(ActivityNameAspNet).AddBaggage("Stuff", "123");
|
||||
activity.SetParentId(expectedTraceId, expectedSpanId, ActivityTraceFlags.Recorded);
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using (openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddAspNetInstrumentation(
|
||||
using (openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddAspNetInstrumentation(
|
||||
(options) =>
|
||||
{
|
||||
options.RequestFilter = httpContext =>
|
||||
|
|
@ -162,7 +162,7 @@ namespace OpenTelemetry.Instrumentation.AspNet.Tests
|
|||
}
|
||||
})
|
||||
.SetResource(expectedResource)
|
||||
.AddProcessorPipeline(p => p.AddProcessor(_ => activityProcessor.Object))))
|
||||
.AddProcessor(activityProcessor.Object).Build())
|
||||
{
|
||||
activity.Start();
|
||||
this.fakeAspNetDiagnosticSource.Write(
|
||||
|
|
|
|||
|
|
@ -63,10 +63,11 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests
|
|||
var spanProcessor = new Mock<ActivityProcessor>();
|
||||
void ConfigureTestServices(IServiceCollection services)
|
||||
{
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddAspNetCoreInstrumentation()
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddAspNetCoreInstrumentation()
|
||||
.SetResource(expectedResource)
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)));
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build();
|
||||
}
|
||||
|
||||
// Arrange
|
||||
|
|
@ -105,8 +106,9 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests
|
|||
.WithWebHostBuilder(builder =>
|
||||
builder.ConfigureTestServices(services =>
|
||||
{
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProvider((builder) => builder.AddAspNetCoreInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)));
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProviderBuilder().AddAspNetCoreInstrumentation()
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build();
|
||||
})))
|
||||
{
|
||||
using var client = testFactory.CreateClient();
|
||||
|
|
@ -152,9 +154,10 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests
|
|||
.WithWebHostBuilder(builder =>
|
||||
builder.ConfigureTestServices(services =>
|
||||
{
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddAspNetCoreInstrumentation((opt) => opt.TextFormat = textFormat.Object)
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)));
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddAspNetCoreInstrumentation((opt) => opt.TextFormat = textFormat.Object)
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build();
|
||||
})))
|
||||
{
|
||||
using var client = testFactory.CreateClient();
|
||||
|
|
@ -184,10 +187,10 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests
|
|||
|
||||
void ConfigureTestServices(IServiceCollection services)
|
||||
{
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProvider(
|
||||
(builder) =>
|
||||
builder.AddAspNetCoreInstrumentation((opt) => opt.RequestFilter = (ctx) => ctx.Request.Path != "/api/values/2")
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)));
|
||||
this.openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddAspNetCoreInstrumentation((opt) => opt.RequestFilter = (ctx) => ctx.Request.Path != "/api/values/2")
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build();
|
||||
}
|
||||
|
||||
// Arrange
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests
|
|||
{
|
||||
services.AddSingleton<CallbackMiddleware.CallbackMiddlewareImpl>(new TestCallbackMiddlewareImpl(statusCode, reasonPhrase));
|
||||
services.AddOpenTelemetry((builder) => builder.AddAspNetCoreInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object)));
|
||||
.AddProcessor(spanProcessor.Object));
|
||||
}))
|
||||
.CreateClient())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -84,10 +84,10 @@ namespace OpenTelemetry.Instrumentation.Grpc.Tests
|
|||
.ConfigureServices(serviceCollection =>
|
||||
{
|
||||
this.openTelemetrySdk = Sdk
|
||||
.CreateTracerProvider(
|
||||
(builder) => builder
|
||||
.CreateTracerProviderBuilder()
|
||||
.AddAspNetCoreInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => this.GrpcServerSpanProcessor.Object)));
|
||||
.AddProcessor(this.GrpcServerSpanProcessor.Object)
|
||||
.Build();
|
||||
})
|
||||
.UseStartup<Startup>();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -43,12 +43,12 @@ namespace OpenTelemetry.Instrumentation.Grpc.Tests
|
|||
var parent = new Activity("parent")
|
||||
.Start();
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddGrpcClientInstrumentation()
|
||||
.SetResource(expectedResource)
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
var channel = GrpcChannel.ForAddress(uri);
|
||||
var client = new Greeter.GreeterClient(channel);
|
||||
|
|
@ -95,12 +95,12 @@ namespace OpenTelemetry.Instrumentation.Grpc.Tests
|
|||
var parent = new Activity("parent")
|
||||
.Start();
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddGrpcClientInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddGrpcClientInstrumentation()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
var channel = GrpcChannel.ForAddress(uri);
|
||||
var client = new Greeter.GreeterClient(channel);
|
||||
|
|
|
|||
|
|
@ -90,9 +90,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
}
|
||||
});
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation(o => o.TextFormat = mockTextFormat.Object)
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation(o => o.TextFormat = mockTextFormat.Object)
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
using var c = new HttpClient();
|
||||
await c.SendAsync(request);
|
||||
|
|
@ -143,9 +144,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
parent.TraceStateString = "k1=v1,k2=v2";
|
||||
parent.ActivityTraceFlags = ActivityTraceFlags.Recorded;
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation((opt) => opt.TextFormat = textFormat.Object)
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation((opt) => opt.TextFormat = textFormat.Object)
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
using var c = new HttpClient();
|
||||
await c.SendAsync(request);
|
||||
|
|
@ -173,9 +175,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
{
|
||||
var spanProcessor = new Mock<ActivityProcessor>();
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
using var c = new HttpClient();
|
||||
await c.GetAsync(this.url);
|
||||
|
|
@ -191,9 +194,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
{
|
||||
var spanProcessor = new Mock<ActivityProcessor>();
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
using var c = new HttpClient();
|
||||
await c.GetAsync(this.url);
|
||||
|
|
@ -217,9 +221,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
|
||||
request.Headers.Add("traceparent", "00-0123456789abcdef0123456789abcdef-0123456789abcdef-01");
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
using var c = new HttpClient();
|
||||
await c.SendAsync(request);
|
||||
|
|
@ -232,12 +237,11 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
public async void HttpClientInstrumentationFiltersOutRequests()
|
||||
{
|
||||
var spanProcessor = new Mock<ActivityProcessor>();
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) =>
|
||||
builder.AddHttpClientInstrumentation(
|
||||
(opt) => opt.FilterFunc = (req) => !req.RequestUri.OriginalString.Contains(this.url))
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation(
|
||||
(opt) => opt.FilterFunc = (req) => !req.RequestUri.OriginalString.Contains(this.url))
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
using var c = new HttpClient();
|
||||
await c.GetAsync(this.url);
|
||||
|
|
@ -251,9 +255,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
{
|
||||
var spanProcessor = new Mock<ActivityProcessor>();
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation()
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
using var c = new HttpClient();
|
||||
using var cts = new CancellationTokenSource(TimeSpan.FromMilliseconds(100));
|
||||
|
|
|
|||
|
|
@ -54,10 +54,11 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
|
||||
using (serverLifeTime)
|
||||
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddHttpClientInstrumentation((opt) => opt.SetHttpFlavor = tc.SetHttpFlavor)
|
||||
.SetResource(expectedResource)
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddHttpClientInstrumentation((opt) => opt.SetHttpFlavor = tc.SetHttpFlavor)
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.SetResource(expectedResource)
|
||||
.Build())
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
|||
|
|
@ -59,11 +59,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
public async Task HttpWebRequestInstrumentationInjectsHeadersAsync()
|
||||
{
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddHttpWebRequestInstrumentation();
|
||||
});
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddHttpWebRequestInstrumentation()
|
||||
.Build();
|
||||
|
||||
var request = (HttpWebRequest)WebRequest.Create(this.url);
|
||||
|
||||
|
|
@ -106,11 +105,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
});
|
||||
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddHttpWebRequestInstrumentation(options => options.TextFormat = textFormat.Object);
|
||||
});
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddHttpWebRequestInstrumentation(options => options.TextFormat = textFormat.Object)
|
||||
.Build();
|
||||
|
||||
var request = (HttpWebRequest)WebRequest.Create(this.url);
|
||||
|
||||
|
|
@ -146,11 +144,10 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
public async Task HttpWebRequestInstrumentationBacksOffIfAlreadyInstrumented()
|
||||
{
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddHttpWebRequestInstrumentation();
|
||||
});
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddHttpWebRequestInstrumentation()
|
||||
.Build();
|
||||
|
||||
var request = new HttpRequestMessage
|
||||
{
|
||||
|
|
@ -170,12 +167,11 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
public async Task HttpWebRequestInstrumentationFiltersOutRequests()
|
||||
{
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddHttpWebRequestInstrumentation(
|
||||
c => c.FilterFunc = (req) => !req.RequestUri.OriginalString.Contains(this.url));
|
||||
});
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddHttpWebRequestInstrumentation(
|
||||
c => c.FilterFunc = (req) => !req.RequestUri.OriginalString.Contains(this.url))
|
||||
.Build();
|
||||
|
||||
using var c = new HttpClient();
|
||||
await c.GetAsync(this.url);
|
||||
|
|
|
|||
|
|
@ -47,12 +47,11 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
|
|||
|
||||
var expectedResource = Resources.Resources.CreateServiceResource("test-service");
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.SetResource(expectedResource);
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddHttpWebRequestInstrumentation(options => options.SetHttpFlavor = tc.SetHttpFlavor);
|
||||
});
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.SetResource(expectedResource)
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddHttpWebRequestInstrumentation(options => options.SetHttpFlavor = tc.SetHttpFlavor)
|
||||
.Build();
|
||||
|
||||
tc.Url = HttpTestData.NormalizeValues(tc.Url, host, port);
|
||||
|
||||
|
|
|
|||
|
|
@ -82,15 +82,14 @@ namespace OpenTelemetry.Instrumentation.SqlClient.Tests
|
|||
bool isFailure = false)
|
||||
{
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddSqlClientInstrumentation(options =>
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddSqlClientInstrumentation(options =>
|
||||
{
|
||||
options.SetStoredProcedureCommandName = captureStoredProcedureCommandName;
|
||||
options.SetTextCommandContent = captureTextCommandContent;
|
||||
});
|
||||
});
|
||||
})
|
||||
.Build();
|
||||
|
||||
using SqlConnection sqlConnection = new SqlConnection(SqlConnectionString);
|
||||
|
||||
|
|
@ -137,14 +136,15 @@ namespace OpenTelemetry.Instrumentation.SqlClient.Tests
|
|||
using var sqlCommand = sqlConnection.CreateCommand();
|
||||
|
||||
var spanProcessor = new Mock<ActivityProcessor>();
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddSqlClientInstrumentation(
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddSqlClientInstrumentation(
|
||||
(opt) =>
|
||||
{
|
||||
opt.SetTextCommandContent = captureTextCommandContent;
|
||||
opt.SetStoredProcedureCommandName = captureStoredProcedureCommandName;
|
||||
})
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
var operationId = Guid.NewGuid();
|
||||
sqlCommand.CommandType = commandType;
|
||||
|
|
@ -187,9 +187,10 @@ namespace OpenTelemetry.Instrumentation.SqlClient.Tests
|
|||
using var sqlCommand = sqlConnection.CreateCommand();
|
||||
|
||||
var spanProcessor = new Mock<ActivityProcessor>();
|
||||
using (Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddSqlClientInstrumentation()
|
||||
.AddProcessorPipeline(p => p.AddProcessor(n => spanProcessor.Object))))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddSqlClientInstrumentation()
|
||||
.AddProcessor(spanProcessor.Object)
|
||||
.Build())
|
||||
{
|
||||
var operationId = Guid.NewGuid();
|
||||
sqlCommand.CommandText = "SP_GetOrders";
|
||||
|
|
|
|||
|
|
@ -52,14 +52,13 @@ namespace OpenTelemetry.Instrumentation.SqlClient.Tests
|
|||
public async Task SuccessfulCommandTest(CommandType commandType, string commandText, bool captureText, bool isFailure = false)
|
||||
{
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddSqlClientInstrumentation(options =>
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddSqlClientInstrumentation(options =>
|
||||
{
|
||||
options.SetStoredProcedureCommandName = captureText;
|
||||
});
|
||||
});
|
||||
})
|
||||
.Build();
|
||||
|
||||
using SqlConnection sqlConnection = new SqlConnection(SqlConnectionString);
|
||||
|
||||
|
|
@ -105,15 +104,14 @@ namespace OpenTelemetry.Instrumentation.SqlClient.Tests
|
|||
using FakeBehavingSqlEventSource fakeSqlEventSource = new FakeBehavingSqlEventSource();
|
||||
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddSqlClientInstrumentation(options =>
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddSqlClientInstrumentation(options =>
|
||||
{
|
||||
options.SetStoredProcedureCommandName = captureText;
|
||||
options.EnableConnectionLevelAttributes = enableConnectionLevelAttributes;
|
||||
});
|
||||
});
|
||||
})
|
||||
.Build();
|
||||
|
||||
int objectId = Guid.NewGuid().GetHashCode();
|
||||
|
||||
|
|
@ -145,11 +143,10 @@ namespace OpenTelemetry.Instrumentation.SqlClient.Tests
|
|||
using FakeMisbehavingSqlEventSource fakeSqlEventSource = new FakeMisbehavingSqlEventSource();
|
||||
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddSqlClientInstrumentation();
|
||||
});
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddSqlClientInstrumentation()
|
||||
.Build();
|
||||
|
||||
fakeSqlEventSource.WriteUnknownEventWithNullPayload();
|
||||
|
||||
|
|
@ -164,11 +161,10 @@ namespace OpenTelemetry.Instrumentation.SqlClient.Tests
|
|||
using FakeMisbehavingSqlEventSource fakeSqlEventSource = new FakeMisbehavingSqlEventSource();
|
||||
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using var shutdownSignal = Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddSqlClientInstrumentation();
|
||||
});
|
||||
using var shutdownSignal = Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddSqlClientInstrumentation()
|
||||
.Build();
|
||||
|
||||
fakeSqlEventSource.WriteBeginExecuteEvent("arg1");
|
||||
|
||||
|
|
|
|||
|
|
@ -43,8 +43,9 @@ namespace OpenTelemetry.Instrumentation.StackExchangeRedis.Implementation
|
|||
|
||||
this.connection = ConnectionMultiplexer.Connect(connectionOptions);
|
||||
|
||||
this.sdk = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddRedisInstrumentation(this.connection));
|
||||
this.sdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddRedisInstrumentation(this.connection)
|
||||
.Build();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -55,11 +55,10 @@ namespace OpenTelemetry.Instrumentation.StackExchangeRedis.Tests
|
|||
using var connection = ConnectionMultiplexer.Connect(connectionOptions);
|
||||
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
using (Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddRedisInstrumentation(connection);
|
||||
}))
|
||||
using (Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddRedisInstrumentation(connection)
|
||||
.Build())
|
||||
{
|
||||
var db = connection.GetDatabase();
|
||||
|
||||
|
|
@ -110,11 +109,10 @@ namespace OpenTelemetry.Instrumentation.StackExchangeRedis.Tests
|
|||
|
||||
var activityProcessor = new Mock<ActivityProcessor>();
|
||||
Assert.Throws<ArgumentNullException>(() =>
|
||||
Sdk.CreateTracerProvider(b =>
|
||||
{
|
||||
b.AddProcessorPipeline(c => c.AddProcessor(ap => activityProcessor.Object));
|
||||
b.AddRedisInstrumentation(null);
|
||||
}));
|
||||
Sdk.CreateTracerProviderBuilder()
|
||||
.AddProcessor(activityProcessor.Object)
|
||||
.AddRedisInstrumentation(null)
|
||||
.Build());
|
||||
}
|
||||
|
||||
private static void VerifyActivityData(Activity activity, bool isSet, EndPoint endPoint)
|
||||
|
|
|
|||
|
|
@ -27,8 +27,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void SetStatus()
|
||||
{
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.Build();
|
||||
|
||||
using var source = new ActivitySource(ActivitySourceName);
|
||||
using var activity = source.StartActivity(ActivityName);
|
||||
|
|
@ -41,8 +42,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void SetStatusWithDescription()
|
||||
{
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.Build();
|
||||
|
||||
using var source = new ActivitySource(ActivitySourceName);
|
||||
using var activity = source.StartActivity(ActivityName);
|
||||
|
|
@ -57,8 +59,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void SetCancelledStatus()
|
||||
{
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.Build();
|
||||
|
||||
using var source = new ActivitySource(ActivitySourceName);
|
||||
using var activity = source.StartActivity(ActivityName);
|
||||
|
|
@ -71,8 +74,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void GetStatusWithNoStatusInActivity()
|
||||
{
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.Build();
|
||||
|
||||
using var source = new ActivitySource(ActivitySourceName);
|
||||
using var activity = source.StartActivity(ActivityName);
|
||||
|
|
@ -84,8 +88,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void LastSetStatusWins()
|
||||
{
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.Build();
|
||||
|
||||
using var source = new ActivitySource(ActivitySourceName);
|
||||
using var activity = source.StartActivity(ActivityName);
|
||||
|
|
|
|||
|
|
@ -89,10 +89,11 @@ namespace OpenTelemetry.Trace.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 = Sdk.CreateTracerProvider(b => b
|
||||
using (var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))))
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build())
|
||||
{
|
||||
var activity1 = this.CreateActivity(ActivityName1);
|
||||
} // Force everything to flush out of the processor.
|
||||
|
|
@ -105,10 +106,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
{
|
||||
var activityExporter = new TestActivityExporter(null);
|
||||
using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, 128);
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)));
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build();
|
||||
|
||||
var activity1 = this.CreateActivity(ActivityName1);
|
||||
var activity2 = this.CreateActivity(ActivityName2);
|
||||
|
|
@ -133,10 +135,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
});
|
||||
|
||||
using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, TimeSpan.FromMilliseconds(30), DefaultTimeout, 10);
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build();
|
||||
|
||||
var activities = new List<Activity>();
|
||||
for (int i = 0; i < 20; i++)
|
||||
|
|
@ -165,10 +168,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
Thread.Sleep(50);
|
||||
});
|
||||
using var activityProcessor = new BatchingActivityProcessor(activityExporter, 1, TimeSpan.FromMilliseconds(100), DefaultTimeout, 1);
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build();
|
||||
|
||||
var activities = new List<Activity>();
|
||||
for (int i = 0; i < 20; i++)
|
||||
|
|
@ -195,10 +199,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
});
|
||||
|
||||
using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, 3);
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build();
|
||||
|
||||
var activity1 = this.CreateActivity(ActivityName1);
|
||||
var activity2 = this.CreateActivity(ActivityName1);
|
||||
|
|
@ -229,10 +234,11 @@ namespace OpenTelemetry.Trace.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 = Sdk.CreateTracerProvider(b => b
|
||||
.SetSampler(new ParentOrElseSampler(new AlwaysOffSampler()))
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new ParentOrElseSampler(new AlwaysOffSampler()))
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build();
|
||||
|
||||
var activity1 = this.CreateSampledEndedActivity(ActivityName1);
|
||||
var activity2 = this.CreateNotSampledEndedActivity(ActivityName2);
|
||||
|
|
@ -257,10 +263,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
var activityExporter = new TestActivityExporter(_ => resetEvent.WaitOne(TimeSpan.FromSeconds(10)));
|
||||
using var activityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, 128);
|
||||
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor)));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build();
|
||||
|
||||
var activity = Source.StartActivity("foo");
|
||||
|
||||
|
|
@ -288,10 +295,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
var activityExporter = new TestActivityExporter(_ => Interlocked.Increment(ref exportCalledCount));
|
||||
using var activityProcessor =
|
||||
new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, batchSize);
|
||||
using (var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))))
|
||||
using (var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build())
|
||||
{
|
||||
using var inMemoryEventListener = new InMemoryEventListener();
|
||||
var activities = new List<Activity>();
|
||||
|
|
@ -334,10 +342,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
|
||||
using var activityProcessor =
|
||||
new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, batchSize);
|
||||
using (var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))))
|
||||
using (var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build())
|
||||
{
|
||||
var activities = new List<Activity>();
|
||||
for (int i = 0; i < 100; i++)
|
||||
|
|
@ -376,10 +385,11 @@ namespace OpenTelemetry.Trace.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 = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => activityProcessor))))
|
||||
using (var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(activityProcessor)
|
||||
.Build())
|
||||
{
|
||||
using var inMemoryEventListener = new InMemoryEventListener();
|
||||
var activities = new List<Activity>();
|
||||
|
|
@ -421,10 +431,11 @@ namespace OpenTelemetry.Trace.Test
|
|||
using var inMemoryEventListener = new InMemoryEventListener();
|
||||
using (var batchingActivityProcessor = new BatchingActivityProcessor(activityExporter, 128, DefaultDelay, DefaultTimeout, batchSize))
|
||||
{
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessorPipeline(pp => pp.AddProcessor(ap => batchingActivityProcessor)));
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(batchingActivityProcessor)
|
||||
.Build();
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
activities.Add(this.CreateActivity(i.ToString()));
|
||||
|
|
|
|||
|
|
@ -37,12 +37,12 @@ namespace OpenTelemetry.Trace.Test
|
|||
public SimpleActivityProcessorTest()
|
||||
{
|
||||
this.activityExporter = new TestActivityExporter(null);
|
||||
this.openTelemetry = Sdk.CreateTracerProvider(b => b
|
||||
this.openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.AddProcessorPipeline(p => p
|
||||
.SetExporter(this.activityExporter)
|
||||
.SetExportingProcessor(e => new SimpleActivityProcessor(e)))
|
||||
.SetSampler(new AlwaysOnSampler()));
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(new SimpleActivityProcessor(this.activityExporter))
|
||||
.Build();
|
||||
|
||||
this.activitySource = new ActivitySource(ActivitySourceName);
|
||||
}
|
||||
|
||||
|
|
@ -56,13 +56,13 @@ namespace OpenTelemetry.Trace.Test
|
|||
public void ThrowsInExporter()
|
||||
{
|
||||
this.activityExporter = new TestActivityExporter(_ => throw new ArgumentException("123"));
|
||||
this.openTelemetry = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource("cijo")
|
||||
.AddProcessorPipeline(p => p
|
||||
.SetExporter(this.activityExporter)
|
||||
.SetExportingProcessor(e => new SimpleActivityProcessor(e))));
|
||||
this.openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("random")
|
||||
.SetSampler(new AlwaysOnSampler())
|
||||
.AddProcessor(new SimpleActivityProcessor(this.activityExporter))
|
||||
.Build();
|
||||
|
||||
ActivitySource source = new ActivitySource("cijo");
|
||||
ActivitySource source = new ActivitySource("random");
|
||||
var activity = source.StartActivity("somename");
|
||||
|
||||
// does not throw
|
||||
|
|
@ -73,13 +73,12 @@ namespace OpenTelemetry.Trace.Test
|
|||
public void ProcessorDoesNotBlockOnExporter()
|
||||
{
|
||||
this.activityExporter = new TestActivityExporter(async _ => await Task.Delay(500));
|
||||
this.openTelemetry = Sdk.CreateTracerProvider(b => b
|
||||
.AddActivitySource("cijo")
|
||||
.AddProcessorPipeline(p => p
|
||||
.SetExporter(this.activityExporter)
|
||||
.SetExportingProcessor(e => new SimpleActivityProcessor(e))));
|
||||
this.openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("random")
|
||||
.AddProcessor(new SimpleActivityProcessor(this.activityExporter))
|
||||
.Build();
|
||||
|
||||
ActivitySource source = new ActivitySource("cijo");
|
||||
ActivitySource source = new ActivitySource("random");
|
||||
var activity = source.StartActivity("somename");
|
||||
|
||||
// does not block
|
||||
|
|
|
|||
|
|
@ -29,9 +29,10 @@ namespace OpenTelemetry.Tests.Implementation.Trace
|
|||
using var activitySource = new ActivitySource(nameof(this.ResourceGetsAssociatedWithActivity));
|
||||
var expectedResource = Resources.Resources.CreateServiceResource("ServiceNameAbc");
|
||||
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource(nameof(this.ResourceGetsAssociatedWithActivity))
|
||||
.SetResource(expectedResource));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(nameof(this.ResourceGetsAssociatedWithActivity))
|
||||
.SetResource(expectedResource)
|
||||
.Build();
|
||||
|
||||
using (var root = activitySource.StartActivity("root"))
|
||||
{
|
||||
|
|
@ -45,8 +46,9 @@ namespace OpenTelemetry.Tests.Implementation.Trace
|
|||
using var activitySource = new ActivitySource(nameof(this.ResourceGetsAssociatedWithActivity));
|
||||
var expectedResource = Resource.Empty;
|
||||
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource(nameof(this.ResourceGetsAssociatedWithActivity)));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(nameof(this.ResourceGetsAssociatedWithActivity))
|
||||
.Build();
|
||||
|
||||
using (var root = activitySource.StartActivity("root"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,12 +29,10 @@ namespace OpenTelemetry.Tests.Implementation.Trace
|
|||
{
|
||||
var testSampler = new TestSampler();
|
||||
using var activitySource = new ActivitySource(ActivitySourceName);
|
||||
using var sdk = Sdk.CreateTracerProvider(
|
||||
(tpbuilder) =>
|
||||
{
|
||||
tpbuilder.AddActivitySource(ActivitySourceName);
|
||||
tpbuilder.SetSampler(testSampler);
|
||||
});
|
||||
using var sdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(testSampler)
|
||||
.Build();
|
||||
|
||||
// OpenTelemetry Sdk is expected to set default to W3C.
|
||||
Assert.True(Activity.DefaultIdFormat == ActivityIdFormat.W3C);
|
||||
|
|
@ -107,12 +105,10 @@ namespace OpenTelemetry.Tests.Implementation.Trace
|
|||
{
|
||||
var testSampler = new TestSampler();
|
||||
using var activitySource = new ActivitySource(ActivitySourceName);
|
||||
using var sdk = Sdk.CreateTracerProvider(
|
||||
(tpbuilder) =>
|
||||
{
|
||||
tpbuilder.AddActivitySource(ActivitySourceName);
|
||||
tpbuilder.SetSampler(testSampler);
|
||||
});
|
||||
using var sdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource(ActivitySourceName)
|
||||
.SetSampler(testSampler)
|
||||
.Build();
|
||||
|
||||
testSampler.DesiredSamplingResult = new SamplingResult(true);
|
||||
using (var activity = activitySource.StartActivity("root"))
|
||||
|
|
|
|||
|
|
@ -59,8 +59,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartRootSpan_BadArgs_NullSpanName()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var span1 = this.tracer.StartRootSpan(null);
|
||||
Assert.Null(span1.Activity.DisplayName);
|
||||
|
|
@ -75,8 +76,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartSpan_BadArgs_NullSpanName()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var span1 = this.tracer.StartSpan(null);
|
||||
Assert.Null(span1.Activity.DisplayName);
|
||||
|
|
@ -91,8 +93,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartActiveSpan_BadArgs_NullSpanName()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var span1 = this.tracer.StartActiveSpan(null);
|
||||
Assert.Null(span1.Activity.DisplayName);
|
||||
|
|
@ -107,8 +110,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartSpan_FromParent_BadArgs_NullSpanName()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var span1 = this.tracer.StartSpan(null, SpanKind.Client, TelemetrySpan.NoopInstance);
|
||||
Assert.Null(span1.Activity.DisplayName);
|
||||
|
|
@ -120,8 +124,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartSpan_FromParentContext_BadArgs_NullSpanName()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var blankContext = default(SpanContext);
|
||||
|
||||
|
|
@ -135,8 +140,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartActiveSpan_FromParent_BadArgs_NullSpanName()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var span1 = this.tracer.StartActiveSpan(null, SpanKind.Client, TelemetrySpan.NoopInstance);
|
||||
Assert.Null(span1.Activity.DisplayName);
|
||||
|
|
@ -148,8 +154,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartActiveSpan_FromParentContext_BadArgs_NullSpanName()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var blankContext = default(SpanContext);
|
||||
|
||||
|
|
@ -163,8 +170,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void Tracer_StartActiveSpan_CreatesActiveSpan()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var span1 = this.tracer.StartActiveSpan("Test");
|
||||
Assert.Equal(span1.Activity.SpanId, this.tracer.CurrentSpan.Context.SpanId);
|
||||
|
|
@ -186,16 +194,18 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void GetCurrentSpanBlank()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
Assert.False(this.tracer.CurrentSpan.Context.IsValid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetCurrentSpanBlankWontThrowOnEnd()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
var current = this.tracer.CurrentSpan;
|
||||
current.End();
|
||||
}
|
||||
|
|
@ -203,8 +213,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void GetCurrentSpan()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
|
||||
var span = this.tracer.StartSpan("foo");
|
||||
this.tracer.WithSpan(span);
|
||||
|
|
@ -216,8 +227,9 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void CreateSpan_Sampled()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(
|
||||
(builder) => builder.AddActivitySource("tracername"));
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.Build();
|
||||
var span = this.tracer.StartSpan("foo");
|
||||
Assert.True(span.IsRecording);
|
||||
}
|
||||
|
|
@ -225,9 +237,10 @@ namespace OpenTelemetry.Trace.Test
|
|||
[Fact]
|
||||
public void CreateSpan_NotSampled()
|
||||
{
|
||||
using var openTelemetry = Sdk.CreateTracerProvider(b => b
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddActivitySource("tracername")
|
||||
.SetSampler(new AlwaysOffSampler()));
|
||||
.SetSampler(new AlwaysOffSampler())
|
||||
.Build();
|
||||
|
||||
var span = this.tracer.StartSpan("foo");
|
||||
Assert.False(span.IsRecording);
|
||||
|
|
|
|||
Loading…
Reference in New Issue