| File: Latency\Internal\LatencyContextProviderTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.Extensions.Telemetry.Tests\Microsoft.Extensions.Telemetry.Tests.csproj (Microsoft.Extensions.Telemetry.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.Diagnostics.Latency.Internal; using Microsoft.Extensions.Options; using Moq; using Xunit; namespace Microsoft.Extensions.Diagnostics.Latency.Test.Internal; public class LatencyContextProviderTests { [Fact] public void Provider_CreateGetsNewContext() { var options = new LatencyContextOptions { ThrowOnUnregisteredNames = false }; var lip = GetLatencyInstrumentProvider(options); var lcp = new LatencyContextProvider(lip); Assert.NotNull(lcp.CreateContext()); Assert.NotSame(lcp.CreateContext(), lcp.CreateContext()); } [Fact] public void Provider_NoThrowOptions() { var options = new LatencyContextOptions { ThrowOnUnregisteredNames = false }; var lip = GetLatencyInstrumentProvider(options); var lcp = new LatencyContextProvider(lip); var tokenissuer = GetTokenIssuer(options); var ct = tokenissuer.GetCheckpointToken("ca"); var mt = tokenissuer.GetMeasureToken("ma"); var tt = tokenissuer.GetTagToken("ta"); var lc = lcp.CreateContext(); lc.AddCheckpoint(ct); lc.RecordMeasure(mt, 5); lc.AddMeasure(mt, 10); lc.SetTag(tt, "tag"); ct = tokenissuer.GetCheckpointToken("ca1"); mt = tokenissuer.GetMeasureToken("ma1"); tt = tokenissuer.GetTagToken("ta1"); lc.AddCheckpoint(ct); lc.RecordMeasure(mt, 5); lc.AddMeasure(mt, 10); lc.SetTag(tt, "tag"); Assert.True(lc.LatencyData.Checkpoints.Length == 1); Assert.True(lc.LatencyData.Measures.Length == 1); Assert.True(lc.LatencyData.Tags.Length == 1); } [Fact] public void Provider_ThrowOptions() { LatencyContextOptions options = new LatencyContextOptions { ThrowOnUnregisteredNames = true }; var lip = GetLatencyInstrumentProvider(options); var lcp = new LatencyContextProvider(lip); var tokenissuer = GetTokenIssuer(options); var ct = tokenissuer.GetCheckpointToken("ca"); var mt = tokenissuer.GetMeasureToken("ma"); var tt = tokenissuer.GetTagToken("ta"); var lc = lcp.CreateContext(); lc.AddCheckpoint(ct); lc.RecordMeasure(mt, 5); lc.AddMeasure(mt, 10); lc.SetTag(tt, "tag"); Assert.Throws<ArgumentException>(() => tokenissuer.GetCheckpointToken("ca1")); Assert.Throws<ArgumentException>(() => tokenissuer.GetMeasureToken("ma1")); Assert.Throws<ArgumentException>(() => tokenissuer.GetTagToken("ta1")); Assert.True(lc.LatencyData.Checkpoints.Length == 1); Assert.True(lc.LatencyData.Measures.Length == 1); Assert.True(lc.LatencyData.Tags.Length == 1); } private static ILatencyContextTokenIssuer GetTokenIssuer(LatencyContextOptions options) { var lco = new Mock<IOptions<LatencyContextOptions>>(); lco.Setup(a => a.Value).Returns(options); var lip = GetLatencyInstrumentProvider(options); return new LatencyContextTokenIssuer(lip); } private static LatencyInstrumentProvider GetLatencyInstrumentProvider(LatencyContextOptions options) { var lco = new Mock<IOptions<LatencyContextOptions>>(); lco.Setup(a => a.Value).Returns(options); var lcr = new LatencyContextRegistrySet(lco.Object, GetRegistrationOption()); return new LatencyInstrumentProvider(lcr); } private static IOptions<LatencyContextRegistrationOptions> GetRegistrationOption() { return MockLatencyContextRegistrationOptions.GetLatencyContextRegistrationOptions( new[] { "ca" }, new[] { "ma" }, new[] { "ta" }); } }