| File: ExtensionFramework\DataCollectionExtensionManager.cs | Web Access |
| Project: src\vstest\src\Microsoft.TestPlatform.Common\Microsoft.TestPlatform.Common.csproj (Microsoft.VisualStudio.TestPlatform.Common) |
// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections.Generic; using Microsoft.VisualStudio.TestPlatform.Common.DataCollector; using Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.Utilities; using Microsoft.VisualStudio.TestPlatform.Common.Interfaces; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; namespace Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework; /// <summary> /// Manages loading and provides access to data collector extensions implementing the /// DataCollector interface. /// </summary> internal class DataCollectorExtensionManager : TestExtensionManager<ObjectModel.DataCollection.DataCollector, IDataCollectorCapabilities> { /// <summary> /// Default constructor. /// </summary> /// <param name="unfilteredTestExtensions"> /// The unfiltered Test Extensions. /// </param> /// <param name="testExtensions"> /// The test Extensions. /// </param> /// <param name="logger"> /// The logger. /// </param> /// <remarks> /// The constructor is not public because the factory method should be used to get instances of this class. /// </remarks> protected DataCollectorExtensionManager( IEnumerable<LazyExtension<ObjectModel.DataCollection.DataCollector, Dictionary<string, object>>> unfilteredTestExtensions, IEnumerable<LazyExtension<ObjectModel.DataCollection.DataCollector, IDataCollectorCapabilities>> testExtensions, IMessageLogger logger) : base(unfilteredTestExtensions, testExtensions, logger) { } /// <summary> /// Gets an instance of the DataCollectorExtensionManager. /// </summary> /// <param name="messageLogger"> /// The message Logger. /// </param> /// <returns> /// The DataCollectorExtensionManager. /// </returns> public static DataCollectorExtensionManager Create(IMessageLogger messageLogger) { TestPluginManager.GetSpecificTestExtensions<DataCollectorConfig, ObjectModel.DataCollection.DataCollector, IDataCollectorCapabilities, DataCollectorMetadata>( TestPlatformConstants.DataCollectorEndsWithPattern, out var unfilteredTestExtensions, out var filteredTestExtensions); return new DataCollectorExtensionManager(unfilteredTestExtensions, filteredTestExtensions, messageLogger); } /// <summary> /// Gets an instance of the DataCollectorExtensionManager. /// </summary> /// <param name="extensionAssemblyFilePath"> /// File path that contains data collectors to load. /// </param> /// <param name="skipCache"> /// Skip the extensions cache. /// </param> /// <param name="messageLogger"> /// The message Logger. /// </param> /// <returns> /// The DataCollectorExtensionManager. /// </returns> public static DataCollectorExtensionManager Create(string extensionAssemblyFilePath, bool skipCache, IMessageLogger messageLogger) { TestPluginManager.GetTestExtensions<DataCollectorConfig, ObjectModel.DataCollection.DataCollector, IDataCollectorCapabilities, DataCollectorMetadata>( extensionAssemblyFilePath, out var unfilteredTestExtensions, out var filteredTestExtensions, skipCache); return new DataCollectorExtensionManager(unfilteredTestExtensions, filteredTestExtensions, messageLogger); } } /// <summary> /// Hold data about the Data Collector. /// </summary> public class DataCollectorMetadata : IDataCollectorCapabilities { /// <summary> /// Constructor for DataCollectorMetadata /// </summary> /// <param name="extension"> /// Uri identifying the data collector. /// </param> /// <param name="friendlyName"> /// The friendly Name. /// </param> public DataCollectorMetadata(string extension, string friendlyName) : this(extension, friendlyName, false) { } /// <summary> /// Constructor for DataCollectorMetadata /// </summary> /// <param name="extension"> /// Uri identifying the data collector. /// </param> /// <param name="friendlyName"> /// The friendly Name. /// </param> /// <param name="hasAttachmentProcessor"> /// Indicates if the current data collector registers an attachment processor /// </param> public DataCollectorMetadata(string extension, string friendlyName, bool hasAttachmentProcessor) { ExtensionUri = extension; FriendlyName = friendlyName; HasAttachmentProcessor = hasAttachmentProcessor; } /// <summary> /// Gets Uri identifying the data collector. /// </summary> public string ExtensionUri { get; private set; } /// <summary> /// Gets Friendly Name identifying the data collector. /// </summary> public string FriendlyName { get; private set; } /// <summary> /// Check if the data collector has got attachment processor registered /// </summary> public bool HasAttachmentProcessor { get; private set; } }