| File: Latency\LatencyRegistryExtensionsTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.Extensions.Telemetry.Abstractions.Tests\Microsoft.Extensions.Telemetry.Abstractions.Tests.csproj (Microsoft.Extensions.Telemetry.Abstractions.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Xunit; namespace Microsoft.Extensions.Diagnostics.Latency.Test; public class LatencyRegistryExtensionsTests { [Fact] public void LatencyRegistryExtension_NullArguments() { Assert.Throws<ArgumentNullException>( () => LatencyRegistryServiceCollectionExtensions.RegisterCheckpointNames(new ServiceCollection(), null!)); Assert.Throws<ArgumentNullException>( () => LatencyRegistryServiceCollectionExtensions.RegisterCheckpointNames(null!, new string[0])); Assert.Throws<ArgumentNullException>( () => LatencyRegistryServiceCollectionExtensions.RegisterMeasureNames(null!, new string[0])); Assert.Throws<ArgumentNullException>( () => LatencyRegistryServiceCollectionExtensions.RegisterMeasureNames(new ServiceCollection(), null!)); Assert.Throws<ArgumentNullException>( () => LatencyRegistryServiceCollectionExtensions.RegisterTagNames(null!, new string[0])); Assert.Throws<ArgumentNullException>( () => LatencyRegistryServiceCollectionExtensions.RegisterTagNames(new ServiceCollection(), null!)); } [Fact] public void LatencyRegistryExtension_EmptyNames() { Assert.Throws<ArgumentException>(() => LatencyRegistryServiceCollectionExtensions.RegisterCheckpointNames(new ServiceCollection(), "")); Assert.Throws<ArgumentException>(() => LatencyRegistryServiceCollectionExtensions.RegisterMeasureNames(new ServiceCollection(), "")); Assert.Throws<ArgumentException>(() => LatencyRegistryServiceCollectionExtensions.RegisterTagNames(new ServiceCollection(), "")); } [Fact] public void LatencyRegistryExtension_BasicFunctionality() { var services = RegisterNames(new ServiceCollection()); var serviceProvider = services.BuildServiceProvider(); Assert.NotNull(serviceProvider); var option = serviceProvider.GetService<IOptions<LatencyContextRegistrationOptions>>(); Assert.NotNull(option); Assert.NotNull(option!.Value); CheckNumberOfRegisteredNames(option.Value!); } [Fact] public void LatencyRegistry_CreateOption() { var lcro = new LatencyContextRegistrationOptions(); var chk = new[] { "ca", "cb", "cc" }; var tags = new[] { "ta", "tb", "tc" }; var measures = new[] { "ma", "mb", "mc" }; lcro.CheckpointNames = chk; lcro.MeasureNames = measures; lcro.TagNames = tags; Assert.Equal(chk, lcro.CheckpointNames); Assert.Equal(measures, lcro.MeasureNames); Assert.Equal(tags, lcro.TagNames); } private static IServiceCollection RegisterNames(IServiceCollection services) { services.RegisterCheckpointNames(new[] { "ca" }); services.RegisterMeasureNames(new[] { "ma" }); services.RegisterMeasureNames(new[] { "mb" }); services.RegisterTagNames(new[] { "ta" }); services.RegisterTagNames(new[] { "tb", "tc" }); return services; } private static void CheckNumberOfRegisteredNames(LatencyContextRegistrationOptions lcro) { Assert.True(lcro.CheckpointNames.Count == 1); Assert.True(lcro.MeasureNames.Count == 2); Assert.True(lcro.TagNames.Count == 3); } }