diff --git a/build.cmd b/build.cmd
index 3aaf957583..fc46f01044 100644
--- a/build.cmd
+++ b/build.cmd
@@ -22,6 +22,10 @@ IF EXIST packages\KoreBuild goto run
IF "%SKIP_KRE_INSTALL%"=="1" goto run
CALL packages\KoreBuild\build\kvm upgrade -svr50 -x86
CALL packages\KoreBuild\build\kvm install default -svrc50 -x86
+IF "%Processor_Architecture%" == "AMD64"(
+ CALL packages\KoreBuild\build\kvm install default -svr50 -x64
+ CALL packages\KoreBuild\build\kvm install default -svrc50 -x64
+)
:run
CALL packages\KoreBuild\build\kvm use default -svr50 -x86
diff --git a/src/MusicStore/Startup.cs b/src/MusicStore/Startup.cs
index f8c63f3360..39c30f6add 100644
--- a/src/MusicStore/Startup.cs
+++ b/src/MusicStore/Startup.cs
@@ -24,6 +24,11 @@ namespace MusicStore
configuration.AddJsonFile("LocalConfig.json");
configuration.AddEnvironmentVariables(); //All environment variables in the process's context flow in as configuration values.
+ /* Error page middleware displays a nice formatted HTML page for any unhandled exceptions in the request pipeline.
+ * Note: ErrorPageOptions.ShowAll to be used only at development time. Not recommended for production.
+ */
+ app.UseErrorPage(ErrorPageOptions.ShowAll);
+
app.UseServices(services =>
{
//If this type is present - we're on mono
@@ -66,11 +71,6 @@ namespace MusicStore
services.AddMvc();
});
- /* Error page middleware displays a nice formatted HTML page for any unhandled exceptions in the request pipeline.
- * Note: ErrorPageOptions.ShowAll to be used only at development time. Not recommended for production.
- */
- app.UseErrorPage(ErrorPageOptions.ShowAll);
-
// Add static files to the request pipeline
app.UseStaticFiles();
diff --git a/test/E2ETests/DeploymentUtility.cs b/test/E2ETests/DeploymentUtility.cs
index c954f38305..63f1538f5c 100644
--- a/test/E2ETests/DeploymentUtility.cs
+++ b/test/E2ETests/DeploymentUtility.cs
@@ -1,8 +1,9 @@
using System;
using System.Diagnostics;
using System.IO;
-using System.Linq;
using System.Threading;
+using System.Text;
+using System.Text.RegularExpressions;
using Microsoft.Framework.Runtime;
using Microsoft.Framework.Runtime.Infrastructure;
@@ -10,19 +11,23 @@ namespace E2ETests
{
internal class DeploymentUtility
{
- private static string GetIISExpressPath()
+ private static string GetIISExpressPath(KreArchitecture architecture)
{
+ // Get path to program files
var iisExpressPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "IIS Express", "iisexpress.exe");
- //If X86 version does not exist
- if (!File.Exists(iisExpressPath))
+ // Get path to 64 bit of IIS Express
+ if (architecture == KreArchitecture.x64)
{
iisExpressPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "IIS Express", "iisexpress.exe");
- if (!File.Exists(iisExpressPath))
- {
- throw new Exception("Unable to find IISExpress on the machine");
- }
+ // If process is 32 bit, the path points to x86. Replace path to point to x64
+ iisExpressPath = Environment.Is64BitProcess ? iisExpressPath : iisExpressPath.Replace(" (x86)", "");
+ }
+
+ if (!File.Exists(iisExpressPath))
+ {
+ throw new Exception("Unable to find IISExpress on the machine");
}
return iisExpressPath;
@@ -48,11 +53,11 @@ namespace E2ETests
private const string APP_RELATIVE_PATH = @"..\..\src\MusicStore\";
- public static Process StartApplication(ServerType hostType, KreFlavor kreFlavor, string identityDbName)
+ public static Process StartApplication(ServerType hostType, KreFlavor kreFlavor, KreArchitecture kreArchitecture, string identityDbName)
{
string applicationPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, APP_RELATIVE_PATH));
//Tweak the %PATH% to the point to the right KREFLAVOR
- Environment.SetEnvironmentVariable("PATH", SwitchPathToKreFlavor(kreFlavor));
+ Environment.SetEnvironmentVariable("PATH", SwitchPathToKreFlavor(kreFlavor, kreArchitecture));
var backupKreDefaultLibPath = Environment.GetEnvironmentVariable("KRE_DEFAULT_LIB");
//To avoid the KRE_DEFAULT_LIB of the test process flowing into Helios, set it to empty
Environment.SetEnvironmentVariable("KRE_DEFAULT_LIB", string.Empty);
@@ -60,7 +65,7 @@ namespace E2ETests
if (hostType == ServerType.Helios)
{
- hostProcess = StartHeliosHost(applicationPath);
+ hostProcess = StartHeliosHost(applicationPath, kreArchitecture);
}
else
{
@@ -72,13 +77,13 @@ namespace E2ETests
return hostProcess;
}
- private static Process StartHeliosHost(string applicationPath)
+ private static Process StartHeliosHost(string applicationPath, KreArchitecture kreArchitecture)
{
CopyAspNetLoader(applicationPath);
var startInfo = new ProcessStartInfo
{
- FileName = GetIISExpressPath(),
+ FileName = GetIISExpressPath(kreArchitecture),
Arguments = string.Format("/port:5001 /path:{0}", applicationPath),
UseShellExecute = true,
CreateNoWindow = true
@@ -111,15 +116,18 @@ namespace E2ETests
return hostProcess;
}
- private static string SwitchPathToKreFlavor(KreFlavor kreFlavor)
+ private static string SwitchPathToKreFlavor(KreFlavor kreFlavor, KreArchitecture kreArchitecture)
{
var pathValue = Environment.GetEnvironmentVariable("PATH");
Console.WriteLine();
Console.WriteLine("Current %PATH% value : {0}", pathValue);
- pathValue = (kreFlavor == KreFlavor.CoreClr) ?
- pathValue.Replace("KRE-svr50-", "KRE-svrc50-") :
- pathValue.Replace("KRE-svrc50-", "KRE-svr50-");
+ StringBuilder replaceStr = new StringBuilder();
+ replaceStr.Append("KRE");
+ replaceStr.Append((kreFlavor == KreFlavor.CoreClr) ? "-svrc50" : "-svr50");
+ replaceStr.Append((kreArchitecture == KreArchitecture.x86) ? "-x86" : "-x64");
+
+ pathValue = Regex.Replace(pathValue, "KRE-(svr|svrc)50-(x86|x64)", replaceStr.ToString(), RegexOptions.IgnoreCase);
Console.WriteLine();
Console.WriteLine("Setting %PATH% value to : {0}", pathValue);
diff --git a/test/E2ETests/E2ETests.kproj b/test/E2ETests/E2ETests.kproj
index 0ca3bfdf03..ad0e1100e6 100644
--- a/test/E2ETests/E2ETests.kproj
+++ b/test/E2ETests/E2ETests.kproj
@@ -29,10 +29,11 @@
+
-
+
\ No newline at end of file
diff --git a/test/E2ETests/KreArchitecture.cs b/test/E2ETests/KreArchitecture.cs
new file mode 100644
index 0000000000..e12d87eb1c
--- /dev/null
+++ b/test/E2ETests/KreArchitecture.cs
@@ -0,0 +1,8 @@
+namespace E2ETests
+{
+ public enum KreArchitecture
+ {
+ x64,
+ x86
+ }
+}
\ No newline at end of file
diff --git a/test/E2ETests/SmokeTests.cs b/test/E2ETests/SmokeTests.cs
index 07390d531c..fc8dbbd598 100644
--- a/test/E2ETests/SmokeTests.cs
+++ b/test/E2ETests/SmokeTests.cs
@@ -16,15 +16,29 @@ namespace E2ETests
private HttpClientHandler httpClientHandler;
[Theory]
- [InlineData(ServerType.Helios, KreFlavor.DesktopClr, "http://localhost:5001/")]
- [InlineData(ServerType.WebListener, KreFlavor.DesktopClr, "http://localhost:5002/")]
- [InlineData(ServerType.Kestrel, KreFlavor.DesktopClr, "http://localhost:5004/")]
- [InlineData(ServerType.Helios, KreFlavor.CoreClr, "http://localhost:5001/")]
- [InlineData(ServerType.WebListener, KreFlavor.CoreClr, "http://localhost:5002/")]
- [InlineData(ServerType.Kestrel, KreFlavor.CoreClr, "http://localhost:5004/")]
- public void SmokeTestSuite(ServerType hostType, KreFlavor kreFlavor, string applicationBaseUrl)
+ [InlineData(ServerType.Helios, KreFlavor.DesktopClr, KreArchitecture.x86, "http://localhost:5001/")]
+ [InlineData(ServerType.WebListener, KreFlavor.DesktopClr, KreArchitecture.x86, "http://localhost:5002/")]
+ [InlineData(ServerType.Kestrel, KreFlavor.DesktopClr, KreArchitecture.x86, "http://localhost:5004/")]
+ [InlineData(ServerType.Helios, KreFlavor.CoreClr, KreArchitecture.x86, "http://localhost:5001/")]
+ [InlineData(ServerType.WebListener, KreFlavor.CoreClr, KreArchitecture.x86, "http://localhost:5002/")]
+ [InlineData(ServerType.Kestrel, KreFlavor.CoreClr, KreArchitecture.x86, "http://localhost:5004/")]
+ [InlineData(ServerType.WebListener, KreFlavor.DesktopClr, KreArchitecture.x64, "http://localhost:5002/")]
+ // Uncomment Core CLR on x64 after following bugs are resolved
+ // https://github.com/aspnet/Identity/issues/157
+ // https://github.com/aspnet/Mvc/issues/846
+ //[InlineData(ServerType.Helios, KreFlavor.CoreClr, KreArchitecture.x64, "http://localhost:5001/")]
+ //[InlineData(ServerType.Kestrel, KreFlavor.CoreClr, KreArchitecture.x64, "http://localhost:5004/")]
+ public void SmokeTestSuite(ServerType hostType, KreFlavor kreFlavor, KreArchitecture architecture, string applicationBaseUrl)
{
- Console.WriteLine("Variation Details : HostType = {0}, KreFlavor = {1}, applicationBaseUrl = {2}", hostType, kreFlavor, applicationBaseUrl);
+ Console.WriteLine("Variation Details : HostType = {0}, KreFlavor = {1}, Architecture = {2}, applicationBaseUrl = {3}", hostType, kreFlavor, architecture, applicationBaseUrl);
+
+ // Check if processor architecture is x64, else ship test
+ if (architecture == KreArchitecture.x64 && !Environment.Is64BitOperatingSystem)
+ {
+ Console.WriteLine("Skipping x64 test since machine is of type x86");
+ Assert.True(true);
+ return;
+ }
var testStartTime = DateTime.Now;
var musicStoreDbName = Guid.NewGuid().ToString().Replace("-", string.Empty);
@@ -40,7 +54,7 @@ namespace E2ETests
try
{
- hostProcess = DeploymentUtility.StartApplication(hostType, kreFlavor, musicStoreDbName);
+ hostProcess = DeploymentUtility.StartApplication(hostType, kreFlavor, architecture, musicStoreDbName);
httpClientHandler = new HttpClientHandler();
httpClient = new HttpClient(httpClientHandler) { BaseAddress = new Uri(applicationBaseUrl) };