| File: Client\IProxyManagerFactory.cs | Web Access |
| Project: src\vstest\src\Microsoft.TestPlatform.CrossPlatEngine\Microsoft.TestPlatform.CrossPlatEngine.csproj (Microsoft.TestPlatform.CrossPlatEngine) |
// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.DataCollection.Interfaces; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine; namespace Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Client; /// <summary> /// Implemented by a runtime provider (an <see cref="ObjectModel.Host.ITestRuntimeProvider"/>) that hosts a /// run over its own protocol instead of the vstest testhost protocol, and therefore supplies its own /// discovery/execution proxy managers. /// </summary> /// <remarks> /// The standard flow creates a <c>ProxyDiscoveryManager</c>/<c>ProxyExecutionManager</c> that wrap an /// <see cref="ObjectModel.Host.ITestRuntimeProvider"/> launching a vstest testhost. Some providers — such as /// the Microsoft.Testing.Platform provider — are fundamentally a different shape: the test application is its /// own host and speaks its own JSON-RPC protocol, so it needs a different proxy manager entirely. Rather than /// teaching <see cref="TestEngine"/> about each such protocol with inline branches, the resolved provider that /// implements this interface is asked to produce its own proxy managers. This keeps protocol-specific wiring /// in the provider and out of the engine. /// <para> /// This interface is public because the runtime providers that implement it live in a separate assembly /// (<c>Microsoft.TestPlatform.TestHostRuntimeProvider</c>). The concrete proxy managers stay internal to this /// assembly; providers create them through the public <see cref="MTP.MtpProxyManagerFactory"/> helper. /// </para> /// </remarks> public interface IProxyManagerFactory { /// <summary> /// Creates the discovery manager used to drive discovery for this provider's sources. /// </summary> IProxyDiscoveryManager CreateDiscoveryManager(); /// <summary> /// Creates the execution manager used to drive execution for this provider's sources. /// </summary> /// <param name="dataCollectionManager"> /// The data collection manager to wire in when data collectors are enabled, or <see langword="null"/> /// when data collection is off. /// </param> IProxyExecutionManager CreateExecutionManager(IProxyDataCollectionManager? dataCollectionManager); }