Skip to content

Commit

Permalink
addressed comment
Browse files Browse the repository at this point in the history
  • Loading branch information
Yun-Ting committed Nov 15, 2023
1 parent f43b8ad commit 6dc6f04
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 47 deletions.
47 changes: 0 additions & 47 deletions test/OpenTelemetry.Tests/Logs/OpenTelemetryLoggerProviderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@
// </copyright>

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Moq;
using Xunit;

namespace OpenTelemetry.Logs.Tests;
Expand Down Expand Up @@ -86,49 +84,4 @@ public void VerifyOptionsCannotBeChangedAfterInit(bool initialValue)
Assert.Equal(initialValue, provider.Options.IncludeScopes);
Assert.Equal(initialValue, provider.Options.ParseStateValues);
}

[Fact]
public void VerifyAddProcessorOverloadWithImplementationFactory()
{
// arrange
var options = new OpenTelemetryLoggerOptions();
var myProcessor = new MyProcessor();
var serviceProviderMock = new Mock<IServiceProvider>();

serviceProviderMock.Setup(x => x.GetService(typeof(BaseProcessor<LogRecord>))).Returns(myProcessor);
static BaseProcessor<LogRecord> ImplementationFactory(IServiceProvider x) => x.GetService<BaseProcessor<LogRecord>>();

// act
options.AddProcessor(ImplementationFactory);

// assert
Assert.Single(options.ProcessorFactories);
var processorFactory = options.ProcessorFactories[0];
var processor = processorFactory(serviceProviderMock.Object);
Assert.Equal(myProcessor, processor);
}

[Fact]
public void VerifyExceptionIsThrownWhenImplementationFactoryIsNull()
{
// arrange
Func<IServiceProvider, BaseProcessor<LogRecord>> implementationFactory = null;
var services = new ServiceCollection();
services.AddLogging(logging =>
logging.AddOpenTelemetry(
o =>
o.AddProcessor(implementationFactory)));

services.BuildServiceProvider();

// act
using var sp = services.BuildServiceProvider();

// assert
Assert.Throws<ArgumentNullException>(() => sp.GetRequiredService<LoggerProvider>() as LoggerProviderSdk);
}

private class MyProcessor : BaseProcessor<LogRecord>
{
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,50 @@ public void TestTrimmingCorrectnessOfOpenTelemetryLoggerOptions()
Assert.True(prop.PropertyType.IsPrimitive, $"Property OpenTelemetryLoggerOptions.{prop.Name} doesn't have a primitive type. This is potentially a trim compatibility issue.");
}
}

[Fact]
public void VerifyAddProcessorOverloadWithImplementationFactory()
{
// arrange
var services = new ServiceCollection();
services.AddSingleton<MyProcessor>();

var serviceCollection = services.AddLogging(logging =>
logging.AddOpenTelemetry(options =>
options.AddProcessor(sp => sp.GetRequiredService<MyProcessor>())));

// act
using var sp = services.BuildServiceProvider();

var loggerProvider = sp.GetRequiredService<LoggerProvider>() as LoggerProviderSdk;

// assert
Assert.NotNull(loggerProvider);
Assert.NotNull(loggerProvider.Processor);
Assert.True(loggerProvider.Processor is MyProcessor);
}

[Fact]
public void VerifyExceptionIsThrownWhenImplementationFactoryIsNull()
{
// arrange
Func<IServiceProvider, BaseProcessor<LogRecord>>? implementationFactory = null;
var services = new ServiceCollection();
#pragma warning disable CS8604 // Suppressed possible null reference warning for testing argument null exception.
_ = services.AddLogging(logging =>
logging.AddOpenTelemetry(
o =>
o.AddProcessor(implementationFactory)));
#pragma warning restore CS8604 // Suppressed possible null reference warning for testing argument null exception.

// act
using var sp = services.BuildServiceProvider();

// assert
Assert.Throws<ArgumentNullException>(() => sp.GetRequiredService<LoggerProvider>() as LoggerProviderSdk);
}

private class MyProcessor : BaseProcessor<LogRecord>
{
}
}

0 comments on commit 6dc6f04

Please sign in to comment.