| File: Host\ITestRunTimeProvider.cs | Web Access |
| Project: src\vstest\src\Microsoft.TestPlatform.ObjectModel\Microsoft.TestPlatform.ObjectModel.csproj (Microsoft.VisualStudio.TestPlatform.ObjectModel) |
// 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; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging; namespace Microsoft.VisualStudio.TestPlatform.ObjectModel.Host; /// <summary> /// Interface for TestRuntimeProvider which manages test host processes for test engine. /// </summary> public interface ITestRuntimeProvider { /// <summary> /// Raised when host is launched successfully /// Consumed by TestPlatform to initialize connection b/w test host and test platform /// </summary> event EventHandler<HostProviderEventArgs>? HostLaunched; /// <summary> /// Raised when host is cleaned up and removes all it's dependencies /// </summary> event EventHandler<HostProviderEventArgs>? HostExited; /// <summary> /// Gets a value indicating whether the test host is specific to a test source. If yes, each test source /// is launched in a separate host process. /// </summary> bool Shared { get; } /// <summary> /// Sets a Message Logger /// </summary> /// <param name="logger">provide logger to runtimes</param> /// <param name="runsettingsXml">provide runsettings to runtimes for initialization</param> void Initialize(IMessageLogger? logger, string runsettingsXml); /// <summary> /// Gets a value indicating whether the test host is specific to a test source. If yes, each test source /// is launched in a separate host process. /// </summary> /// <param name="runsettingsXml"> /// The run Configuration. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> bool CanExecuteCurrentRunConfiguration(string? runsettingsXml); /// <summary> /// Sets a custom launcher /// </summary> /// <param name="customLauncher">Custom launcher to set</param> void SetCustomLauncher(ITestHostLauncher customLauncher); /// <summary> /// Gets the end point address and behavior of TestRuntime /// E.g. for phone device EndPoint:127.0.0.1:8080, ConnectionRole Host, TransportProtocol: Sockets /// </summary> /// <returns> Socket where the service is hosted by TestRuntime</returns> TestHostConnectionInfo GetTestHostConnectionInfo(); /// <summary> /// Launches the test host for discovery/execution. /// </summary> /// <param name="testHostStartInfo">Start parameters for the test host.</param> /// <param name="cancellationToken"></param> /// <returns>Returns whether the test host launched successfully or not.</returns> Task<bool> LaunchTestHostAsync(TestProcessStartInfo testHostStartInfo, CancellationToken cancellationToken); /// <summary> /// Gets the start parameters for the test host. /// </summary> /// <param name="sources">Test source paths.</param> /// <param name="environmentVariables">Set of environment variables for the test host process.</param> /// <param name="connectionInfo">Set of connection parameters for the test host process to communicate with test runner.</param> /// <returns>ProcessStartInfo of the test host.</returns> TestProcessStartInfo GetTestHostProcessStartInfo(IEnumerable<string> sources, IDictionary<string, string?>? environmentVariables, TestRunnerConnectionInfo connectionInfo); /// <summary> /// Gets paths of any additional extensions. /// A test host manager may choose to provide a custom extensions acquisition and discovery /// mechanism. E.g. for .net core, extensions are discovered from the <c>testproject.deps.json</c> file. /// </summary> /// <param name="sources">List of test sources.</param> /// <param name="extensions"></param> /// <returns>List of paths to extension assemblies.</returns> IEnumerable<string> GetTestPlatformExtensions(IEnumerable<string> sources, IEnumerable<string> extensions); /// <summary> /// Gets path of test sources, based on RuntimeProvider, and where the test is actually deployed(Remote Scenario). /// A test host manager may choose to accept input source as XML file, and provide appropriate source(dll/exe) which the adapters can actually consume /// E.g. for UWP, input source could be "appx recipe" file, which gives information about actual source exe. /// </summary> /// <param name="sources">List of test sources.</param> /// <returns>Updated List of test sources based on remote/local scenario.</returns> IEnumerable<string> GetTestSources(IEnumerable<string> sources); /// <summary> /// Cleanup the test host process and it's dependencies. /// </summary> /// <param name="cancellationToken"> /// Cancellation token. /// </param> /// <returns> /// The <see cref="Task"/>. /// </returns> Task CleanTestHostAsync(CancellationToken cancellationToken); } public class HostProviderEventArgs : EventArgs { public HostProviderEventArgs(string message) { Data = message; ErrroCode = 0; } public HostProviderEventArgs(string message, int errorCode, int processId) { Data = message; ErrroCode = errorCode; ProcessId = processId; } public string Data { get; set; } public int ErrroCode { get; set; } public int ProcessId { get; set; } }