File: Interfaces\Engine\ClientProtocol\ITestEngine.cs
Web Access
Project: src\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.ObjectModel.Client;

namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Engine;

/// <summary>
/// Defines the functionality of a test engine.
/// </summary>
public interface ITestEngine
{
    /// <summary>
    /// Fetches the DiscoveryManager for this engine. This manager would provide all
    /// functionality required for discovery.
    /// </summary>
    ///
    /// <param name="requestData">
    /// The request data for providing discovery services and data.
    /// </param>
    /// <param name="discoveryCriteria">The discovery criteria.</param>
    /// <param name="sourceToSourceDetailMap">Details of every source.</param>
    /// <param name="warningLogger">Logger of warnings.</param>
    ///
    /// <returns>An IProxyDiscoveryManager object that can do discovery.</returns>
    IProxyDiscoveryManager GetDiscoveryManager(
        IRequestData requestData,
        DiscoveryCriteria discoveryCriteria,
        IDictionary<string, SourceDetail> sourceToSourceDetailMap,
        IWarningLogger warningLogger);

    /// <summary>
    /// Fetches the ExecutionManager for this engine. This manager would provide all
    /// functionality required for execution.
    /// </summary>
    ///
    /// <param name="requestData">
    /// The request data for providing common execution services and data.
    /// </param>
    /// <param name="sourceToSourceDetailMap">Details of every source.</param>
    /// <param name="warningLogger">Logger of warnings.</param>
    /// <param name="testRunCriteria">Test run criteria of the current test run.</param>
    ///
    /// <returns>An IProxyExecutionManager object that can do execution.</returns>
    IProxyExecutionManager GetExecutionManager(
        IRequestData requestData,
        TestRunCriteria testRunCriteria,
        IDictionary<string, SourceDetail> sourceToSourceDetailMap,
        IWarningLogger warningLogger);

    /// <summary>
    /// Fetches the TestSessionManager for this engine. This manager would provide all
    /// functionality required for test session management.
    /// </summary>
    ///
    /// <param name="requestData">
    /// The request data for providing test session services and data.
    /// </param>
    /// <param name="testSessionCriteria">
    /// Test session criteria of the current test session.
    /// </param>
    /// <param name="sourceToSourceDetailMap">Details of every source.</param>
    /// <param name="warningLogger">Logger of warnings.</param>
    ///
    /// <returns>An IProxyTestSessionManager object that can manage test sessions.</returns>
    IProxyTestSessionManager? GetTestSessionManager(
        IRequestData requestData,
        StartTestSessionCriteria testSessionCriteria,
        IDictionary<string, SourceDetail> sourceToSourceDetailMap,
        IWarningLogger warningLogger);

    /// <summary>
    /// Fetches the extension manager for this engine. This manager would provide extensibility
    /// features that this engine supports.
    /// </summary>
    ///
    /// <returns>An ITestExtensionManager object that helps with extensibility.</returns>
    ITestExtensionManager GetExtensionManager();

    /// <summary>
    /// Fetches the logger manager for this engine. This manager will provide logger
    /// extensibility features that this engine supports.
    /// </summary>
    ///
    /// <param name="requestData">
    /// The request data for providing common execution services and data.
    /// </param>
    ///
    /// <returns>An ITestLoggerManager object that helps with logger extensibility.</returns>
    ITestLoggerManager GetLoggerManager(IRequestData requestData);
}