terminal/src/cascadia/WindowsTerminal_UIATests/Common/PgoManager.cs

52 lines
1.7 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using WEX.Logging.Interop;
using WEX.TestExecution.Markup;
namespace WindowsTerminal.UIA.Tests.Common
{
public static class PgoManager
{
private static string TrimExtension(string str)
{
if (str.EndsWith(".exe") || str.EndsWith(".dll"))
{
return str.Substring(0, str.Length - 4);
}
return str;
}
public static void PgoSweepIfInstrumented(TestContext context, string assemblyName)
{
#if true
string pgcFileName = context.TestName;
Log.Comment($"Running pgosweep on '{assemblyName}' for test: {pgcFileName}");
try
{
var startInfo = new ProcessStartInfo() {
FileName = Path.GetFullPath(Path.Combine(context.TestDeploymentDir, "pgosweep.exe")),
Arguments = $"{assemblyName} {TrimExtension(assemblyName)}!{pgcFileName}.pgc",
UseShellExecute = false,
RedirectStandardOutput = true
};
using (var process = Process.Start(startInfo))
{
var output = new StringBuilder();
while (!process.HasExited)
{
Log.Comment(process.StandardOutput.ReadToEnd());
}
}
}
catch (Exception ex)
{
Log.Comment("Failed trying to pgosweep. " + ex.ToString());
throw;
}
#endif
}
}
}