Stop site and app pool before restoring config (#1112)

This commit is contained in:
Justin Kotalik 2018-07-30 12:58:48 -07:00 committed by GitHub
parent 7d641f8796
commit 7a4a945fd6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 10 deletions

View File

@ -65,7 +65,7 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
} }
AddTemporaryAppHostConfig(); AddTemporaryAppHostConfig();
var apppool = ConfigureAppPool(contentRoot); ConfigureAppPool(contentRoot);
ConfigureSite(contentRoot, port); ConfigureSite(contentRoot, port);
@ -73,11 +73,11 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
_serverManager.CommitChanges(); _serverManager.CommitChanges();
await WaitUntilSiteStarted(apppool); await WaitUntilSiteStarted();
} }
} }
private async Task WaitUntilSiteStarted(ApplicationPool appPool) private async Task WaitUntilSiteStarted()
{ {
var sw = Stopwatch.StartNew(); var sw = Stopwatch.StartNew();
@ -85,13 +85,20 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
{ {
try try
{ {
var site = _serverManager.Sites.FirstOrDefault(s => s.Name.Equals(WebSiteName)); var serverManager = new ServerManager();
var appPool = serverManager.ApplicationPools.FirstOrDefault(s => s.Name.Equals(AppPoolName));
var site = serverManager.Sites.FirstOrDefault(s => s.Name.Equals(WebSiteName));
if (site.State == ObjectState.Started) if (site.State == ObjectState.Started)
{ {
var workerProcess = appPool.WorkerProcesses.SingleOrDefault();
if (workerProcess != null)
{
HostProcess = Process.GetProcessById(workerProcess.ProcessId);
_logger.LogInformation($"Site {WebSiteName} has started."); _logger.LogInformation($"Site {WebSiteName} has started.");
return; return;
} }
}
else if (site.State != ObjectState.Starting) else if (site.State != ObjectState.Starting)
{ {
_logger.LogInformation($"Site hasn't started with state: {site.State.ToString()}"); _logger.LogInformation($"Site hasn't started with state: {site.State.ToString()}");
@ -122,11 +129,15 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
return; return;
} }
RestoreAppHostConfig(); StopSite();
StopAppPool();
_serverManager.CommitChanges(); _serverManager.CommitChanges();
await WaitUntilSiteStopped(); await WaitUntilSiteStopped();
RestoreAppHostConfig();
} }
private async Task WaitUntilSiteStopped() private async Task WaitUntilSiteStopped()
@ -144,11 +155,14 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
try try
{ {
if (site.State == ObjectState.Stopped) if (site.State == ObjectState.Stopped)
{
if (HostProcess.HasExited)
{ {
_logger.LogInformation($"Site {WebSiteName} has stopped successfully."); _logger.LogInformation($"Site {WebSiteName} has stopped successfully.");
return; return;
} }
} }
}
catch (COMException) catch (COMException)
{ {
// Accessing the site.State property while the site // Accessing the site.State property while the site
@ -275,6 +289,20 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting
return config; return config;
} }
private void StopSite()
{
var site = _serverManager.Sites.Where(sites => sites.Name == WebSiteName).SingleOrDefault();
site.Stop();
}
private void StopAppPool()
{
var appPool = _serverManager.ApplicationPools.Where(pool => pool.Name == AppPoolName).SingleOrDefault();
appPool.Stop();
}
private void SetGlobalModuleSection(Configuration config, string dllRoot) private void SetGlobalModuleSection(Configuration config, string dllRoot)
{ {
var ancmFile = GetAncmLocation(dllRoot); var ancmFile = GetAncmLocation(dllRoot);

View File

@ -106,7 +106,11 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting.IIS
5, 5,
200); 200);
Logger.LogInformation($"Found debug log file: {file}"); if (arr.Length == 0)
{
Logger.LogWarning($"{file} is empty.");
}
foreach (var line in arr) foreach (var line in arr)
{ {
Logger.LogInformation(line); Logger.LogInformation(line);