| File: Telemetry\TelemetryLoggerProviderTests.cs | Web Access |
| Project: src\tests\Aspire.Dashboard.Tests\Aspire.Dashboard.Tests.csproj (Aspire.Dashboard.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Dashboard.Telemetry; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Xunit; namespace Aspire.Dashboard.Tests.Telemetry; public class TelemetryLoggerProviderTests { [Fact] public async Task Log_DifferentCategoryAndEventIds_WriteTelemetryForBlazorUnhandedErrorAsync() { // Arrange var telemetrySender = new TestDashboardTelemetrySender { IsTelemetryEnabled = true }; await telemetrySender.TryStartTelemetrySessionAsync(); var serviceProvider = new ServiceCollection() .AddSingleton<DashboardTelemetryService>() .AddSingleton<IDashboardTelemetrySender>(telemetrySender) .AddLogging() .AddSingleton<ILoggerProvider, TelemetryLoggerProvider>() .AddSingleton<ITelemetryErrorRecorder, TelemetryErrorRecorder>() .BuildServiceProvider(); var loggerProvider = serviceProvider.GetRequiredService<ILoggerFactory>(); // Act & assert 1 var testLogger = loggerProvider.CreateLogger("testLogger"); testLogger.Log(LogLevel.Error, TelemetryLoggerProvider.CircuitUnhandledExceptionEventId, "Test message"); Assert.False(telemetrySender.ContextChannel.Reader.TryPeek(out _)); // Act & assert 2 var circuitHostLogger = loggerProvider.CreateLogger(TelemetryLoggerProvider.CircuitHostLogCategory); circuitHostLogger.LogInformation("Test log message"); Assert.False(telemetrySender.ContextChannel.Reader.TryPeek(out _)); // Act & assert 3 circuitHostLogger.Log(LogLevel.Error, TelemetryLoggerProvider.CircuitUnhandledExceptionEventId, "Test message"); Assert.False(telemetrySender.ContextChannel.Reader.TryPeek(out _)); // Act & assert 4 circuitHostLogger.Log(LogLevel.Error, TelemetryLoggerProvider.CircuitUnhandledExceptionEventId, new InvalidOperationException("Exception message"), "Test message"); Assert.True(telemetrySender.ContextChannel.Reader.TryPeek(out var context)); Assert.Equal("/telemetry/fault - $aspire/dashboard/error", context.Name); } }