/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Workspaces/CoreTestUtilities/Logging/TestTelemetryLogger.cs
59 строк
2 KB
Cyrus Najmabadi
Add logging support
02 май 2025, 00:33
02 май 2025, 00:33
d97d22c
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Collections.Generic; using Microsoft.CodeAnalysis.Internal.Log; using Microsoft.CodeAnalysis.Telemetry; using Microsoft.VisualStudio.Telemetry; using Xunit; namespace Microsoft.CodeAnalysis.UnitTests.Logging; internal sealed class TestTelemetryLogger : TelemetryLogger { public TestTelemetryLogger(bool logDelta = false) { LogDelta = logDelta; } protected override bool LogDelta { get; } public sealed class TestScope { public readonly TelemetryEvent EndEvent; public readonly LogType Type; public TestScope(TelemetryEvent endEvent, LogType type) { EndEvent = endEvent; Type = type; } } public List<TelemetryEvent> PostedEvents = []; public HashSet<TestScope> OpenedScopes = []; public override bool IsEnabled(FunctionId functionId) => true; protected override void PostEvent(TelemetryEvent telemetryEvent) { PostedEvents.Add(telemetryEvent); } protected override object Start(string eventName, LogType type) { var scope = new TestScope(new TelemetryEvent(eventName), type); OpenedScopes.Add(scope); return scope; } protected override void End(object scope, TelemetryResult result) { Assert.True(OpenedScopes.Remove((TestScope)scope)); } protected override TelemetryEvent GetEndEvent(object scope) => ((TestScope)scope).EndEvent; }