Merge branch 'release/2.2'
This commit is contained in:
commit
a3dd609ae6
|
|
@ -5,6 +5,7 @@ using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Server.IntegrationTesting.Common;
|
using Microsoft.AspNetCore.Server.IntegrationTesting.Common;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
@ -77,16 +78,48 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetUserName()
|
||||||
|
{
|
||||||
|
var retVal = Environment.GetEnvironmentVariable("LOGNAME")
|
||||||
|
?? Environment.GetEnvironmentVariable("USER")
|
||||||
|
?? Environment.GetEnvironmentVariable("USERNAME");
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(retVal))
|
||||||
|
{
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||||
|
{
|
||||||
|
using (var process = new Process
|
||||||
|
{
|
||||||
|
StartInfo =
|
||||||
|
{
|
||||||
|
FileName = "whoami",
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
{
|
||||||
|
process.Start();
|
||||||
|
process.WaitForExit(10_000);
|
||||||
|
return process.StandardOutput.ReadToEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private void SetupNginx(string redirectUri, Uri originalUri)
|
private void SetupNginx(string redirectUri, Uri originalUri)
|
||||||
{
|
{
|
||||||
using (Logger.BeginScope("SetupNginx"))
|
using (Logger.BeginScope("SetupNginx"))
|
||||||
{
|
{
|
||||||
|
var userName = GetUserName() ?? throw new InvalidOperationException("Could not identify the current username");
|
||||||
// copy nginx.conf template and replace pertinent information
|
// copy nginx.conf template and replace pertinent information
|
||||||
var pidFile = Path.Combine(DeploymentParameters.ApplicationPath, $"{Guid.NewGuid()}.nginx.pid");
|
var pidFile = Path.Combine(DeploymentParameters.ApplicationPath, $"{Guid.NewGuid()}.nginx.pid");
|
||||||
var errorLog = Path.Combine(DeploymentParameters.ApplicationPath, "nginx.error.log");
|
var errorLog = Path.Combine(DeploymentParameters.ApplicationPath, "nginx.error.log");
|
||||||
var accessLog = Path.Combine(DeploymentParameters.ApplicationPath, "nginx.access.log");
|
var accessLog = Path.Combine(DeploymentParameters.ApplicationPath, "nginx.access.log");
|
||||||
DeploymentParameters.ServerConfigTemplateContent = DeploymentParameters.ServerConfigTemplateContent
|
DeploymentParameters.ServerConfigTemplateContent = DeploymentParameters.ServerConfigTemplateContent
|
||||||
.Replace("[user]", Environment.GetEnvironmentVariable("LOGNAME"))
|
.Replace("[user]", userName)
|
||||||
.Replace("[errorlog]", errorLog)
|
.Replace("[errorlog]", errorLog)
|
||||||
.Replace("[accesslog]", accessLog)
|
.Replace("[accesslog]", accessLog)
|
||||||
.Replace("[listenPort]", originalUri.Port.ToString())
|
.Replace("[listenPort]", originalUri.Port.ToString())
|
||||||
|
|
@ -117,13 +150,14 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
|
||||||
{
|
{
|
||||||
runNginx.StartAndCaptureOutAndErrToLogger("nginx start", Logger);
|
runNginx.StartAndCaptureOutAndErrToLogger("nginx start", Logger);
|
||||||
runNginx.WaitForExit(_waitTime);
|
runNginx.WaitForExit(_waitTime);
|
||||||
|
|
||||||
if (runNginx.ExitCode != 0)
|
if (runNginx.ExitCode != 0)
|
||||||
{
|
{
|
||||||
throw new Exception("Failed to start nginx");
|
throw new InvalidOperationException("Failed to start nginx");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the PID file
|
// Read the PID file
|
||||||
if(!File.Exists(pidFile))
|
if (!File.Exists(pidFile))
|
||||||
{
|
{
|
||||||
Logger.LogWarning("Unable to find nginx PID file: {pidFile}", pidFile);
|
Logger.LogWarning("Unable to find nginx PID file: {pidFile}", pidFile);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue