зеркало из https://github.com/microsoft/Oryx.git
Tests: Get the port for running sample apps dynamically (#131)
This commit is contained in:
Родитель
6e307f193f
Коммит
fd6baeff09
|
@ -25,10 +25,11 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
public void BuildScriptGenIsIncludedInBuildImage()
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
imageId: Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "oryx",
|
||||
commandArguments: null);
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "oryx",
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() =>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.Oryx.BuildScriptGenerator.DotNetCore;
|
||||
|
@ -39,17 +40,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -74,17 +72,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -110,17 +105,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -145,17 +137,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -181,17 +170,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -217,17 +203,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -254,17 +237,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -316,17 +296,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -383,17 +360,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -448,17 +422,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -489,17 +460,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -552,17 +520,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -613,17 +578,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -649,17 +611,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
buildScript
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", buildScript }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -689,17 +648,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
SampleAppsTestBase.CreateAppNameEnvVar(appName),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.Oryx.Common;
|
||||
|
@ -17,10 +18,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
{
|
||||
private static readonly string SampleAppName = "webfrontend";
|
||||
|
||||
private DockerVolume CreateWebFrontEndVolume() => DockerVolume.Create(Path.Combine(_hostSamplesDir, "nodejs", SampleAppName));
|
||||
private DockerVolume CreateWebFrontEndVolume() => DockerVolume.Create(
|
||||
Path.Combine(_hostSamplesDir, "nodejs", SampleAppName));
|
||||
|
||||
public NodeJSSampleAppsTest(ITestOutputHelper output) :
|
||||
base(output, new DockerCli(new EnvironmentVariable[] { new EnvironmentVariable(LoggingConstants.AppServiceAppNameEnvironmentVariableName, SampleAppName) }))
|
||||
base(output, new DockerCli(new EnvironmentVariable[]
|
||||
{
|
||||
new EnvironmentVariable(LoggingConstants.AppServiceAppNameEnvironmentVariableName, SampleAppName)
|
||||
}))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -37,16 +42,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -77,16 +79,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -110,16 +109,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -147,17 +143,17 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "xyz"),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable>
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "xyz")
|
||||
},
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -179,7 +175,8 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
var spcifyNodeVersionCommand = "-l nodejs --language-version=" + version;
|
||||
var nestedOutputDir = "/tmp/output";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
|
||||
.AddCommand(
|
||||
$"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
|
||||
.AddDirectoryExistsCheck($"{nestedOutputDir}/node_modules")
|
||||
.AddFileExistsCheck($"{nestedOutputDir}/oryx-appinsightsloader.js")
|
||||
.AddFileExistsCheck($"{nestedOutputDir}/oryx-manifest.toml")
|
||||
|
@ -187,17 +184,17 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "xyz"),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable>
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "xyz")
|
||||
},
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -211,7 +208,8 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
[Theory]
|
||||
[MemberData(nameof(TestValueGenerator.GetNodeVersions_DoesNotSupportDebugging),
|
||||
MemberType = typeof(TestValueGenerator))]
|
||||
public void BuildNodeApp_DoesNotConfigureAppInsights_WithWrongNodeVersion_AIEnvironmentVariableSet(string version)
|
||||
public void BuildNodeApp_DoesNotConfigureAppInsights_WithWrongNodeVersion_AIEnvironmentVariableSet(
|
||||
string version)
|
||||
{
|
||||
// Arrange
|
||||
var volume = CreateWebFrontEndVolume();
|
||||
|
@ -219,24 +217,25 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
var nestedOutputDir = "/tmp/output";
|
||||
var spcifyNodeVersionCommand = "-l nodejs --language-version=" + version;
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
|
||||
.AddCommand(
|
||||
$"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
|
||||
.AddDirectoryExistsCheck($"{nestedOutputDir}/node_modules")
|
||||
.AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-appinsightsloader.js")
|
||||
.AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-manifest.toml")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "xyz"),
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable>
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "xyz")
|
||||
},
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -250,7 +249,8 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
[Theory]
|
||||
[MemberData(nameof(TestValueGenerator.GetNodeVersions_SupportDebugging),
|
||||
MemberType = typeof(TestValueGenerator))]
|
||||
public void BuildNodeApp_DoesNotConfigureAppInsights_WithCorrectNodeVersion_AIEnvironmentVariableNotSet(string version)
|
||||
public void BuildNodeApp_DoesNotConfigureAppInsights_WithCorrectNodeVersion_AIEnvironmentVariableNotSet(
|
||||
string version)
|
||||
{
|
||||
// Arrange
|
||||
var volume = CreateWebFrontEndVolume();
|
||||
|
@ -258,23 +258,21 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
var nestedOutputDir = "/tmp/output";
|
||||
var spcifyNodeVersionCommand = "-l nodejs --language-version=" + version;
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
|
||||
.AddCommand(
|
||||
$"oryx build {appDir} -o {nestedOutputDir} {spcifyNodeVersionCommand} --log-file {appDir}/1.log")
|
||||
.AddDirectoryExistsCheck($"{nestedOutputDir}/node_modules")
|
||||
.AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-appinsightsloader.js")
|
||||
.AddFileDoesNotExistCheck($"{nestedOutputDir}/oryx-manifest.toml")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -305,16 +303,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -325,10 +320,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
result.GetDebugInfo());
|
||||
}
|
||||
|
||||
private ShellScriptBuilder SetupEnvironment_ErrorDetectingNodeTest(string appDir, string appOutputDir, string logFile)
|
||||
private ShellScriptBuilder SetupEnvironment_ErrorDetectingNodeTest(
|
||||
string appDir,
|
||||
string appOutputDir,
|
||||
string logFile)
|
||||
{
|
||||
var nodeCode =
|
||||
@"var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200); res.end('Hi oryx');}); server.listen(8080);";
|
||||
@"var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200); " +
|
||||
"res.end('Hi oryx');}); server.listen(8080);";
|
||||
|
||||
//following is the directory structure of the source repo in the test
|
||||
//tmp
|
||||
|
@ -368,15 +367,12 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -403,15 +399,12 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -438,17 +431,12 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
"\"" +
|
||||
script +
|
||||
"\""
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", "\"" + script + "\"" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -472,16 +460,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -510,16 +495,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -548,16 +530,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -582,16 +561,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -614,16 +590,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -647,16 +620,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
buildScript
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", buildScript }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -708,16 +678,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -750,16 +717,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -785,20 +749,19 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.AddBuildCommand($"{appDir} -i /tmp/int -o {appOutputDir} -p compress_node_modules=zip")
|
||||
.AddFileExistsCheck($"{appOutputDir}/node_modules.zip")
|
||||
.AddDirectoryDoesNotExistCheck($"{appOutputDir}/node_modules")
|
||||
.AddStringExistsInFileCheck("compressedNodeModulesFile=\"node_modules.zip\"", $"{appOutputDir}/oryx-manifest.toml")
|
||||
.AddStringExistsInFileCheck(
|
||||
"compressedNodeModulesFile=\"node_modules.zip\"",
|
||||
$"{appOutputDir}/oryx-manifest.toml")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
buildScript
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", buildScript }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
@ -823,16 +786,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
volume,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
// Licensed under the MIT license.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Microsoft.Oryx.Common;
|
||||
using Microsoft.Oryx.Tests.Common;
|
||||
using System;
|
||||
using System.IO;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
|
@ -34,7 +34,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(Settings.BuildImageName, CreateAppNameEnvVar(appName), volume, "/bin/bash", new[] { "-c", script });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() =>
|
||||
|
@ -59,7 +66,14 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(Settings.BuildImageName, CreateAppNameEnvVar(appName), volume, "/bin/bash", new[] { "-c", script });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable> { CreateAppNameEnvVar(appName) },
|
||||
Volumes = new List<DockerVolume> { volume },
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() =>
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -3,10 +3,10 @@
|
|||
// Licensed under the MIT license.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using Microsoft.Oryx.Common;
|
||||
using Microsoft.Oryx.Tests.Common;
|
||||
using System;
|
||||
using System.IO;
|
||||
using Microsoft.Oryx.Common;
|
||||
using Microsoft.Oryx.Tests.Common;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Microsoft.Oryx.BuildImage.Tests
|
||||
|
|
|
@ -35,14 +35,18 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
var expectedOryxVersion = string.Concat(Settings.OryxVersion, buildNumber);
|
||||
|
||||
// we cant always rely on gitcommitid as env variable in case build context is not correctly passed
|
||||
// so we should check agent_os environment variable to know if the build is happening in azure devops agent
|
||||
// so we should check agent_os environment variable to know if the test is happening in azure devops agent
|
||||
// or locally, locally we need to skip this test
|
||||
Skip.If(string.IsNullOrEmpty(agentOS));
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "oryx",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "oryx",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
RunAsserts(
|
||||
|
@ -63,10 +67,12 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
var expectedOutput = DotNetCoreVersions.DotNetCore21Version;
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "dotnet",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "dotnet",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -90,26 +96,21 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
[InlineData("2.2", DotNetCoreVersions.DotNetCore22Version)]
|
||||
[InlineData(DotNetCoreVersions.DotNetCore22Version, DotNetCoreVersions.DotNetCore22Version)]
|
||||
[InlineData("3.0", DotNetCoreVersions.DotNetCore30VersionPreviewName)]
|
||||
public void DotnetAlias_UsesVersion_SpecifiedAtDockerRun(
|
||||
string versionSentToDockerRun,
|
||||
string expectedOutput)
|
||||
public void DotnetAlias_UsesVersion_SetOnBenv(string specifiedVersion, string expectedOutput)
|
||||
{
|
||||
// Arrange
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"source /usr/local/bin/benv dotnet={versionSentToDockerRun}")
|
||||
.AddCommand($"source benv dotnet={specifiedVersion}")
|
||||
.AddCommand("dotnet --version")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -128,11 +129,13 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
// Arrange
|
||||
var expectedOutput = "v10.15.2";
|
||||
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "node",
|
||||
commandArguments: new[] { "--version" });
|
||||
// Act
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "node",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -152,10 +155,12 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
var expectedOutput = Python27VersionInfo;
|
||||
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "python",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "python",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdErr.ReplaceNewLine();
|
||||
|
@ -175,10 +180,12 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
var expectedOutput = $"Python {Common.PythonVersions.Python37Version}";
|
||||
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "python3",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "python3",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -216,26 +223,21 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
[InlineData("10.10.0", "v10.10.0")]
|
||||
[InlineData("10.14.1", "v10.14.1")]
|
||||
[InlineData("10.15", "v10.15.2")]
|
||||
public void NodeAlias_UsesVersion_SpecifiedAtDockerRun(
|
||||
string versionSentToDockerRun,
|
||||
string expectedOutput)
|
||||
public void NodeAlias_UsesVersion_SetOnBenv(string specifiedVersion, string expectedOutput)
|
||||
{
|
||||
// Arrange
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"source /usr/local/bin/benv node={versionSentToDockerRun}")
|
||||
.AddCommand($"source benv node={specifiedVersion}")
|
||||
.AddCommand("node --version")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -260,20 +262,17 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
{
|
||||
// Arrange
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"source /usr/local/bin/benv node={nodeVersion}")
|
||||
.AddCommand($"source benv node={nodeVersion}")
|
||||
.AddCommand("npm --version")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -309,15 +308,12 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -334,26 +330,21 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
[InlineData("2", Python27VersionInfo)]
|
||||
[InlineData("2.7", Python27VersionInfo)]
|
||||
[InlineData(Settings.Python27Version, Python27VersionInfo)]
|
||||
public void PythonAlias_UsesVersion_SpecifiedAtDockerRun(
|
||||
string versionSentToDockerRun,
|
||||
string expectedOutput)
|
||||
public void PythonAlias_UsesVersion_SetOnBenv(string specifiedVersion, string expectedOutput)
|
||||
{
|
||||
// Arrange
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"source /usr/local/bin/benv python={versionSentToDockerRun}")
|
||||
.AddCommand($"source benv python={specifiedVersion}")
|
||||
.AddCommand("python --version")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
// NOTE: Python2 version writes out information to StdErr unlike Python3 versions
|
||||
|
@ -371,26 +362,21 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
[InlineData("2", Python27VersionInfo)]
|
||||
[InlineData("2.7", Python27VersionInfo)]
|
||||
[InlineData(Settings.Python27Version, Python27VersionInfo)]
|
||||
public void Python2Alias_UsesVersion_SpecifiedAtDockerRun(
|
||||
string versionSentToDockerRun,
|
||||
string expectedOutput)
|
||||
public void Python2Alias_UsesVersion_SetOnBenv(string specifiedVersion, string expectedOutput)
|
||||
{
|
||||
// Arrange
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"source /usr/local/bin/benv python={versionSentToDockerRun}")
|
||||
.AddCommand($"source benv python={specifiedVersion}")
|
||||
.AddCommand("python2 --version")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdErr.ReplaceNewLine();
|
||||
|
@ -410,26 +396,21 @@ namespace Microsoft.Oryx.BuildImage.Tests
|
|||
[InlineData(Settings.Python36Version, Python36VersionInfo)]
|
||||
[InlineData("3.7", Python37VersionInfo)]
|
||||
[InlineData(Common.PythonVersions.Python37Version, Python37VersionInfo)]
|
||||
public void Python3_UsesVersion_SpecifiedAtDockerRun(
|
||||
string versionSentToDockerRun,
|
||||
string expectedOutput)
|
||||
public void Python3_UsesVersion_SetOnBenv(string specifiedVersion, string expectedOutput)
|
||||
{
|
||||
// Arrange
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"source /usr/local/bin/benv python={versionSentToDockerRun}")
|
||||
.AddCommand($"source benv python={specifiedVersion}")
|
||||
.AddCommand("python --version")
|
||||
.ToString();
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
commandToExecuteOnRun: "/bin/bash",
|
||||
commandArguments:
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
});
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
CommandToExecuteOnRun = "/bin/bash",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
|
|
@ -16,10 +16,5 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
public const string DatabaseName = "oryxdb";
|
||||
public const string DatabaseUserName = "oryxuser";
|
||||
public static readonly string DatabaseUserPwd = System.Guid.NewGuid().ToString();
|
||||
|
||||
internal const int NodeEndToEndTestsPort = 8010;
|
||||
internal const int PythonEndToEndTestsPort = 7010;
|
||||
internal const int DotNetCoreEndToEndTestsPort = 9010;
|
||||
internal const int PhpEndToEndTestsPort = 10010;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,26 +18,26 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
{
|
||||
protected readonly ITestOutputHelper _output;
|
||||
protected readonly Fixtures.DbContainerFixtureBase _dbFixture;
|
||||
private static readonly Random _rand = new Random();
|
||||
protected readonly int _hostPort;
|
||||
protected readonly HttpClient _httpClient = new HttpClient();
|
||||
|
||||
protected DatabaseTestsBase(ITestOutputHelper outputHelper, Fixtures.DbContainerFixtureBase dbFixture)
|
||||
{
|
||||
_output = outputHelper;
|
||||
_dbFixture = dbFixture;
|
||||
_hostPort = 8080 + _rand.Next(100);
|
||||
HostSamplesDir = Path.Combine(Directory.GetCurrentDirectory(), "SampleApps");
|
||||
}
|
||||
|
||||
protected string HostSamplesDir { get; }
|
||||
|
||||
protected async Task RunTestAsync(string language, string languageVersion, string samplePath,
|
||||
int containerPort = 8000, bool specifyBindPortFlag = true)
|
||||
protected async Task RunTestAsync(
|
||||
string language,
|
||||
string languageVersion,
|
||||
string samplePath,
|
||||
int containerPort = 8000,
|
||||
bool specifyBindPortFlag = true)
|
||||
{
|
||||
var volume = DockerVolume.Create(samplePath);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{_hostPort}:{containerPort}";
|
||||
var entrypointScript = "./run.sh";
|
||||
var bindPortFlag = specifyBindPortFlag ? $"-bindPort {containerPort}" : string.Empty;
|
||||
var script = new ShellScriptBuilder()
|
||||
|
@ -60,11 +60,12 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx", new[] { "build", appDir, "-l", language, "--language-version", languageVersion },
|
||||
runtimeImageName,
|
||||
_dbFixture.GetCredentialsAsEnvVars(),
|
||||
portMapping, link,
|
||||
containerPort,
|
||||
link,
|
||||
"/bin/sh", new[] { "-c", script },
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{_hostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal(
|
||||
_dbFixture.GetSampleDataAsJson(),
|
||||
data.Trim(),
|
||||
|
|
|
@ -16,7 +16,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "dotnetcore")]
|
||||
public class DotNetCoreEndToEndTests : PlatformEndToEndTestsBase
|
||||
{
|
||||
private const int HostPort = Constants.DotNetCoreEndToEndTestsPort;
|
||||
private const int ContainerPort = 3000;
|
||||
private const string NetCoreApp11WebApp = "NetCoreApp11WebApp";
|
||||
private const string NetCoreApp21WebApp = "NetCoreApp21.WebApp";
|
||||
|
@ -44,7 +43,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp11WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -66,16 +64,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -89,7 +87,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -111,16 +108,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -133,7 +130,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp21WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/{DotnetCoreConstants.OryxOutputPublishDirectory}";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion}")
|
||||
|
@ -155,16 +151,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -177,7 +173,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp21WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -o {appOutputDir} -l dotnet --language-version {dotnetcoreVersion}")
|
||||
|
@ -203,16 +198,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -225,7 +220,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", "NetCoreApp21WithExplicitAssemblyName");
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -o {appOutputDir} -l dotnet --language-version {dotnetcoreVersion}")
|
||||
|
@ -251,16 +245,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
|
||||
|
@ -274,7 +268,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp21WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -297,16 +290,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -320,7 +313,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -342,16 +334,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -364,7 +356,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp22WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -386,16 +377,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -408,7 +399,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp22WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -o {appOutputDir} -l dotnet --language-version {dotnetcoreVersion}")
|
||||
|
@ -435,16 +425,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -457,7 +447,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp30WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -479,16 +468,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -512,7 +501,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp30WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"source benv dotnet=3")
|
||||
|
@ -536,16 +524,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
"oryxdevms/dotnetcore-1.1",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -558,7 +546,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp30WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -o {appOutputDir} -l dotnet --language-version {dotnetcoreVersion}")
|
||||
|
@ -580,16 +567,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -603,7 +590,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -625,16 +611,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -647,7 +633,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp22WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -670,16 +655,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -692,7 +677,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp22WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -715,16 +699,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -738,7 +722,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand($"oryx build {appDir} -l dotnet --language-version {dotnetcoreVersion} -o {appOutputDir}")
|
||||
|
@ -760,16 +743,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -782,7 +765,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp21WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var startupFilePath = "/tmp/run.sh";
|
||||
var startupCommand = "\"dotnet foo.dll\"";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
|
@ -813,16 +795,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -836,7 +818,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var repoDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var setProjectEnvVariable = "export PROJECT=src/WebApp1/WebApp1.csproj";
|
||||
var appOutputDir = $"{repoDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
|
@ -861,16 +842,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World! from WebApp1", data);
|
||||
});
|
||||
}
|
||||
|
@ -884,7 +865,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var repoDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{repoDir}/myoutputdir";
|
||||
var setProjectEnvVariable = "export PROJECT=src/WebApp1/WebApp1.csproj";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
|
@ -909,16 +889,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World! from WebApp1", data);
|
||||
});
|
||||
}
|
||||
|
@ -931,7 +911,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp21WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand(
|
||||
|
@ -955,16 +934,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -977,7 +956,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "DotNetCore", NetCoreApp21WebApp);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDir = $"{appDir}/myoutputdir";
|
||||
var buildImageScript = new ShellScriptBuilder()
|
||||
.AddCommand(
|
||||
|
@ -1001,16 +979,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildImageScript
|
||||
},
|
||||
$"oryxdevms/dotnetcore-{dotnetcoreVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runtimeImageScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -15,21 +15,18 @@ namespace Microsoft.Oryx.Integration.Tests.Fixtures
|
|||
{
|
||||
protected override DockerRunCommandResult RunDbServerContainer()
|
||||
{
|
||||
var runDbContainerResult = _dockerCli.Run(
|
||||
Settings.MySqlDbImageName,
|
||||
environmentVariables: new List<EnvironmentVariable>
|
||||
var runDbContainerResult = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.MySqlDbImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable>
|
||||
{
|
||||
new EnvironmentVariable("MYSQL_RANDOM_ROOT_PASSWORD", "yes"),
|
||||
new EnvironmentVariable("MYSQL_DATABASE", Constants.DatabaseName),
|
||||
new EnvironmentVariable("MYSQL_USER", Constants.DatabaseUserName),
|
||||
new EnvironmentVariable("MYSQL_PASSWORD", Constants.DatabaseUserPwd),
|
||||
},
|
||||
volumes: null,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: true,
|
||||
command: null,
|
||||
commandArguments: null);
|
||||
RunContainerInBackground = true,
|
||||
});
|
||||
|
||||
RunAsserts(() => Assert.True(runDbContainerResult.IsSuccess), runDbContainerResult.GetDebugInfo());
|
||||
return runDbContainerResult;
|
||||
|
|
|
@ -15,20 +15,17 @@ namespace Microsoft.Oryx.Integration.Tests.Fixtures
|
|||
{
|
||||
protected override DockerRunCommandResult RunDbServerContainer()
|
||||
{
|
||||
var runDbContainerResult = _dockerCli.Run(
|
||||
Settings.PostgresDbImageName,
|
||||
environmentVariables: new List<EnvironmentVariable>
|
||||
{
|
||||
new EnvironmentVariable("POSTGRES_DB", Constants.DatabaseName),
|
||||
new EnvironmentVariable("POSTGRES_USER", Constants.DatabaseUserName),
|
||||
new EnvironmentVariable("POSTGRES_PASSWORD", Constants.DatabaseUserPwd),
|
||||
},
|
||||
volumes: null,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: true,
|
||||
command: null,
|
||||
commandArguments: null);
|
||||
var runDbContainerResult = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.PostgresDbImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable>
|
||||
{
|
||||
new EnvironmentVariable("POSTGRES_DB", Constants.DatabaseName),
|
||||
new EnvironmentVariable("POSTGRES_USER", Constants.DatabaseUserName),
|
||||
new EnvironmentVariable("POSTGRES_PASSWORD", Constants.DatabaseUserPwd),
|
||||
},
|
||||
RunContainerInBackground = true,
|
||||
});
|
||||
|
||||
RunAsserts(() => Assert.True(runDbContainerResult.IsSuccess), runDbContainerResult.GetDebugInfo());
|
||||
return runDbContainerResult;
|
||||
|
|
|
@ -28,19 +28,16 @@ namespace Microsoft.Oryx.Integration.Tests.Fixtures
|
|||
|
||||
protected override DockerRunCommandResult RunDbServerContainer()
|
||||
{
|
||||
var runDbContainerResult = _dockerCli.Run(
|
||||
Settings.MicrosoftSQLServerImageName,
|
||||
environmentVariables: new List<EnvironmentVariable>
|
||||
{
|
||||
new EnvironmentVariable("ACCEPT_EULA", "Y"),
|
||||
new EnvironmentVariable("SA_PASSWORD", Constants.DatabaseUserPwd),
|
||||
},
|
||||
volumes: null,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: true,
|
||||
command: null,
|
||||
commandArguments: null);
|
||||
var runDbContainerResult = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.MicrosoftSQLServerImageName,
|
||||
EnvironmentVariables = new List<EnvironmentVariable>
|
||||
{
|
||||
new EnvironmentVariable("ACCEPT_EULA", "Y"),
|
||||
new EnvironmentVariable("SA_PASSWORD", Constants.DatabaseUserPwd),
|
||||
},
|
||||
RunContainerInBackground = true,
|
||||
});
|
||||
|
||||
RunAsserts(() => Assert.True(runDbContainerResult.IsSuccess), runDbContainerResult.GetDebugInfo());
|
||||
return runDbContainerResult;
|
||||
|
|
|
@ -31,8 +31,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
|
||||
public class NodeOtherEndtoEndTests : NodeEndToEndTestsBase
|
||||
{
|
||||
private readonly int HostPort = Constants.NodeEndToEndTestsPort;
|
||||
|
||||
public NodeOtherEndtoEndTests(ITestOutputHelper output, TestTempDirTestFixture testTempDirTestFixture)
|
||||
: base(output, testTempDirTestFixture)
|
||||
{
|
||||
|
@ -58,13 +56,11 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var containerPort = "80";
|
||||
var portMapping = $"{HostPort}:{containerPort}";
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appOutputDir}")
|
||||
.AddCommand("mkdir -p node_modules")
|
||||
.AddCommand("tar -xzf node_modules.tar.gz -C node_modules")
|
||||
.AddCommand($"oryx -bindPort {containerPort} -skipNodeModulesExtraction")
|
||||
.AddCommand($"oryx -bindPort {ContainerPort} -skipNodeModulesExtraction")
|
||||
.AddCommand(DefaultStartupFilePath)
|
||||
.AddDirectoryDoesNotExistCheck("/node_modules")
|
||||
.ToString();
|
||||
|
@ -87,16 +83,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runAppScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
});
|
||||
}
|
||||
|
@ -121,7 +117,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appOutputDir} -bindPort {ContainerPort}")
|
||||
|
@ -147,16 +142,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
});
|
||||
}
|
||||
|
@ -181,7 +176,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appOutputDir} -bindPort {ContainerPort}")
|
||||
|
@ -207,16 +201,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
});
|
||||
}
|
||||
|
@ -231,7 +225,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -245,20 +238,20 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task NodeStartupScript_UsesPortEnvironmentVariableValue()
|
||||
{
|
||||
|
@ -268,7 +261,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"export PORT={ContainerPort}")
|
||||
|
@ -283,16 +275,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
});
|
||||
}
|
||||
|
@ -306,7 +298,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"export PORT=9095")
|
||||
|
@ -321,16 +312,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
});
|
||||
}
|
||||
|
@ -344,7 +335,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var startupFilePath = "/tmp/startup.sh";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
|
@ -358,11 +348,11 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
volume,
|
||||
"oryx", new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh", new[] { "-c", script },
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
});
|
||||
}
|
||||
|
@ -377,7 +367,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -391,16 +380,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("{\"message\":\"Hello World!\"}", data);
|
||||
});
|
||||
}
|
||||
|
@ -414,7 +403,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -428,16 +416,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Welcome to Express", data);
|
||||
});
|
||||
}
|
||||
|
@ -451,7 +439,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -466,22 +453,22 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var response = await _httpClient.GetAsync($"http://localhost:{HostPort}/");
|
||||
var response = await _httpClient.GetAsync($"http://localhost:{hostPort}/");
|
||||
Assert.True(response.IsSuccessStatusCode);
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<title>SoundCloud • Angular2 NgRx</title>", data);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task Node_CreateReactAppSample()
|
||||
{
|
||||
|
@ -491,7 +478,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -505,16 +491,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<title>React App</title>", data);
|
||||
});
|
||||
}
|
||||
|
@ -537,7 +523,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appOutputDir} -bindPort {ContainerPort}")
|
||||
|
@ -558,12 +543,12 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"/bin/bash",
|
||||
new[] { "-c", buildScript },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[] { "-c", runAppScript },
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<title>React App</title>", data);
|
||||
});
|
||||
}
|
||||
|
@ -577,7 +562,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var runScript = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand(
|
||||
|
@ -593,16 +577,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildCmd: "oryx",
|
||||
buildArgs: new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
runtimeImageName: $"oryxdevms/build",
|
||||
portMapping: portMapping,
|
||||
ContainerPort,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[]
|
||||
{
|
||||
"-c",
|
||||
runScript
|
||||
},
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<title>React App</title>", data);
|
||||
});
|
||||
}
|
||||
|
@ -616,7 +600,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
|
||||
// Create a custom startup command
|
||||
const string customStartupScriptName = "customStartup.sh";
|
||||
|
@ -640,16 +623,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildCmd: "oryx",
|
||||
buildArgs: new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
runtimeImageName: $"oryxdevms/build",
|
||||
portMapping: portMapping,
|
||||
ContainerPort,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[]
|
||||
{
|
||||
"-c",
|
||||
runScript
|
||||
},
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal("Hello World from express!", data);
|
||||
});
|
||||
}
|
||||
|
@ -664,7 +647,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
const int localPort = 8080;
|
||||
var portMapping = $"{HostPort}:{localPort}";
|
||||
|
||||
// Create a custom startup command
|
||||
const string customStartupScriptCommand = "'npm start'";
|
||||
|
@ -684,16 +666,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildCmd: "oryx",
|
||||
buildArgs: new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
runtimeImageName: $"oryxdevms/build",
|
||||
portMapping: portMapping,
|
||||
ContainerPort,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[]
|
||||
{
|
||||
"-c",
|
||||
runScript
|
||||
},
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal("Hello World from express!", data);
|
||||
});
|
||||
}
|
||||
|
@ -702,8 +684,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "node")]
|
||||
public class NodeSassExampleTest : NodeEndToEndTestsBase
|
||||
{
|
||||
public readonly int HostPort = Constants.NodeEndToEndTestsPort + 5;
|
||||
|
||||
public NodeSassExampleTest(ITestOutputHelper output, TestTempDirTestFixture fixture)
|
||||
: base(output, fixture)
|
||||
{
|
||||
|
@ -718,7 +698,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -732,16 +711,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "nodejs", "--language-version", nodeVersion },
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<title>Node-sass example</title>", data);
|
||||
});
|
||||
}
|
||||
|
@ -750,8 +729,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "node")]
|
||||
public class NodeTestUsingZippedNodeModules : NodeEndToEndTestsBase
|
||||
{
|
||||
private readonly int HostPort = Constants.NodeEndToEndTestsPort + 10;
|
||||
|
||||
public NodeTestUsingZippedNodeModules(ITestOutputHelper output, TestTempDirTestFixture fixture)
|
||||
: base(output, fixture)
|
||||
{
|
||||
|
@ -778,7 +755,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var containerPort = "80";
|
||||
var portMapping = $"{HostPort}:{containerPort}";
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appOutputDir} -bindPort {containerPort}")
|
||||
|
@ -803,16 +779,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runAppScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal("Hello World from express!", data);
|
||||
});
|
||||
}
|
||||
|
@ -821,8 +797,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "node")]
|
||||
public class NodeTestWithAppInsightsConfigured : NodeEndToEndTestsBase
|
||||
{
|
||||
private readonly int HostPort = Constants.NodeEndToEndTestsPort + 15;
|
||||
|
||||
public NodeTestWithAppInsightsConfigured(ITestOutputHelper output, TestTempDirTestFixture fixture)
|
||||
: base(output, fixture)
|
||||
{
|
||||
|
@ -838,7 +812,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var spcifyNodeVersionCommand = "-l nodejs --language-version=" + nodeVersion;
|
||||
var aIKey = "APPINSIGHTS_INSTRUMENTATIONKEY";
|
||||
var buildScript = new ShellScriptBuilder()
|
||||
|
@ -871,16 +844,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
},
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
new List<EnvironmentVariable> { new EnvironmentVariable(aIKey, "asdasda") },
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World from express!", data);
|
||||
});
|
||||
}
|
||||
|
@ -889,8 +862,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "node")]
|
||||
public class NodeTestBuildAndRunAppWithDebugger : NodeEndToEndTestsBase
|
||||
{
|
||||
private readonly int HostPort = Constants.NodeEndToEndTestsPort + 20;
|
||||
|
||||
public NodeTestBuildAndRunAppWithDebugger(ITestOutputHelper output, TestTempDirTestFixture fixture)
|
||||
: base(output, fixture)
|
||||
{
|
||||
|
@ -911,9 +882,7 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
//const int localPort = 9393;
|
||||
const int containerDebugPort = 9595;
|
||||
var portMapping = $"{HostPort}:{containerDebugPort}";
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appOutputDir} -remoteDebug -debugPort {containerDebugPort}")
|
||||
|
@ -938,16 +907,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
$"oryxdevms/node-{nodeVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/sh",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runAppScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/json/list");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/json/list");
|
||||
Assert.Contains("devtoolsFrontendUrl", data);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
// Licensed under the MIT license.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using Microsoft.Oryx.Tests.Common;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Oryx.Tests.Common;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
|
@ -35,7 +35,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "php")]
|
||||
public class PhpTwigExampleTest : PhpEndToEndTests
|
||||
{
|
||||
private readonly int HostPort = Constants.PhpEndToEndTestsPort;
|
||||
public PhpTwigExampleTest(ITestOutputHelper output, TestTempDirTestFixture fixture)
|
||||
: base(output, fixture)
|
||||
{
|
||||
|
@ -64,11 +63,11 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
appName, _output, volume,
|
||||
"oryx", new[] { "build", appDir, "-l", "php", "--language-version", phpVersion },
|
||||
$"oryxdevms/php-{phpVersion}",
|
||||
$"{HostPort}:{ContainerPort}",
|
||||
ContainerPort,
|
||||
"/bin/sh", new[] { "-c", script },
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<h1>Hello World!</h1>", data);
|
||||
});
|
||||
}
|
||||
|
@ -77,8 +76,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "php")]
|
||||
public class PhpWordPress51Test : PhpEndToEndTests
|
||||
{
|
||||
private readonly int HostPort = Constants.PhpEndToEndTestsPort + 5;
|
||||
|
||||
public PhpWordPress51Test(ITestOutputHelper output, TestTempDirTestFixture fixture)
|
||||
: base(output, fixture)
|
||||
{
|
||||
|
@ -118,22 +115,19 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
appName, _output, volume,
|
||||
"oryx", new[] { "build", appDir, "-l", "php", "--language-version", phpVersion },
|
||||
$"oryxdevms/php-{phpVersion}",
|
||||
$"{HostPort}:{ContainerPort}",
|
||||
ContainerPort,
|
||||
"/bin/sh", new[] { "-c", runScript },
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<title>WordPress › Setup Configuration File</title>", data);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Trait("category", "php")]
|
||||
public class PhpImagickExampleTest : PhpEndToEndTests
|
||||
{
|
||||
private readonly int HostPort = Constants.PhpEndToEndTestsPort + 10;
|
||||
|
||||
public PhpImagickExampleTest(ITestOutputHelper output, TestTempDirTestFixture fixture)
|
||||
: base(output, fixture)
|
||||
{
|
||||
|
@ -162,11 +156,11 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
appName, _output, volume,
|
||||
"oryx", new[] { "build", appDir, "-l", "php", "--language-version", phpVersion },
|
||||
$"oryxdevms/php-{phpVersion}",
|
||||
$"{HostPort}:{ContainerPort}",
|
||||
ContainerPort,
|
||||
"/bin/sh", new[] { "-c", runScript },
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
string imagickOutput = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
string imagickOutput = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal("64x64", imagickOutput);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
[Trait("category", "python")]
|
||||
public class PythonEndToEndTests : PlatformEndToEndTestsBase
|
||||
{
|
||||
private const int HostPort = Constants.PythonEndToEndTestsPort;
|
||||
private const int ContainerPort = 3000;
|
||||
private const string DefaultStartupFilePath = "./run.sh";
|
||||
|
||||
|
@ -40,7 +39,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var startupFile = "/tmp/startup.sh";
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -output {startupFile} -bindPort {ContainerPort}")
|
||||
|
@ -54,16 +52,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "python", "--language-version", "2.7" },
|
||||
"oryxdevms/python-2.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -77,7 +75,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
const string virtualEnvName = "antenv2.7";
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var buildScript = new ShellScriptBuilder()
|
||||
.AddBuildCommand($"{appDir} -l python --language-version 2.7 -p virtualenv_name={virtualEnvName}")
|
||||
.ToString();
|
||||
|
@ -101,16 +98,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
"oryxdevms/python-2.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -123,7 +120,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -137,16 +133,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir },
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -159,7 +155,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -173,16 +168,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "python", "--language-version", "3.6" },
|
||||
"oryxdevms/python-3.6",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -196,7 +191,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort} -virtualEnvName {virtualEnvName}")
|
||||
|
@ -210,16 +204,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-p", $"virtualenv_name={virtualEnvName}" },
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -237,7 +231,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var appOutputDirPath = Directory.CreateDirectory(
|
||||
Path.Combine(_tempRootDir, Guid.NewGuid().ToString("N"))).FullName;
|
||||
var appOutputDirVolume = DockerVolume.Create(appOutputDirPath);
|
||||
|
@ -268,16 +261,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -290,7 +283,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -304,25 +296,25 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir },
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/boards.css");
|
||||
var data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/boards.css");
|
||||
Assert.Contains("CSS file from Boards app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/uservoice.css");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/uservoice.css");
|
||||
Assert.Contains("CSS file from UserVoice app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/boards/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/boards/");
|
||||
Assert.Contains("Hello, World! from Boards app", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/uservoice/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/uservoice/");
|
||||
Assert.Contains("Hello, World! from Uservoice app", data);
|
||||
});
|
||||
}
|
||||
|
@ -339,7 +331,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var appOutputDirVolume = DockerVolume.Create(appOutputDirPath);
|
||||
var appOutputDir = appOutputDirVolume.ContainerDir;
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
const string virtualEnvName = "antenv";
|
||||
|
||||
var buildScript = new ShellScriptBuilder()
|
||||
|
@ -366,25 +357,25 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/boards.css");
|
||||
var data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/boards.css");
|
||||
Assert.Contains("CSS file from Boards app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/uservoice.css");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/uservoice.css");
|
||||
Assert.Contains("CSS file from UserVoice app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/boards/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/boards/");
|
||||
Assert.Contains("Hello, World! from Boards app", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/uservoice/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/uservoice/");
|
||||
Assert.Contains("Hello, World! from Uservoice app", data);
|
||||
});
|
||||
}
|
||||
|
@ -399,7 +390,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
const string virtualEnvName = "antenv";
|
||||
|
||||
// Simulate apps that were built using package directory, and then virtual env
|
||||
|
@ -424,21 +414,21 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"/bin/bash",
|
||||
new[] { "-c", buildScript },
|
||||
$"oryxdevms/python-{pythonVersion}",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[] { "-c", runScript },
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/boards.css");
|
||||
var data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/boards.css");
|
||||
Assert.Contains("CSS file from Boards app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/uservoice.css");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/uservoice.css");
|
||||
Assert.Contains("CSS file from UserVoice app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/boards/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/boards/");
|
||||
Assert.Contains("Hello, World! from Boards app", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/uservoice/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/uservoice/");
|
||||
Assert.Contains("Hello, World! from Uservoice app", data);
|
||||
});
|
||||
}
|
||||
|
@ -451,7 +441,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
const string virtualEnvName = "antenv3.6";
|
||||
var buildScript = new ShellScriptBuilder()
|
||||
.AddBuildCommand($"{appDir} -l python --language-version 3.6 -p virtualenv_name={virtualEnvName}")
|
||||
|
@ -473,25 +462,25 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
"oryxdevms/python-3.6",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/boards.css");
|
||||
var data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/boards.css");
|
||||
Assert.Contains("CSS file from Boards app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/uservoice.css");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/uservoice.css");
|
||||
Assert.Contains("CSS file from UserVoice app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/boards/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/boards/");
|
||||
Assert.Contains("Hello, World! from Boards app", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/uservoice/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/uservoice/");
|
||||
Assert.Contains("Hello, World! from Uservoice app", data);
|
||||
});
|
||||
}
|
||||
|
@ -504,7 +493,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -518,25 +506,25 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "python", "--language-version", "3.6" },
|
||||
"oryxdevms/python-3.6",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/boards.css");
|
||||
var data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/boards.css");
|
||||
Assert.Contains("CSS file from Boards app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/staticfiles/css/uservoice.css");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/staticfiles/css/uservoice.css");
|
||||
Assert.Contains("CSS file from UserVoice app module", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/boards/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/boards/");
|
||||
Assert.Contains("Hello, World! from Boards app", data);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}/uservoice/");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}/uservoice/");
|
||||
Assert.Contains("Hello, World! from Uservoice app", data);
|
||||
});
|
||||
}
|
||||
|
@ -549,7 +537,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -563,16 +550,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir },
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("logged in as: bob", data);
|
||||
});
|
||||
}
|
||||
|
@ -586,7 +573,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
|
||||
|
@ -601,16 +587,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "python", "--language-version", pythonVersion },
|
||||
imageVersion,
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello Shapely, Area is: 314", data);
|
||||
});
|
||||
}
|
||||
|
@ -625,7 +611,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort} -packagedir {packageDir}")
|
||||
|
@ -640,16 +625,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir, "-l", "python", "--language-version", pythonVersion, "-p", $"packagedir={packageDir}" },
|
||||
imageVersion,
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello Shapely, Area is: 314", data);
|
||||
});
|
||||
}
|
||||
|
@ -662,7 +647,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"export PORT={ContainerPort}")
|
||||
|
@ -677,16 +661,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir },
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -699,7 +683,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
var script = new ShellScriptBuilder()
|
||||
.AddCommand($"cd {appDir}")
|
||||
.AddCommand($"export PORT=9095")
|
||||
|
@ -714,16 +697,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
"oryx",
|
||||
new[] { "build", appDir },
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
script
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{HostPort}/");
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World!", data);
|
||||
});
|
||||
}
|
||||
|
@ -736,7 +719,6 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "multilanguage", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var appDir = volume.ContainerDir;
|
||||
var portMapping = $"{HostPort}:{ContainerPort}";
|
||||
|
||||
var buildScript = new ShellScriptBuilder()
|
||||
.AddCommand("export ENABLE_MULTIPLATFORM_BUILD=true")
|
||||
|
@ -764,16 +746,16 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
buildScript
|
||||
},
|
||||
"oryxdevms/python-3.7",
|
||||
portMapping,
|
||||
ContainerPort,
|
||||
"/bin/bash",
|
||||
new[]
|
||||
{
|
||||
"-c",
|
||||
runAppScript
|
||||
},
|
||||
async () =>
|
||||
async (hostPort) =>
|
||||
{
|
||||
var data = await GetResponseDataAsync($"http://localhost:{HostPort}/");
|
||||
var data = await GetResponseDataAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("<h1>it works! (Django Template)</h1>", data);
|
||||
|
||||
// Looks for the link to the webpack-generated file
|
||||
|
@ -788,7 +770,7 @@ namespace Microsoft.Oryx.Integration.Tests
|
|||
int length = linkdEndIx - linkStartIdx - 2;
|
||||
var link = data.Substring(linkStartIdx + 5, length);
|
||||
|
||||
data = await GetResponseDataAsync($"http://localhost:{HostPort}{link}");
|
||||
data = await GetResponseDataAsync($"http://localhost:{hostPort}{link}");
|
||||
Assert.Contains("!function(e){var t={};function n(r){if(t[r])return t[r].exports", data);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
[InlineData("2.0")]
|
||||
[InlineData("2.1")]
|
||||
[InlineData("2.2")]
|
||||
[InlineData("3.0")]
|
||||
public void DotnetCoreRuntimeImage_Contains_VersionAndCommit_Information(string version)
|
||||
{
|
||||
var agentOS = Environment.GetEnvironmentVariable("AGENT_OS");
|
||||
|
@ -33,11 +34,15 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
// so we should check agent_os environment variable to know if the build is happening in azure devops agent
|
||||
// or locally, locally we need to skip this test
|
||||
Skip.If(string.IsNullOrEmpty(agentOS));
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/dotnetcore-" + version + ":latest",
|
||||
commandToExecuteOnRun: "oryx",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/dotnetcore-{version}:latest",
|
||||
CommandToExecuteOnRun = "oryx",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
() =>
|
||||
|
@ -47,7 +52,7 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
Assert.DoesNotContain(".unspecified, Commit: unspecified", result.StdErr);
|
||||
Assert.Contains(gitCommitID, result.StdErr);
|
||||
Assert.Contains(expectedOryxVersion, result.StdErr);
|
||||
|
||||
|
||||
},
|
||||
result.GetDebugInfo());
|
||||
}
|
||||
|
@ -55,13 +60,15 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
[Theory]
|
||||
[InlineData("1.0", "Version : 1.0.1")]
|
||||
[InlineData("1.1", "Version : 1.1.12")]
|
||||
public void DotnetVersionMatchesImageName_NetCoreApp1Versions(string version, string expectedOutput)
|
||||
public void RuntimeImage_HasExecptedDotnetVersion_NetCoreApp10Versions(string version, string expectedOutput)
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/dotnetcore-" + version + ":latest",
|
||||
commandToExecuteOnRun: "dotnet",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/dotnetcore-{version}:latest",
|
||||
CommandToExecuteOnRun = "dotnet",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -77,13 +84,16 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
[InlineData("2.0", "Version : 2.0.9")]
|
||||
[InlineData("2.1", "Version: 2.1.10")]
|
||||
[InlineData("2.2", "Version: 2.2.4")]
|
||||
public void DotnetVersionMatchesImageName(string version, string expectedOutput)
|
||||
[InlineData("3.0", "Version: 3.0.0-preview5-27626-15")]
|
||||
public void RuntimeImage_HasExecptedDotnetVersion(string version, string expectedOutput)
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/dotnetcore-" + version + ":latest",
|
||||
commandToExecuteOnRun: "dotnet",
|
||||
commandArguments: new[] { "--info" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/dotnetcore-{version}:latest",
|
||||
CommandToExecuteOnRun = "dotnet",
|
||||
CommandArguments = new[] { "--info" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
|
|
@ -39,11 +39,15 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
// so we should check agent_os environment variable to know if the build is happening in azure devops agent
|
||||
// or locally, locally we need to skip this test
|
||||
Skip.If(string.IsNullOrEmpty(agentOS));
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/node-" + version + ":latest",
|
||||
commandToExecuteOnRun: "oryx",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/node-{version}:latest",
|
||||
CommandToExecuteOnRun = "oryx",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
() =>
|
||||
|
@ -82,10 +86,12 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
{
|
||||
// Arrange & Act
|
||||
var expectedNodeVersion = "v" + nodeVersion;
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/node-" + nodeTag + ":latest",
|
||||
commandToExecuteOnRun: "node",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/node-{nodeTag}:latest",
|
||||
CommandToExecuteOnRun = "node",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -108,10 +114,12 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
public void HasExpectedNpmVersion(string nodeTag, string expectedNpmVersion)
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/node-" + nodeTag + ":latest",
|
||||
commandToExecuteOnRun: "npm",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/node-{nodeTag}:latest",
|
||||
CommandToExecuteOnRun = "npm",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -129,9 +137,16 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
public void NodeImage_Contains_RequiredPrograms(string nodeTag)
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
$"oryxdevms/node-{nodeTag}:latest",
|
||||
"sh", new[] { "-c", "which tar && which unzip && which pm2 && /opt/node-wrapper/node --version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/node-{nodeTag}:latest",
|
||||
CommandToExecuteOnRun = "/bin/sh",
|
||||
CommandArguments = new[]
|
||||
{
|
||||
"-c",
|
||||
"which tar && which unzip && which pm2 && /opt/node-wrapper/node --version"
|
||||
}
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() => Assert.True(result.IsSuccess), result.GetDebugInfo());
|
||||
|
@ -151,10 +166,15 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var res = _dockerCli.Run("oryxdevms/node-10.14", "/bin/sh", new[] { "-c", script });
|
||||
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = "oryxdevms/node-10.14",
|
||||
CommandToExecuteOnRun = "/bin/sh",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() => Assert.Equal(res.ExitCode, exitCodeSentinel), res.GetDebugInfo());
|
||||
RunAsserts(() => Assert.Equal(result.ExitCode, exitCodeSentinel), result.GetDebugInfo());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -186,13 +206,19 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var res = _dockerCli.Run("oryxdevms/node-10.14",
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "asdas"), "/bin/sh", new[] { "-c", script });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = "oryxdevms/node-10.14",
|
||||
EnvironmentVariables = new List<EnvironmentVariable>
|
||||
{
|
||||
new EnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", "asdas")
|
||||
},
|
||||
CommandToExecuteOnRun = "/bin/sh",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() =>
|
||||
Assert.Equal(res.ExitCode, exitCodeSentinel),
|
||||
res.GetDebugInfo());
|
||||
RunAsserts(() => Assert.Equal(result.ExitCode, exitCodeSentinel), result.GetDebugInfo());
|
||||
}
|
||||
|
||||
[Theory]
|
||||
|
@ -204,7 +230,6 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var dir = volume.ContainerDir;
|
||||
int hostPort = 8585;
|
||||
int containerPort = 80;
|
||||
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
|
@ -218,19 +243,19 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
await EndToEndTestHelper.RunAndAssertAppAsync(
|
||||
imageName: $"oryxdevms/node-{nodeVersion}",
|
||||
output: _output,
|
||||
volumes: new List<DockerVolume> { volume },
|
||||
volumes: new List<DockerVolume> { volume },
|
||||
environmentVariables: null,
|
||||
portMapping: $"{hostPort}:{containerPort}",
|
||||
containerPort,
|
||||
link: null,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[] { "-c", runAppScript },
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal("Hello World from express!", data);
|
||||
},
|
||||
dockerCli: _dockerCli);
|
||||
|
||||
|
||||
}
|
||||
|
||||
[Theory]
|
||||
|
@ -242,7 +267,6 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var dir = volume.ContainerDir;
|
||||
int hostPort = 8585;
|
||||
int containerPort = 80;
|
||||
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
|
@ -258,11 +282,11 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
output: _output,
|
||||
volumes: new List<DockerVolume> { volume },
|
||||
environmentVariables: null,
|
||||
portMapping: $"{hostPort}:{containerPort}",
|
||||
containerPort,
|
||||
link: null,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[] { "-c", runAppScript },
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal("Hello World from express!", data);
|
||||
|
@ -280,7 +304,6 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var dir = volume.ContainerDir;
|
||||
int hostPort = 8585;
|
||||
int containerPort = 80;
|
||||
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
|
@ -296,11 +319,11 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
output: _output,
|
||||
volumes: new List<DockerVolume> { volume },
|
||||
environmentVariables: null,
|
||||
portMapping: $"{hostPort}:{containerPort}",
|
||||
containerPort,
|
||||
link: null,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[] { "-c", runAppScript },
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Equal("Hello World from express!", data);
|
||||
|
@ -309,15 +332,16 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
|
||||
}
|
||||
|
||||
[Theory(Skip="Investigating debugging using pm2")]
|
||||
[MemberData(nameof(TestValueGenerator.GetNodeVersions_SupportDebugging), MemberType = typeof(TestValueGenerator))]
|
||||
[Theory(Skip = "Investigating debugging using pm2")]
|
||||
[MemberData(
|
||||
nameof(TestValueGenerator.GetNodeVersions_SupportDebugging),
|
||||
MemberType = typeof(TestValueGenerator))]
|
||||
public async Task RunNodeAppUsingProcessJson_withDebugging(string nodeVersion)
|
||||
{
|
||||
var appName = "express-process-json";
|
||||
var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
|
||||
var volume = DockerVolume.Create(hostDir);
|
||||
var dir = volume.ContainerDir;
|
||||
int hostPort = 8585;
|
||||
int containerDebugPort = 8080;
|
||||
|
||||
var runAppScript = new ShellScriptBuilder()
|
||||
|
@ -333,11 +357,11 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
output: _output,
|
||||
volumes: new List<DockerVolume> { volume },
|
||||
environmentVariables: null,
|
||||
portMapping: $"{hostPort}:{containerDebugPort}",
|
||||
port: containerDebugPort,
|
||||
link: null,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[] { "-c", runAppScript },
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Say It Again", data);
|
||||
|
@ -347,7 +371,9 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
}
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(TestValueGenerator.GetNodeVersions_SupportDebugging), MemberType = typeof(TestValueGenerator))]
|
||||
[MemberData(
|
||||
nameof(TestValueGenerator.GetNodeVersions_SupportDebugging),
|
||||
MemberType = typeof(TestValueGenerator))]
|
||||
public async Task GeneratesScript_CanRun_AppInsightsModule_NotFound(string nodeVersion)
|
||||
{
|
||||
// This test is for the following scenario:
|
||||
|
@ -355,7 +381,7 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
// has been injected and it's installed during build (npm install). But for some reason if we
|
||||
// don't see the appinsights node_module we shouldn't break the app. We should run the app
|
||||
// and additionally print the exception message
|
||||
|
||||
|
||||
// Arrange
|
||||
var imageName = string.Concat("oryxdevms/node-", nodeVersion);
|
||||
var hostSamplesDir = Path.Combine(Directory.GetCurrentDirectory(), "SampleApps");
|
||||
|
@ -372,7 +398,6 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
console.log(e);
|
||||
} ";
|
||||
|
||||
int hostPort = 8585;
|
||||
int containerDebugPort = 8080;
|
||||
|
||||
var script = new ShellScriptBuilder()
|
||||
|
@ -391,11 +416,11 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
output: _output,
|
||||
volumes: new List<DockerVolume> { volume },
|
||||
environmentVariables: null,
|
||||
portMapping: $"{hostPort}:{containerDebugPort}",
|
||||
port: containerDebugPort,
|
||||
link: null,
|
||||
runCmd: "/bin/sh",
|
||||
runArgs: new[] { "-c", script },
|
||||
assertAction: async () =>
|
||||
assertAction: async (hostPort) =>
|
||||
{
|
||||
var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
|
||||
Assert.Contains("Hello World from express!", data);
|
||||
|
|
|
@ -7,7 +7,6 @@ using Microsoft.Oryx.Common;
|
|||
using Microsoft.Oryx.Tests.Common;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
|
@ -27,7 +26,12 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
public void VersionMatchesImageName(string imageTag, string expectedPhpVersion)
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run("oryxdevms/php-" + imageTag + ":latest", "php", new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/php-{imageTag}:latest",
|
||||
CommandToExecuteOnRun = "php",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() =>
|
||||
|
@ -46,9 +50,12 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
public void GraphicsExtension_Gd_IsInstalled(string imageTag)
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/php-" + imageTag + ":latest",
|
||||
"php", new[] { "-r", "echo json_encode(gd_info());" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = $"oryxdevms/php-{imageTag}:latest",
|
||||
CommandToExecuteOnRun = "php",
|
||||
CommandArguments = new[] { "-r", "echo json_encode(gd_info());" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
JObject gdInfo = JsonConvert.DeserializeObject<JObject>(result.StdOut);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Microsoft.Oryx.Tests.Common;
|
||||
using Xunit;
|
||||
|
@ -30,11 +31,15 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
// so we should check agent_os environment variable to know if the build is happening in azure devops agent
|
||||
// or locally, locally we need to skip this test
|
||||
Skip.If(string.IsNullOrEmpty(agentOS));
|
||||
|
||||
// Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/python-" + version + ":latest",
|
||||
commandToExecuteOnRun: "oryx",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = "oryxdevms/python-" + version + ":latest",
|
||||
CommandToExecuteOnRun = "oryx",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(
|
||||
() =>
|
||||
|
@ -54,10 +59,12 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
public void PythonVersionMatchesImageName(string pythonVersion, string expectedOutput)
|
||||
{
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/python-" + pythonVersion + ":latest",
|
||||
commandToExecuteOnRun: "python",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = "oryxdevms/python-" + pythonVersion + ":latest",
|
||||
CommandToExecuteOnRun = "python",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdOut.ReplaceNewLine();
|
||||
|
@ -77,10 +84,12 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
string expectedOutput = "Python " + Common.PythonVersions.Python27Version;
|
||||
|
||||
// Arrange & Act
|
||||
var result = _dockerCli.Run(
|
||||
"oryxdevms/python-" + pythonVersion + ":latest",
|
||||
commandToExecuteOnRun: "python",
|
||||
commandArguments: new[] { "--version" });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = "oryxdevms/python-" + pythonVersion + ":latest",
|
||||
CommandToExecuteOnRun = "python",
|
||||
CommandArguments = new[] { "--version" }
|
||||
});
|
||||
|
||||
// Assert
|
||||
var actualOutput = result.StdErr.ReplaceNewLine();
|
||||
|
@ -109,10 +118,15 @@ namespace Microsoft.Oryx.RuntimeImage.Tests
|
|||
.ToString();
|
||||
|
||||
// Act
|
||||
var res = _dockerCli.Run("oryxdevms/python-3.7", "/bin/sh", new[] { "-c", script });
|
||||
var result = _dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = "oryxdevms/python-3.7",
|
||||
CommandToExecuteOnRun = "/bin/sh",
|
||||
CommandArguments = new[] { "-c", script }
|
||||
});
|
||||
|
||||
// Assert
|
||||
RunAsserts(() => Assert.Equal(res.ExitCode, exitCodeSentinel), res.GetDebugInfo());
|
||||
RunAsserts(() => Assert.Equal(result.ExitCode, exitCodeSentinel), result.GetDebugInfo());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,19 +30,17 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
_globalEnvVars = globalEnvVars;
|
||||
}
|
||||
|
||||
public DockerRunCommandResult Run(
|
||||
string imageId,
|
||||
List<EnvironmentVariable> environmentVariables,
|
||||
List<DockerVolume> volumes,
|
||||
string portMapping,
|
||||
string link,
|
||||
bool runContainerInBackground,
|
||||
string command,
|
||||
string[] commandArguments)
|
||||
public DockerRunCommandResult Run(DockerRunArguments dockerRunArguments)
|
||||
{
|
||||
if (string.IsNullOrEmpty(imageId))
|
||||
if (dockerRunArguments == null)
|
||||
{
|
||||
throw new ArgumentException($"'{nameof(imageId)}' cannot be null or empty.");
|
||||
throw new ArgumentNullException(nameof(dockerRunArguments));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(dockerRunArguments.ImageId))
|
||||
{
|
||||
throw new ArgumentException(
|
||||
$"'{nameof(dockerRunArguments)}.{nameof(dockerRunArguments.ImageId)}' cannot be null or empty.");
|
||||
}
|
||||
|
||||
var output = string.Empty;
|
||||
|
@ -55,16 +53,7 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
var containerName = $"{CreatedContainerPrefix}{Guid.NewGuid().ToString("N")}";
|
||||
|
||||
var fileName = "docker";
|
||||
var arguments = PrepareDockerRunArguments(
|
||||
containerName,
|
||||
runContainerInBackground,
|
||||
environmentVariables,
|
||||
volumes,
|
||||
portMapping,
|
||||
link,
|
||||
imageId,
|
||||
command,
|
||||
commandArguments);
|
||||
var arguments = PrepareDockerRunArguments(containerName, dockerRunArguments);
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -85,22 +74,21 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
exception,
|
||||
output,
|
||||
error,
|
||||
volumes,
|
||||
dockerRunArguments.Volumes,
|
||||
$"{fileName} {string.Join(" ", arguments)}");
|
||||
}
|
||||
|
||||
public DockerRunCommandProcessResult RunAndDoNotWaitForProcessExit(
|
||||
string imageId,
|
||||
List<EnvironmentVariable> environmentVariables,
|
||||
List<DockerVolume> volumes,
|
||||
string portMapping,
|
||||
string link,
|
||||
string command,
|
||||
string[] commandArguments)
|
||||
public DockerRunCommandProcessResult RunAndDoNotWaitForProcessExit(DockerRunArguments dockerRunArguments)
|
||||
{
|
||||
if (string.IsNullOrEmpty(imageId))
|
||||
if (dockerRunArguments == null)
|
||||
{
|
||||
throw new ArgumentException($"'{nameof(imageId)}' cannot be null or empty.");
|
||||
throw new ArgumentNullException(nameof(dockerRunArguments));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(dockerRunArguments.ImageId))
|
||||
{
|
||||
throw new ArgumentException(
|
||||
$"'{nameof(dockerRunArguments)}.{nameof(dockerRunArguments.ImageId)}' cannot be null or empty.");
|
||||
}
|
||||
|
||||
Process process = null;
|
||||
|
@ -112,17 +100,11 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
// Provide a prefix so that one can delete the containers using regex, if needed
|
||||
var containerName = $"{CreatedContainerPrefix}{Guid.NewGuid().ToString("N")}";
|
||||
|
||||
// Make sure not to run the container in background
|
||||
dockerRunArguments.RunContainerInBackground = false;
|
||||
|
||||
var fileName = "docker";
|
||||
var arguments = PrepareDockerRunArguments(
|
||||
containerName,
|
||||
runContainerInBackground: false,
|
||||
environmentVariables,
|
||||
volumes,
|
||||
portMapping,
|
||||
link,
|
||||
imageId,
|
||||
command,
|
||||
commandArguments);
|
||||
var arguments = PrepareDockerRunArguments(containerName, dockerRunArguments);
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -238,6 +220,26 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
}
|
||||
}
|
||||
|
||||
public DockerCommandResult GetPortMapping(string containerName, int portInContainer)
|
||||
{
|
||||
if (string.IsNullOrEmpty(containerName))
|
||||
{
|
||||
throw new ArgumentException($"'{nameof(containerName)}' cannot be null or empty.");
|
||||
}
|
||||
|
||||
var arguments = PrepareArguments();
|
||||
return ExecuteCommand(arguments);
|
||||
|
||||
IEnumerable<string> PrepareArguments()
|
||||
{
|
||||
var args = new List<string>();
|
||||
args.Add("port");
|
||||
args.Add(containerName);
|
||||
args.Add(portInContainer.ToString());
|
||||
return args;
|
||||
}
|
||||
}
|
||||
|
||||
private DockerCommandResult ExecuteCommand(IEnumerable<string> arguments)
|
||||
{
|
||||
var fileName = "docker";
|
||||
|
@ -290,14 +292,7 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
|
||||
private IEnumerable<string> PrepareDockerRunArguments(
|
||||
string containerName,
|
||||
bool runContainerInBackground,
|
||||
List<EnvironmentVariable> environmentVariables,
|
||||
List<DockerVolume> volumes,
|
||||
string portMapping,
|
||||
string link,
|
||||
string imageId,
|
||||
string command,
|
||||
string[] commandArguments)
|
||||
DockerRunArguments dockerRunArguments)
|
||||
{
|
||||
var args = new List<string>();
|
||||
args.Add("run");
|
||||
|
@ -313,13 +308,13 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
args.Add("--rm");
|
||||
}
|
||||
|
||||
if (runContainerInBackground)
|
||||
if (dockerRunArguments.RunContainerInBackground)
|
||||
{
|
||||
args.Add("-d");
|
||||
}
|
||||
|
||||
AddEnvVarArgs(args, _globalEnvVars);
|
||||
AddEnvVarArgs(args, environmentVariables);
|
||||
AddEnvVarArgs(args, dockerRunArguments.EnvironmentVariables);
|
||||
|
||||
var aiKeyOverride = Environment.GetEnvironmentVariable(
|
||||
"TEST_OVERRIDE_" + LoggingConstants.ApplicationInsightsInstrumentationKeyEnvironmentVariableName);
|
||||
|
@ -343,37 +338,37 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
appServiceAppName));
|
||||
}
|
||||
|
||||
if (volumes?.Count > 0)
|
||||
if (dockerRunArguments.Volumes?.Count > 0)
|
||||
{
|
||||
foreach (var volume in volumes)
|
||||
foreach (var volume in dockerRunArguments.Volumes)
|
||||
{
|
||||
args.Add("-v");
|
||||
args.Add($"{volume.MountedHostDir}:{volume.ContainerDir}");
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(link))
|
||||
if (!string.IsNullOrEmpty(dockerRunArguments.Link))
|
||||
{
|
||||
args.Add("--link");
|
||||
args.Add(link);
|
||||
args.Add(dockerRunArguments.Link);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(portMapping))
|
||||
if (dockerRunArguments.PortInContainer.HasValue)
|
||||
{
|
||||
args.Add("-p");
|
||||
args.Add(portMapping);
|
||||
args.Add(dockerRunArguments.PortInContainer.ToString());
|
||||
}
|
||||
|
||||
args.Add(imageId);
|
||||
args.Add(dockerRunArguments.ImageId);
|
||||
|
||||
if (!string.IsNullOrEmpty(command))
|
||||
if (!string.IsNullOrEmpty(dockerRunArguments.CommandToExecuteOnRun))
|
||||
{
|
||||
args.Add(command);
|
||||
args.Add(dockerRunArguments.CommandToExecuteOnRun);
|
||||
}
|
||||
|
||||
if (commandArguments?.Length > 0)
|
||||
if (dockerRunArguments.CommandArguments?.Length > 0)
|
||||
{
|
||||
args.AddRange(commandArguments);
|
||||
args.AddRange(dockerRunArguments.CommandArguments);
|
||||
}
|
||||
|
||||
return args;
|
||||
|
|
|
@ -1,164 +0,0 @@
|
|||
// --------------------------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.Oryx.Tests.Common
|
||||
{
|
||||
public static class DockerCliExtensions
|
||||
{
|
||||
public static DockerRunCommandResult Run(
|
||||
this DockerCli dockerCli,
|
||||
string imageId,
|
||||
string commandToExecuteOnRun,
|
||||
string[] commandArguments)
|
||||
{
|
||||
return Run(
|
||||
dockerCli,
|
||||
imageId,
|
||||
environmentVariable: null,
|
||||
volume: null,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: false,
|
||||
commandToExecuteOnRun,
|
||||
commandArguments);
|
||||
}
|
||||
|
||||
public static DockerRunCommandResult Run(
|
||||
this DockerCli dockerCli,
|
||||
string imageId,
|
||||
DockerVolume volume,
|
||||
string commandToExecuteOnRun,
|
||||
string[] commandArguments)
|
||||
{
|
||||
return Run(
|
||||
dockerCli,
|
||||
imageId,
|
||||
environmentVariable: null,
|
||||
volume,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: false,
|
||||
commandToExecuteOnRun,
|
||||
commandArguments);
|
||||
}
|
||||
|
||||
public static DockerRunCommandResult Run(
|
||||
this DockerCli dockerCli,
|
||||
string imageId,
|
||||
DockerVolume volume,
|
||||
string portMapping,
|
||||
string commandToExecuteOnRun,
|
||||
string[] commandArguments)
|
||||
{
|
||||
return Run(
|
||||
dockerCli,
|
||||
imageId,
|
||||
environmentVariable: null,
|
||||
volume,
|
||||
portMapping,
|
||||
link: null,
|
||||
runContainerInBackground: false,
|
||||
commandToExecuteOnRun,
|
||||
commandArguments);
|
||||
}
|
||||
|
||||
public static DockerRunCommandResult Run(
|
||||
this DockerCli dockerCli,
|
||||
string imageId,
|
||||
EnvironmentVariable environmentVariable,
|
||||
string commandToExecuteOnRun,
|
||||
string[] commandArguments)
|
||||
{
|
||||
return Run(
|
||||
dockerCli,
|
||||
imageId,
|
||||
environmentVariable,
|
||||
volume: null,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: false,
|
||||
commandToExecuteOnRun,
|
||||
commandArguments);
|
||||
}
|
||||
|
||||
public static DockerRunCommandResult Run(
|
||||
this DockerCli dockerCli,
|
||||
string imageId,
|
||||
EnvironmentVariable environmentVariable,
|
||||
DockerVolume volume,
|
||||
string commandToExecuteOnRun,
|
||||
string[] commandArguments)
|
||||
{
|
||||
return Run(
|
||||
dockerCli,
|
||||
imageId,
|
||||
environmentVariable,
|
||||
volume,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: false,
|
||||
commandToExecuteOnRun,
|
||||
commandArguments);
|
||||
}
|
||||
|
||||
public static DockerRunCommandResult Run(
|
||||
this DockerCli dockerCli,
|
||||
string imageId,
|
||||
EnvironmentVariable environmentVariable,
|
||||
DockerVolume volume,
|
||||
string portMapping,
|
||||
string link,
|
||||
bool runContainerInBackground,
|
||||
string commandToExecuteOnRun,
|
||||
string[] commandArguments)
|
||||
{
|
||||
var environmentVariables = new List<EnvironmentVariable>();
|
||||
if (environmentVariable != null)
|
||||
{
|
||||
environmentVariables.Add(environmentVariable);
|
||||
}
|
||||
|
||||
var volumes = new List<DockerVolume>();
|
||||
if (volume != null)
|
||||
{
|
||||
volumes.Add(volume);
|
||||
}
|
||||
|
||||
return dockerCli.Run(
|
||||
imageId,
|
||||
environmentVariables,
|
||||
volumes,
|
||||
portMapping,
|
||||
link,
|
||||
runContainerInBackground,
|
||||
commandToExecuteOnRun,
|
||||
commandArguments);
|
||||
}
|
||||
|
||||
public static DockerRunCommandResult Run(
|
||||
this DockerCli dockerCli,
|
||||
string imageId,
|
||||
List<EnvironmentVariable> environmentVariables,
|
||||
List<DockerVolume> volumes,
|
||||
string portMapping,
|
||||
string link,
|
||||
bool runContainerInBackground,
|
||||
string commandToExecuteOnRun,
|
||||
string[] commandArguments)
|
||||
{
|
||||
return dockerCli.Run(
|
||||
imageId,
|
||||
environmentVariables,
|
||||
volumes,
|
||||
portMapping,
|
||||
link,
|
||||
runContainerInBackground,
|
||||
commandToExecuteOnRun,
|
||||
commandArguments);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,7 +9,12 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
{
|
||||
public class DockerCommandResult : DockerResultBase
|
||||
{
|
||||
public DockerCommandResult(int exitCode, Exception exception, string output, string error, string executedCommand)
|
||||
public DockerCommandResult(
|
||||
int exitCode,
|
||||
Exception exception,
|
||||
string output,
|
||||
string error,
|
||||
string executedCommand)
|
||||
: base(exception, executedCommand)
|
||||
{
|
||||
ExitCode = exitCode;
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
// --------------------------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.Oryx.Tests.Common
|
||||
{
|
||||
public class DockerRunArguments
|
||||
{
|
||||
public string ImageId { get; set; }
|
||||
public List<EnvironmentVariable> EnvironmentVariables { get; set; }
|
||||
public List<DockerVolume> Volumes { get; set; }
|
||||
public int? PortInContainer { get; set; }
|
||||
public string Link { get; set; }
|
||||
public bool RunContainerInBackground { get; set; }
|
||||
public string CommandToExecuteOnRun { get; set; }
|
||||
public string[] CommandArguments { get; set; }
|
||||
}
|
||||
}
|
|
@ -18,7 +18,7 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
public static class EndToEndTestHelper
|
||||
{
|
||||
private const int MaxRetryCount = 10;
|
||||
private const int DelayBetweenRetriesInSeconds = 6;
|
||||
private static readonly TimeSpan DelayBetweenRetriesInSeconds = TimeSpan.FromSeconds(6);
|
||||
|
||||
public static Task BuildRunAndAssertAppAsync(
|
||||
string appName,
|
||||
|
@ -27,10 +27,10 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
string buildCmd,
|
||||
string[] buildArgs,
|
||||
string runtimeImageName,
|
||||
string portMapping,
|
||||
int port,
|
||||
string runCmd,
|
||||
string[] runArgs,
|
||||
Func<Task> assertAction)
|
||||
Func<int, Task> assertAction)
|
||||
{
|
||||
return BuildRunAndAssertAppAsync(
|
||||
appName,
|
||||
|
@ -39,7 +39,7 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
buildCmd,
|
||||
buildArgs,
|
||||
runtimeImageName,
|
||||
portMapping,
|
||||
port,
|
||||
runCmd,
|
||||
runArgs,
|
||||
assertAction);
|
||||
|
@ -53,10 +53,10 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
string[] buildArgs,
|
||||
string runtimeImageName,
|
||||
List<EnvironmentVariable> environmentVariables,
|
||||
string portMapping,
|
||||
int port,
|
||||
string runCmd,
|
||||
string[] runArgs,
|
||||
Func<Task> assertAction)
|
||||
Func<int, Task> assertAction)
|
||||
{
|
||||
var AppNameEnvVariable = new EnvironmentVariable(
|
||||
LoggingConstants.AppServiceAppNameEnvironmentVariableName,
|
||||
|
@ -69,7 +69,7 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
buildArgs,
|
||||
runtimeImageName,
|
||||
environmentVariables,
|
||||
portMapping,
|
||||
port,
|
||||
link: null,
|
||||
runCmd,
|
||||
runArgs,
|
||||
|
@ -83,10 +83,10 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
string buildCmd,
|
||||
string[] buildArgs,
|
||||
string runtimeImageName,
|
||||
string portMapping,
|
||||
int port,
|
||||
string runCmd,
|
||||
string[] runArgs,
|
||||
Func<Task> assertAction)
|
||||
Func<int, Task> assertAction)
|
||||
{
|
||||
return BuildRunAndAssertAppAsync(
|
||||
output,
|
||||
|
@ -98,7 +98,7 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
{
|
||||
new EnvironmentVariable(LoggingConstants.AppServiceAppNameEnvironmentVariableName, appName)
|
||||
},
|
||||
portMapping,
|
||||
port,
|
||||
link: null,
|
||||
runCmd,
|
||||
runArgs,
|
||||
|
@ -119,24 +119,24 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
string[] buildArgs,
|
||||
string runtimeImageName,
|
||||
List<EnvironmentVariable> environmentVariables,
|
||||
string portMapping,
|
||||
int port,
|
||||
string link,
|
||||
string runCmd,
|
||||
string[] runArgs,
|
||||
Func<Task> assertAction)
|
||||
Func<int, Task> assertAction)
|
||||
{
|
||||
var dockerCli = new DockerCli();
|
||||
|
||||
// Build
|
||||
var buildAppResult = dockerCli.Run(
|
||||
Settings.BuildImageName,
|
||||
environmentVariables: environmentVariables,
|
||||
volumes: volumes,
|
||||
portMapping: null,
|
||||
link: null,
|
||||
runContainerInBackground: false,
|
||||
commandToExecuteOnRun: buildCmd,
|
||||
commandArguments: buildArgs);
|
||||
var buildAppResult = dockerCli.Run(new DockerRunArguments
|
||||
{
|
||||
ImageId = Settings.BuildImageName,
|
||||
EnvironmentVariables = environmentVariables,
|
||||
Volumes = volumes,
|
||||
RunContainerInBackground = false,
|
||||
CommandToExecuteOnRun = buildCmd,
|
||||
CommandArguments = buildArgs,
|
||||
});
|
||||
|
||||
await RunAssertsAsync(
|
||||
() =>
|
||||
|
@ -153,7 +153,7 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
output,
|
||||
volumes,
|
||||
environmentVariables,
|
||||
portMapping,
|
||||
port,
|
||||
link,
|
||||
runCmd,
|
||||
runArgs,
|
||||
|
@ -166,11 +166,11 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
ITestOutputHelper output,
|
||||
List<DockerVolume> volumes,
|
||||
List<EnvironmentVariable> environmentVariables,
|
||||
string portMapping,
|
||||
int port,
|
||||
string link,
|
||||
string runCmd,
|
||||
string[] runArgs,
|
||||
Func<Task> assertAction,
|
||||
Func<int, Task> assertAction,
|
||||
DockerCli dockerCli)
|
||||
{
|
||||
DockerRunCommandProcessResult runResult = null;
|
||||
|
@ -179,28 +179,30 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
{
|
||||
// Docker run the runtime container as a foreground process. This way we can catch any errors
|
||||
// that might occur when the application is being started.
|
||||
runResult = dockerCli.RunAndDoNotWaitForProcessExit(
|
||||
imageName,
|
||||
environmentVariables,
|
||||
volumes: volumes,
|
||||
portMapping,
|
||||
link,
|
||||
runCmd,
|
||||
runArgs);
|
||||
runResult = dockerCli.RunAndDoNotWaitForProcessExit(new DockerRunArguments
|
||||
{
|
||||
ImageId = imageName,
|
||||
EnvironmentVariables = environmentVariables,
|
||||
Volumes = volumes,
|
||||
PortInContainer = port,
|
||||
Link = link,
|
||||
CommandToExecuteOnRun = runCmd,
|
||||
CommandArguments = runArgs,
|
||||
});
|
||||
|
||||
// An exception could have occurred when a Docker process failed to start.
|
||||
Assert.Null(runResult.Exception);
|
||||
Assert.False(runResult.Process.HasExited);
|
||||
|
||||
var hostPort = await GetHostPortAsync(dockerCli, runResult.ContainerName, portInContainer: port);
|
||||
|
||||
for (var i = 0; i < MaxRetryCount; i++)
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromSeconds(DelayBetweenRetriesInSeconds));
|
||||
|
||||
try
|
||||
{
|
||||
// Make sure the process is still alive and fail fast if not.
|
||||
Assert.False(runResult.Process.HasExited);
|
||||
await assertAction();
|
||||
await assertAction(hostPort);
|
||||
|
||||
showDebugInfo = false;
|
||||
break;
|
||||
|
@ -212,6 +214,8 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
{
|
||||
throw;
|
||||
}
|
||||
|
||||
await Task.Delay(DelayBetweenRetriesInSeconds);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -231,6 +235,37 @@ namespace Microsoft.Oryx.Tests.Common
|
|||
}
|
||||
}
|
||||
|
||||
private static async Task<int> GetHostPortAsync(DockerCli dockerCli, string containerName, int portInContainer)
|
||||
{
|
||||
// We are depending on Docker to open ports in the host dynamically in order for our tests to be able to
|
||||
// run in parallel without worrying about port collision and flaky tests. However it appears that Docker
|
||||
// opens up a port in the host only after an attempt was made to open up a port in the container. Since a
|
||||
// port in the container could open up late because of the way a web application works (like it might be
|
||||
// initializing something which could take time), we are introducing delay for the application to be up
|
||||
// before trying to invoke the 'docker port' command.
|
||||
for (var i = 0; i < MaxRetryCount; i++)
|
||||
{
|
||||
await Task.Delay(DelayBetweenRetriesInSeconds);
|
||||
|
||||
// Example output that is ouput when "docker port <container-name> <container-port>" is run:
|
||||
// 0.0.0.0:32774
|
||||
var getPortMappingResult = dockerCli.GetPortMapping(containerName, portInContainer);
|
||||
if (getPortMappingResult.ExitCode == 0)
|
||||
{
|
||||
var stdOut = getPortMappingResult.StdOut?.Trim().ReplaceNewLine();
|
||||
var portMapping = stdOut?.Split(":");
|
||||
Assert.NotNull(portMapping);
|
||||
Assert.True(
|
||||
(portMapping.Length == 2),
|
||||
"Did not get the port mapping in expected format. StdOut: " + getPortMappingResult.StdOut);
|
||||
var hostPort = Convert.ToInt32(portMapping[1]);
|
||||
return hostPort;
|
||||
}
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Could not retreive the host port of the container.");
|
||||
}
|
||||
|
||||
private static async Task RunAssertsAsync(Func<Task> action, DockerResultBase res, ITestOutputHelper output)
|
||||
{
|
||||
try
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<RootNamespace>Microsoft.Oryx.Tests.Common</RootNamespace>
|
||||
<AssemblyName>Microsoft.Oryx.Tests.Common</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
Загрузка…
Ссылка в новой задаче