ANCM test update to fix test issues (#99)

This commit is contained in:
jhkimnew 2017-05-16 17:08:14 -07:00 committed by GitHub
parent 289ecd475d
commit c7e17d13f3
5 changed files with 70 additions and 29 deletions

View File

@ -81,7 +81,7 @@ namespace AspNetCoreModule.Test.Framework
public static void RestoreAppHostConfig(bool restoreFromMasterBackupFile = true)
{
string masterBackupFileExtension = ".ancmtest.mastebackup";
string masterBackupFileExtension = ".ancmtest.masterbackup";
string masterBackupFilePath = Strings.AppHostConfigPath + masterBackupFileExtension;
string temporaryBackupFileExtenstion = null;
string temporaryBackupFilePath = null;
@ -532,14 +532,14 @@ namespace AspNetCoreModule.Test.Framework
bool result = true;
if (servertype == ServerType.IIS)
{
if (!File.Exists(InitializeTestMachine.IISAspnetcoreSchema_path))
if (!File.Exists(InitializeTestMachine.FullIisAspnetcoreSchema_path))
{
result = false;
}
}
else
{
if (!File.Exists(InitializeTestMachine.IISExpressAspnetcoreSchema_path))
if (!File.Exists(InitializeTestMachine.IisExpressAspnetcoreSchema_path))
{
result = false;
}

View File

@ -17,24 +17,34 @@ namespace AspNetCoreModule.Test.Framework
public static int SiteId = 40000;
public const string PrivateFileName = "aspnetcore_private.dll";
public static string Aspnetcore_path = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "system32", "inetsrv", PrivateFileName);
public static string Aspnetcore_path_original = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "system32", "inetsrv", "aspnetcore.dll");
public static string Aspnetcore_X86_path = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "syswow64", "inetsrv", PrivateFileName);
public static string IISExpressAspnetcore_path = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "IIS Express", PrivateFileName);
public static string IISExpressAspnetcore_X86_path = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "IIS Express", PrivateFileName);
public static string FullIisAspnetcore_path = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "system32", "inetsrv", PrivateFileName);
public static string FullIisAspnetcore_path_original = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "system32", "inetsrv", "aspnetcore.dll");
public static string FullIisAspnetcore_X86_path = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "syswow64", "inetsrv", PrivateFileName);
public static string IisExpressAspnetcore_path = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "IIS Express", PrivateFileName);
public static string IisExpressAspnetcore_X86_path = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "IIS Express", PrivateFileName);
public static string IISExpressAspnetcoreSchema_path = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "IIS Express", "config", "schema", "aspnetcore_schema.xml");
public static string IISAspnetcoreSchema_path = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "system32", "inetsrv", "config", "schema", "aspnetcore_schema.xml");
public static string IisExpressAspnetcoreSchema_path = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "IIS Express", "config", "schema", "aspnetcore_schema.xml");
public static string IisExpressAspnetcoreSchema_X86_path = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "IIS Express", "config", "schema", "aspnetcore_schema.xml");
public static string FullIisAspnetcoreSchema_path = Path.Combine(Environment.ExpandEnvironmentVariables("%windir%"), "system32", "inetsrv", "config", "schema", "aspnetcore_schema.xml");
public static int _referenceCount = 0;
private static bool _InitializeTestMachineCompleted = false;
private string _setupScriptPath = null;
private void CheckPerquisiteForANCMTEst()
{
if (Environment.Is64BitOperatingSystem && !Environment.Is64BitProcess)
{
throw new System.InvalidOperationException(@"ANCM test should be started with x64 process mode on 64 bit machine; if you run this test on Visual Studio, you should set X64 first after selecting 'Test -> Test Settings -> Default Process Architecture' menu");
}
}
public InitializeTestMachine()
{
_referenceCount++;
if (_referenceCount == 1)
{
CheckPerquisiteForANCMTEst();
TestUtility.LogInformation("InitializeTestMachine::InitializeTestMachine() Start");
_InitializeTestMachineCompleted = false;
@ -160,7 +170,7 @@ namespace AspNetCoreModule.Test.Framework
{
using (var iisConfig = new IISConfigUtility(ServerType.IIS, null))
{
iisConfig.AddModule("AspNetCoreModule", Aspnetcore_path, null);
iisConfig.AddModule("AspNetCoreModule", FullIisAspnetcore_path, null);
}
}
}
@ -269,16 +279,28 @@ namespace AspNetCoreModule.Test.Framework
TestUtility.ResetHelper(ResetHelperMode.KillWorkerProcess);
TestUtility.ResetHelper(ResetHelperMode.StopW3svcStartW3svc);
Thread.Sleep(1000);
string from = Path.Combine(outputPath, "x64", "aspnetcore.dll");
TestUtility.FileCopy(from, Aspnetcore_path, overWrite:true, ignoreExceptionWhileDeletingExistingFile:false);
TestUtility.FileCopy(from, IISExpressAspnetcore_path, overWrite: true, ignoreExceptionWhileDeletingExistingFile: false);
TestUtility.FileCopy(from, FullIisAspnetcore_path, overWrite:true, ignoreExceptionWhileDeletingExistingFile:false);
TestUtility.FileCopy(from, IisExpressAspnetcore_path, overWrite: true, ignoreExceptionWhileDeletingExistingFile: false);
// NOTE: schema file can't be overwritten, if there is any schema change, that should be updated manually
from = Path.Combine(outputPath, "x64", "aspnetcore_schema.xml");
TestUtility.FileCopy(from, FullIisAspnetcoreSchema_path, overWrite: false, ignoreExceptionWhileDeletingExistingFile: false);
TestUtility.FileCopy(from, IisExpressAspnetcoreSchema_path, overWrite: false, ignoreExceptionWhileDeletingExistingFile: false);
if (TestUtility.IsOSAmd64)
{
from = Path.Combine(outputPath, "Win32", "aspnetcore.dll");
TestUtility.FileCopy(from, Aspnetcore_X86_path, overWrite: true, ignoreExceptionWhileDeletingExistingFile: false);
TestUtility.FileCopy(from, IISExpressAspnetcore_X86_path, overWrite: true, ignoreExceptionWhileDeletingExistingFile: false);
TestUtility.FileCopy(from, FullIisAspnetcore_X86_path, overWrite: true, ignoreExceptionWhileDeletingExistingFile: false);
TestUtility.FileCopy(from, IisExpressAspnetcore_X86_path, overWrite: true, ignoreExceptionWhileDeletingExistingFile: false);
// NOTE: schema file can't be overwritten, if there is any schema change, that should be updated manually
from = Path.Combine(outputPath, "Win32", "aspnetcore_schema.xml");
TestUtility.FileCopy(from, IisExpressAspnetcoreSchema_X86_path, overWrite: false, ignoreExceptionWhileDeletingExistingFile: false);
}
updateSuccess = true;
}
catch

View File

@ -437,25 +437,41 @@ namespace AspNetCoreModule.Test.Framework
public static string GetMakeCertPath()
{
string makecertExeFilePath = "makecert.exe";
var makecertExeFilePaths = new string[]
var makecertExeFilePaths = new Dictionary<string, string>();
makecertExeFilePaths.Add("default", Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "Windows Kits"));
if (IsOSAmd64)
{
Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "Windows Kits", "8.1", "bin", "x64", "makecert.exe"),
Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "Windows Kits", "8.1", "bin", "x86", "makecert.exe"),
Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "Windows Kits", "8.0", "bin", "x64", "makecert.exe"),
Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "Windows Kits", "8.0", "bin", "x86", "makecert.exe"),
Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "Windows SKDs", "Windows", "v7.1A", "bin", "x64", "makecert.exe"),
Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), "Windows SKDs", "Windows", "v7.1A", "bin", "makecert.exe")
};
makecertExeFilePaths.Add("wow64mode", Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "Windows Kits"));
}
foreach (string item in makecertExeFilePaths)
foreach (var item in makecertExeFilePaths)
{
if (File.Exists(item))
string[] files = null;
if (!Directory.Exists(item.Value))
{
makecertExeFilePath = item;
continue;
}
files = Directory.GetFiles(item.Value, "makecert.exe", SearchOption.AllDirectories);
foreach (string makecert in files)
{
if (makecert.Contains("arm"))
{
// arm process version is skipped here
continue;
}
makecertExeFilePath = makecert;
try
{
TestUtility.RunCommand(makecertExeFilePath, null, true, true);
}
catch
{
continue;
}
break;
}
}
return makecertExeFilePath;
}

View File

@ -187,6 +187,10 @@ namespace AspNetCoreModule.Test.Framework
string tempSiteName = "ANCMTest_Temp";
int tempId = InitializeTestMachine.SiteId - 1;
string argumentFileName = (new TestWebApplication("/", publishPathOutput, null)).GetArgumentFileName();
if (string.IsNullOrEmpty(argumentFileName))
{
argumentFileName = "AspNetCoreModule.TestSites.Standard.dll";
}
iisConfig.CreateSite(tempSiteName, publishPathOutput, tempId, tempId);
iisConfig.SetANCMConfig(tempSiteName, "/", "arguments", Path.Combine(publishPathOutput, argumentFileName));
iisConfig.DeleteSite(tempSiteName);
@ -322,7 +326,6 @@ namespace AspNetCoreModule.Test.Framework
catch
{
statusCode = "ExceptionError";
}
if ("200" == statusCode)
{

View File

@ -40,7 +40,7 @@ namespace AspNetCoreModule.Test
if (_environmentVariableName == "%ANCMTestFlags%")
{
var envValue = Environment.ExpandEnvironmentVariables(_environmentVariableName);
if (envValue == "")
if (string.IsNullOrEmpty(envValue))
{
envValue = "AdminAnd64Bit";
}