Removed AddExporter API for 1.4 release. (#3908)

Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
This commit is contained in:
Mikel Blanchard 2022-11-17 09:30:37 -08:00 committed by GitHub
parent 459e2d7fad
commit bf95a54901
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 23 additions and 480 deletions

View File

@ -241,19 +241,6 @@ var tracerProvider = Sdk.CreateTracerProviderBuilder()
.Build();
```
To make exporter registration easier an `AddExporter` extension is also provided
(as of 1.4.0). The snippet below shows how to add an export processor using
`AddExporter` to the provider before it is built.
```csharp
using OpenTelemetry;
using OpenTelemetry.Trace;
var tracerProvider = Sdk.CreateTracerProviderBuilder()
.AddExporter<MyExporter>(ExportProcessorType.Batch)
.Build();
```
It is also common for exporters to provide their own extensions to simplify
registration. The snippet below shows how to add the
[JaegerExporter](../../../src/OpenTelemetry.Exporter.Jaeger/README.md) to the
@ -372,25 +359,25 @@ injection](https://learn.microsoft.com/dotnet/core/extensions/dependency-injecti
### Dependency injection examples
For the below examples imagine an exporter with this constructor:
For the below examples imagine a processor with this constructor:
```csharp
public class MyCustomExporter : BaseExporter<Activity>
public class MyCustomProcessor : BaseProcessor<Activity>
{
public MyCustomExporter(MyCustomService myCustomService)
public MyCustomProcessor(MyCustomService myCustomService)
{
// Implementation not important
}
}
```
We want to inject `MyCustomService` dependency into our `MyCustomExporter`
We want to inject `MyCustomService` dependency into our `MyCustomProcessor`
instance.
#### Using Sdk.CreateTracerProviderBuilder()
To register `MyCustomExporter` and `MyCustomService` we can use the
`ConfigureServices` and `AddExporter` methods:
To register `MyCustomProcessor` and `MyCustomService` we can use the
`ConfigureServices` and `AddProcessor` methods:
```csharp
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
@ -398,7 +385,7 @@ using var tracerProvider = Sdk.CreateTracerProviderBuilder()
{
services.AddSingleton<MyCustomService>();
})
.AddExporter<MyCustomExporter>(ExportProcessorType.Batch)
.AddProcessor<MyCustomProcessor>()
.Build();
```
@ -425,7 +412,7 @@ var appBuilder = WebApplication.CreateBuilder(args);
appBuilder.Services.AddSingleton<MyCustomService>();
appBuilder.Services.AddOpenTelemetryTracing(builder => builder
.AddExporter<MyCustomExporter>(ExportProcessorType.Batch));
.AddProcessor<MyCustomProcessor>();
```
When using the `AddOpenTelemetryTracing` method the `TracerProvider` does not
@ -444,9 +431,6 @@ shutdown.
### Dependency injection `TracerProviderBuilder` extension method reference
* `AddExporter<T>`: Adds an export processor for the type `T` (must derive from
`BaseExporter<Activity>`) into the `TracerProvider`.
* `AddInstrumentation<T>`: Adds instrumentation of type `T` into the
`TracerProvider`.

View File

@ -442,9 +442,7 @@ namespace OpenTelemetry.Trace
if (configureBatchProcessorOptions != null)
{
// Support configuration through Options API.
services.Configure<ExportActivityProcessorOptions>(
name,
o => configureBatchProcessorOptions(o.BatchExportProcessorOptions));
services.Configure(name, configureBatchProcessorOptions);
}
// Register custom service as a singleton.
@ -454,17 +452,22 @@ namespace OpenTelemetry.Trace
builder.ConfigureBuilder((sp, builder) =>
{
// Retrieve MyExporterOptions instance using name.
var options = sp.GetRequiredService<IOptionsMonitor<MyExporterOptions>>().Get(name);
var exporterOptions = serviceProvider.GetRequiredService<IOptionsMonitor<MyExporterOptions>>().Get(name);
// Retrieve BatchExportActivityProcessorOptions instance using name.
var batchOptions = serviceProvider.GetRequiredService<IOptionsMonitor<BatchExportActivityProcessorOptions>>().Get(name);
// Retrieve MyCustomService singleton.
var myCustomService = sp.GetRequiredService<MyCustomService>();
// Registers MyCustomExporter with a batch processor.
builder.AddExporter(
ExportProcessorType.Batch,
new MyCustomExporter(options, myCustomService),
name,
configure: null);
builder.AddProcessor(
new BatchActivityExportProcessor(
new MyCustomExporter(exporterOptions, myCustomService),
batchOptions.MaxQueueSize,
batchOptions.ScheduledDelayMilliseconds,
batchOptions.ExporterTimeoutMilliseconds,
batchOptions.MaxExportBatchSize));
});
// Return builder for call chaining.

View File

@ -22,24 +22,12 @@ static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddInstrumentation<T
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddReader<T>(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Metrics.MeterProviderBuilder!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureServices(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
OpenTelemetry.Trace.SamplingResult.TraceStateString.get -> string?
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, string! traceStateString) -> void
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string!, object!>>? attributes, string? traceStateString) -> void
*REMOVED*static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure = null) -> Microsoft.Extensions.Logging.ILoggingBuilder!
OpenTelemetry.Trace.ExportActivityProcessorOptions
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.get -> OpenTelemetry.Trace.BatchExportActivityProcessorOptions!
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.set -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportActivityProcessorOptions() -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.set -> void
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddInstrumentation<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Trace.TracerProviderBuilder!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!

View File

@ -22,24 +22,12 @@ static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddInstrumentation<T
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddReader<T>(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Metrics.MeterProviderBuilder!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureServices(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
OpenTelemetry.Trace.SamplingResult.TraceStateString.get -> string?
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, string! traceStateString) -> void
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string!, object!>>? attributes, string? traceStateString) -> void
*REMOVED*static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure = null) -> Microsoft.Extensions.Logging.ILoggingBuilder!
OpenTelemetry.Trace.ExportActivityProcessorOptions
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.get -> OpenTelemetry.Trace.BatchExportActivityProcessorOptions!
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.set -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportActivityProcessorOptions() -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.set -> void
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddInstrumentation<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Trace.TracerProviderBuilder!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!

View File

@ -22,24 +22,12 @@ static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddInstrumentation<T
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddReader<T>(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Metrics.MeterProviderBuilder!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureServices(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
OpenTelemetry.Trace.SamplingResult.TraceStateString.get -> string?
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, string! traceStateString) -> void
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string!, object!>>? attributes, string? traceStateString) -> void
*REMOVED*static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure = null) -> Microsoft.Extensions.Logging.ILoggingBuilder!
OpenTelemetry.Trace.ExportActivityProcessorOptions
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.get -> OpenTelemetry.Trace.BatchExportActivityProcessorOptions!
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.set -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportActivityProcessorOptions() -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.set -> void
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddInstrumentation<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Trace.TracerProviderBuilder!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!

View File

@ -22,24 +22,12 @@ static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddInstrumentation<T
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.AddReader<T>(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Metrics.MeterProviderBuilder!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Metrics.MeterProviderBuilderExtensions.ConfigureServices(this OpenTelemetry.Metrics.MeterProviderBuilder! meterProviderBuilder, System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection!>! configure) -> OpenTelemetry.Metrics.MeterProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, string? name, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>? configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
OpenTelemetry.Trace.SamplingResult.TraceStateString.get -> string?
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, string! traceStateString) -> void
OpenTelemetry.Trace.SamplingResult.SamplingResult(OpenTelemetry.Trace.SamplingDecision decision, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string!, object!>>? attributes, string? traceStateString) -> void
*REMOVED*static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure = null) -> Microsoft.Extensions.Logging.ILoggingBuilder!
OpenTelemetry.Trace.ExportActivityProcessorOptions
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.get -> OpenTelemetry.Trace.BatchExportActivityProcessorOptions!
OpenTelemetry.Trace.ExportActivityProcessorOptions.BatchExportProcessorOptions.set -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportActivityProcessorOptions() -> void
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.get -> OpenTelemetry.ExportProcessorType
OpenTelemetry.Trace.ExportActivityProcessorOptions.ExportProcessorType.set -> void
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static Microsoft.Extensions.Logging.OpenTelemetryLoggingExtensions.AddOpenTelemetry(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, System.Action<OpenTelemetry.Logs.OpenTelemetryLoggerOptions!>? configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, OpenTelemetry.BaseExporter<System.Diagnostics.Activity!>! exporter, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddExporter<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, OpenTelemetry.ExportProcessorType exportProcessorType, System.Action<OpenTelemetry.Trace.ExportActivityProcessorOptions!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddInstrumentation<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.ConfigureBuilder(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, System.Action<System.IServiceProvider!, OpenTelemetry.Trace.TracerProviderBuilder!>! configure) -> OpenTelemetry.Trace.TracerProviderBuilder!

View File

@ -42,7 +42,6 @@ internal static class ProviderBuilderServiceCollectionExtensions
services.AddOpenTelemetryProviderBuilderServices();
services.TryAddSingleton<TracerProviderBuilderState>();
services.RegisterOptionsFactory(configuration => new ExportActivityProcessorOptions(configuration));
services.RegisterOptionsFactory(configuration => new BatchExportActivityProcessorOptions(configuration));
return services;

View File

@ -20,7 +20,6 @@ using System;
using System.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using OpenTelemetry.Internal;
using OpenTelemetry.Resources;
@ -123,49 +122,6 @@ namespace OpenTelemetry.Trace
return this;
}
internal TracerProviderBuilder AddExporter<T>(ExportProcessorType exportProcessorType, string? name, Action<ExportActivityProcessorOptions>? configure)
where T : BaseExporter<Activity>
{
name ??= Options.DefaultName;
this.TryAddSingleton<T>();
if (configure != null)
{
this.ConfigureServices(services =>
{
services.Configure(name, configure);
});
}
this.ConfigureState((sp, state)
=> state.AddProcessor(
BuildExportProcessor(exportProcessorType, sp.GetRequiredService<IOptionsMonitor<ExportActivityProcessorOptions>>().Get(name), sp.GetRequiredService<T>())));
return this;
}
internal TracerProviderBuilder AddExporter(ExportProcessorType exportProcessorType, BaseExporter<Activity> exporter, string? name, Action<ExportActivityProcessorOptions>? configure)
{
Guard.ThrowIfNull(exporter);
name ??= Options.DefaultName;
if (configure != null)
{
this.ConfigureServices(services =>
{
services.Configure(name, configure);
});
}
this.ConfigureState((sp, state)
=> state.AddProcessor(
BuildExportProcessor(exportProcessorType, sp.GetRequiredService<IOptionsMonitor<ExportActivityProcessorOptions>>().Get(name), exporter)));
return this;
}
internal TracerProviderBuilder AddInstrumentation<T>()
where T : class
{
@ -298,29 +254,6 @@ namespace OpenTelemetry.Trace
return new TracerProviderSdk(serviceProvider, ownsServiceProvider: true);
}
private static BaseProcessor<Activity> BuildExportProcessor(
ExportProcessorType exportProcessorType,
ExportActivityProcessorOptions processorOptions,
BaseExporter<Activity> exporter)
{
switch (exportProcessorType)
{
case ExportProcessorType.Simple:
return new SimpleActivityExportProcessor(exporter);
case ExportProcessorType.Batch:
var batchOptions = processorOptions.BatchExportProcessorOptions;
return new BatchActivityExportProcessor(
exporter,
batchOptions.MaxQueueSize,
batchOptions.ScheduledDelayMilliseconds,
batchOptions.ExporterTimeoutMilliseconds,
batchOptions.MaxExportBatchSize);
default:
throw new NotSupportedException($"ExportProcessorType '{exportProcessorType}' is not supported.");
}
}
private TracerProviderBuilder AddInstrumentation<T>(Func<IServiceProvider, T> instrumentationFactory)
where T : class
{

View File

@ -19,7 +19,6 @@
using System;
using System.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
using OpenTelemetry.Internal;
using OpenTelemetry.Resources;
namespace OpenTelemetry.Trace
@ -156,128 +155,6 @@ namespace OpenTelemetry.Trace
return tracerProviderBuilder;
}
/// <summary>
/// Adds an exporter to the provider.
/// </summary>
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
/// <param name="exportProcessorType"><see cref="ExportProcessorType"/>.</param>
/// <param name="exporter">Activity exporter to add.</param>
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder AddExporter(
this TracerProviderBuilder tracerProviderBuilder,
ExportProcessorType exportProcessorType,
BaseExporter<Activity> exporter)
=> AddExporter(tracerProviderBuilder, exportProcessorType, exporter, name: null, configure: null);
/// <summary>
/// Adds an exporter to the provider.
/// </summary>
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
/// <param name="exportProcessorType"><see cref="ExportProcessorType"/>.</param>
/// <param name="exporter">Activity exporter to add.</param>
/// <param name="configure">Callback action to configure <see
/// cref="ExportActivityProcessorOptions"/>.</param>
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder AddExporter(
this TracerProviderBuilder tracerProviderBuilder,
ExportProcessorType exportProcessorType,
BaseExporter<Activity> exporter,
Action<ExportActivityProcessorOptions> configure)
{
Guard.ThrowIfNull(configure);
return AddExporter(tracerProviderBuilder, exportProcessorType, exporter, name: null, configure);
}
/// <summary>
/// Adds an exporter to the provider.
/// </summary>
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
/// <param name="exportProcessorType"><see cref="ExportProcessorType"/>.</param>
/// <param name="exporter">Activity exporter to add.</param>
/// <param name="name">Optional name which is used when retrieving options.</param>
/// <param name="configure">Optional callback action to configure <see
/// cref="ExportActivityProcessorOptions"/>.</param>
/// <returns>Returns <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder AddExporter(
this TracerProviderBuilder tracerProviderBuilder,
ExportProcessorType exportProcessorType,
BaseExporter<Activity> exporter,
string? name,
Action<ExportActivityProcessorOptions>? configure)
{
if (tracerProviderBuilder is TracerProviderBuilderBase tracerProviderBuilderBase)
{
tracerProviderBuilderBase.AddExporter(exportProcessorType, exporter, name, configure);
}
return tracerProviderBuilder;
}
/// <summary>
/// Adds an exporter to the provider which will be retrieved using dependency injection.
/// </summary>
/// <remarks><inheritdoc cref="AddExporter{T}(TracerProviderBuilder, ExportProcessorType, string?, Action{ExportActivityProcessorOptions}?)" path="/remarks"/></remarks>
/// <typeparam name="T">Exporter type.</typeparam>
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
/// <param name="exportProcessorType"><see cref="ExportProcessorType"/>.</param>
/// <returns>The supplied <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder AddExporter<T>(
this TracerProviderBuilder tracerProviderBuilder,
ExportProcessorType exportProcessorType)
where T : BaseExporter<Activity>
=> AddExporter<T>(tracerProviderBuilder, exportProcessorType, name: null, configure: null);
/// <summary>
/// Adds an exporter to the provider which will be retrieved using dependency injection.
/// </summary>
/// <remarks><inheritdoc cref="AddExporter{T}(TracerProviderBuilder, ExportProcessorType, string?, Action{ExportActivityProcessorOptions}?)" path="/remarks"/></remarks>
/// <typeparam name="T">Exporter type.</typeparam>
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
/// <param name="exportProcessorType"><see cref="ExportProcessorType"/>.</param>
/// <param name="configure">Callback action to configure <see
/// cref="ExportActivityProcessorOptions"/>.</param>
/// <returns>The supplied <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder AddExporter<T>(
this TracerProviderBuilder tracerProviderBuilder,
ExportProcessorType exportProcessorType,
Action<ExportActivityProcessorOptions> configure)
where T : BaseExporter<Activity>
{
Guard.ThrowIfNull(configure);
return AddExporter<T>(tracerProviderBuilder, exportProcessorType, name: null, configure);
}
/// <summary>
/// Adds an exporter to the provider which will be retrieved using dependency injection.
/// </summary>
/// <remarks>
/// Note: The type specified by <typeparamref name="T"/> will be
/// registered as a singleton service into application services.
/// </remarks>
/// <typeparam name="T">Exporter type.</typeparam>
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
/// <param name="exportProcessorType"><see cref="ExportProcessorType"/>.</param>
/// <param name="name">Optional name which is used when retrieving options.</param>
/// <param name="configure">Optional callback action to configure <see
/// cref="ExportActivityProcessorOptions"/>.</param>
/// <returns>The supplied <see cref="TracerProviderBuilder"/> for chaining.</returns>
public static TracerProviderBuilder AddExporter<T>(
this TracerProviderBuilder tracerProviderBuilder,
ExportProcessorType exportProcessorType,
string? name,
Action<ExportActivityProcessorOptions>? configure)
where T : BaseExporter<Activity>
{
if (tracerProviderBuilder is TracerProviderBuilderBase tracerProviderBuilderBase)
{
tracerProviderBuilderBase.AddExporter<T>(exportProcessorType, name, configure);
}
return tracerProviderBuilder;
}
/// <summary>
/// Adds instrumentation to the provider.
/// </summary>

View File

@ -1,62 +0,0 @@
// <copyright file="ExportActivityProcessorOptions.cs" company="OpenTelemetry Authors">
// 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.
// </copyright>
#nullable enable
using Microsoft.Extensions.Configuration;
using OpenTelemetry.Internal;
namespace OpenTelemetry.Trace;
/// <summary>
/// Options for configuring either a <see cref="SimpleActivityExportProcessor"/> or <see cref="BatchActivityExportProcessor"/>.
/// </summary>
public class ExportActivityProcessorOptions
{
private BatchExportActivityProcessorOptions batchExportProcessorOptions;
/// <summary>
/// Initializes a new instance of the <see cref="ExportActivityProcessorOptions"/> class.
/// </summary>
public ExportActivityProcessorOptions()
: this(new ConfigurationBuilder().AddEnvironmentVariables().Build())
{
}
internal ExportActivityProcessorOptions(IConfiguration configuration)
{
this.batchExportProcessorOptions = new BatchExportActivityProcessorOptions(configuration);
}
/// <summary>
/// Gets or sets the export processor type to be used. The default value is <see cref="ExportProcessorType.Batch"/>.
/// </summary>
public ExportProcessorType ExportProcessorType { get; set; }
/// <summary>
/// Gets or sets the batch export options. Ignored unless <see cref="ExportProcessorType"/> is <see cref="ExportProcessorType.Batch"/>.
/// </summary>
public BatchExportActivityProcessorOptions BatchExportProcessorOptions
{
get => this.batchExportProcessorOptions;
set
{
Guard.ThrowIfNull(value);
this.batchExportProcessorOptions = value;
}
}
}

View File

@ -267,7 +267,7 @@ namespace OpenTelemetry.Exporter.Jaeger.Tests
var jaegerTraceExporter = new JaegerExporter(new JaegerExporterOptions());
tracerProviderBuilder.AddExporter(ExportProcessorType.Batch, jaegerTraceExporter);
tracerProviderBuilder.AddProcessor(new BatchActivityExportProcessor(jaegerTraceExporter));
using var provider = tracerProviderBuilder.Build();

View File

@ -319,7 +319,7 @@ namespace OpenTelemetry.Exporter.Zipkin.Tests
var zipkinExporter = new ZipkinExporter(new ZipkinExporterOptions());
tracerProviderBuilder.AddExporter(ExportProcessorType.Batch, zipkinExporter);
tracerProviderBuilder.AddProcessor(new BatchActivityExportProcessor(zipkinExporter));
using var provider = tracerProviderBuilder.Build();

View File

@ -62,7 +62,7 @@ namespace OpenTelemetry.Trace.Tests
}
[Fact]
public void ExportActivityProcessorOptions_UsingIConfiguration()
public void BatchExportProcessorOptions_UsingIConfiguration()
{
var values = new Dictionary<string, string>()
{
@ -76,13 +76,6 @@ namespace OpenTelemetry.Trace.Tests
.AddInMemoryCollection(values)
.Build();
var parentOptions = new ExportActivityProcessorOptions(configuration);
Assert.Equal(1, parentOptions.BatchExportProcessorOptions.MaxQueueSize);
Assert.Equal(2, parentOptions.BatchExportProcessorOptions.MaxExportBatchSize);
Assert.Equal(3, parentOptions.BatchExportProcessorOptions.ExporterTimeoutMilliseconds);
Assert.Equal(4, parentOptions.BatchExportProcessorOptions.ScheduledDelayMilliseconds);
var options = new BatchExportActivityProcessorOptions(configuration);
Assert.Equal(1, options.MaxQueueSize);

View File

@ -21,7 +21,6 @@ using System.Linq;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using OpenTelemetry.Resources;
using Xunit;
@ -294,141 +293,6 @@ namespace OpenTelemetry.Trace.Tests
Assert.Contains(provider.Resource.Attributes, kvp => kvp.Key == "key2" && (string)kvp.Value == "value2");
}
[Fact]
public void AddExporterTest()
{
var builder = Sdk.CreateTracerProviderBuilder();
builder.AddExporter(ExportProcessorType.Simple, new MyExporter());
builder.AddExporter<MyExporter>(ExportProcessorType.Batch);
using var provider = builder.Build() as TracerProviderSdk;
Assert.NotNull(provider);
var processor = provider.Processor as CompositeProcessor<Activity>;
Assert.NotNull(processor);
var firstProcessor = processor.Head.Value;
var secondProcessor = processor.Head.Next?.Value;
Assert.True(firstProcessor is SimpleActivityExportProcessor simpleProcessor && simpleProcessor.Exporter is MyExporter);
Assert.True(secondProcessor is BatchActivityExportProcessor batchProcessor && batchProcessor.Exporter is MyExporter);
}
[Fact]
public void AddExporterWithOptionsTest()
{
int allOptionsInvocations = 0;
int exporter1Invocations = 0;
int exporter2Invocations = 0;
var builder = Sdk.CreateTracerProviderBuilder();
builder.ConfigureServices(services =>
{
services.ConfigureAll<ExportActivityProcessorOptions>(options =>
{
// Note: This fires for exporter1 & exporter2.
allOptionsInvocations++;
options.BatchExportProcessorOptions.MaxExportBatchSize = 18;
});
});
builder.AddExporter(
ExportProcessorType.Simple,
new MyExporter(),
"exporter1",
options =>
{
exporter1Invocations++;
Assert.Equal(18, options.BatchExportProcessorOptions.MaxExportBatchSize);
// Note: This will be ignored. Type can't be changed from what is passed to AddExporter.
options.ExportProcessorType = ExportProcessorType.Batch;
options.BatchExportProcessorOptions.MaxExportBatchSize = 19;
});
builder.AddExporter<MyExporter>(
ExportProcessorType.Batch,
"exporter2",
options =>
{
exporter2Invocations++;
Assert.Equal(18, options.BatchExportProcessorOptions.MaxExportBatchSize);
// Note: This will be ignored. Type can't be changed from what is passed to AddExporter.
options.ExportProcessorType = ExportProcessorType.Simple;
options.BatchExportProcessorOptions.MaxExportBatchSize = 100;
});
using var provider = builder.Build() as TracerProviderSdk;
Assert.NotNull(provider);
var unknownOptions = provider.ServiceProvider.GetRequiredService<IOptionsMonitor<ExportActivityProcessorOptions>>().Get("unknownExporter");
Assert.Equal(18, unknownOptions.BatchExportProcessorOptions.MaxExportBatchSize);
var exporter1Options = provider.ServiceProvider.GetRequiredService<IOptionsMonitor<ExportActivityProcessorOptions>>().Get("exporter1");
Assert.Equal(19, exporter1Options.BatchExportProcessorOptions.MaxExportBatchSize);
var exporter2Options = provider.ServiceProvider.GetRequiredService<IOptionsMonitor<ExportActivityProcessorOptions>>().Get("exporter2");
Assert.Equal(100, exporter2Options.BatchExportProcessorOptions.MaxExportBatchSize);
Assert.Equal(3, allOptionsInvocations);
Assert.Equal(1, exporter1Invocations);
Assert.Equal(1, exporter2Invocations);
var processor = provider.Processor as CompositeProcessor<Activity>;
Assert.NotNull(processor);
var firstProcessor = processor.Head.Value;
var secondProcessor = processor.Head.Next?.Value;
Assert.True(firstProcessor is SimpleActivityExportProcessor simpleProcessor && simpleProcessor.Exporter is MyExporter);
Assert.True(secondProcessor is BatchActivityExportProcessor batchProcessor
&& batchProcessor.Exporter is MyExporter
&& batchProcessor.MaxExportBatchSize == 100);
}
[Fact]
public void AddExporterNamedOptionsTest()
{
var builder = Sdk.CreateTracerProviderBuilder();
int defaultOptionsConfigureInvocations = 0;
int namedOptionsConfigureInvocations = 0;
builder.ConfigureServices(services =>
{
services.Configure<ExportActivityProcessorOptions>(o => defaultOptionsConfigureInvocations++);
services.Configure<ExportActivityProcessorOptions>("Exporter2", o => namedOptionsConfigureInvocations++);
});
builder.AddExporter(ExportProcessorType.Batch, new MyExporter());
builder.AddExporter(ExportProcessorType.Batch, new MyExporter(), name: "Exporter2", configure: null);
builder.AddExporter<MyExporter>(ExportProcessorType.Batch);
builder.AddExporter<MyExporter>(ExportProcessorType.Batch, name: "Exporter2", configure: null);
using var provider = builder.Build() as TracerProviderSdk;
Assert.NotNull(provider);
Assert.Equal(1, defaultOptionsConfigureInvocations);
Assert.Equal(1, namedOptionsConfigureInvocations);
}
[Fact]
public void ConfigureBuilderIConfigurationAvailableTest()
{