File: RemoteInvokeOptions.cs
Web Access
Project: src\src\Microsoft.DotNet.RemoteExecutor\src\Microsoft.DotNet.RemoteExecutor.csproj (Microsoft.DotNet.RemoteExecutor)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
 
namespace Microsoft.DotNet.RemoteExecutor
{
    /// <summary>
    /// Options used with RemoteInvoke.
    /// </summary>
    public sealed class RemoteInvokeOptions
    {
        private bool _runAsSudo;
 
        public bool Start { get; set; } = true;
 
        public ProcessStartInfo StartInfo { get; set; } = new ProcessStartInfo();
 
        public bool EnableProfiling { get; set; } = true;
 
        public bool CheckExitCode { get; set; } = true;
 
        /// <summary>
        /// A timeout (milliseconds) after which a wait on a remote operation should be considered a failure.
        /// </summary>
        public int TimeOut { get; set; } = RemoteExecutor.FailWaitTimeoutMilliseconds;
 
        /// <summary>
        /// The exit code returned when the test process exits successfully.
        /// </summary>
        public int ExpectedExitCode { get; set; } = RemoteExecutor.SuccessExitCode;
 
        public string ExceptionFile { get; } = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
 
        /// <summary>
        /// Gets the runtimeconfig options (or AppContext settings) to set for the remote process.
        /// </summary>
        /// <remarks>
        /// This option only works with .NET Core processes.
        /// </remarks>
        public IDictionary<string, object> RuntimeConfigurationOptions { get; } = new Dictionary<string, object>();
 
        public bool RunAsSudo
        {
            get => _runAsSudo;
            set
            {
                if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                {
                    throw new PlatformNotSupportedException();
                }
 
                _runAsSudo = value;
            }
        }
 
        /// <summary>
        /// Specifies the roll-forward policy for dotnet cli to use. Only applies when running .NET Core
        /// </summary>
        public string RollForward { get; set; }
    }
}