Skip to content

Commit

Permalink
A few misc changes and fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
CodeBlanch committed Nov 15, 2023
1 parent c2cb6be commit 0b623e9
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/OpenTelemetry.Extensions.Hosting/OpenTelemetryBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,13 @@ public OpenTelemetryBuilder ConfigureResource(
Guard.ThrowIfNull(configure);

this.Services.ConfigureOpenTelemetryMeterProvider(
(sp, builder) => builder.ConfigureResource(configure));
builder => builder.ConfigureResource(configure));

this.Services.ConfigureOpenTelemetryTracerProvider(
(sp, builder) => builder.ConfigureResource(configure));
builder => builder.ConfigureResource(configure));

this.Services.ConfigureOpenTelemetryLoggerProvider(
(sp, builder) => builder.ConfigureResource(configure));
builder => builder.ConfigureResource(configure));

return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,8 @@ public static MeterProviderBuilder SetMaxMetricPointsPerMetricStream(this MeterP
/// <returns>The supplied <see cref="MeterProviderBuilder"/> for chaining.</returns>
public static MeterProviderBuilder SetResourceBuilder(this MeterProviderBuilder meterProviderBuilder, ResourceBuilder resourceBuilder)
{
Guard.ThrowIfNull(resourceBuilder);

meterProviderBuilder.ConfigureBuilder((sp, builder) =>
{
if (builder is MeterProviderBuilderSdk meterProviderBuilderSdk)
Expand All @@ -297,6 +299,8 @@ public static MeterProviderBuilder SetResourceBuilder(this MeterProviderBuilder
/// <returns>The supplied <see cref="MeterProviderBuilder"/> for chaining.</returns>
public static MeterProviderBuilder ConfigureResource(this MeterProviderBuilder meterProviderBuilder, Action<ResourceBuilder> configure)
{
Guard.ThrowIfNull(configure);

meterProviderBuilder.ConfigureBuilder((sp, builder) =>
{
if (builder is MeterProviderBuilderSdk meterProviderBuilderSdk)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,41 @@ public void ConfigureResourceTest()
loggerProvider.Resource.Attributes,
kvp => kvp.Key == "l_key1" && (string)kvp.Value == "l_value1");
}

[Fact]
public void ConfigureResourceServiceProviderTest()
{
var services = new ServiceCollection();

services.AddSingleton<TestResourceDetector>();

services.AddOpenTelemetry()
.ConfigureResource(r => r.AddDetector(sp => sp.GetRequiredService<TestResourceDetector>()))
.WithLogging()
.WithMetrics()
.WithTracing();

using var sp = services.BuildServiceProvider();

var tracerProvider = sp.GetRequiredService<TracerProvider>() as TracerProviderSdk;
var meterProvider = sp.GetRequiredService<MeterProvider>() as MeterProviderSdk;
var loggerProvider = sp.GetRequiredService<LoggerProvider>() as LoggerProviderSdk;

Assert.NotNull(tracerProvider);
Assert.NotNull(meterProvider);
Assert.NotNull(loggerProvider);

Assert.Single(tracerProvider.Resource.Attributes, kvp => kvp.Key == "key1" && (string)kvp.Value == "value1");
Assert.Single(meterProvider.Resource.Attributes, kvp => kvp.Key == "key1" && (string)kvp.Value == "value1");
Assert.Single(loggerProvider.Resource.Attributes, kvp => kvp.Key == "key1" && (string)kvp.Value == "value1");
}

private sealed class TestResourceDetector : IResourceDetector
{
public Resource Detect() => ResourceBuilder.CreateEmpty().AddAttributes(
new Dictionary<string, object>
{
["key1"] = "value1",
}).Build();
}
}

0 comments on commit 0b623e9

Please sign in to comment.