Пример #1
0
        protected async Task RunTestAsync(
            string language,
            string languageVersion,
            string samplePath,
            int containerPort        = 8000,
            bool specifyBindPortFlag = true,
            string buildImageName    = Settings.BuildImageName)
        {
            var volume           = DockerVolume.CreateMirror(samplePath);
            var appDir           = volume.ContainerDir;
            var entrypointScript = "./run.sh";
            var bindPortFlag     = specifyBindPortFlag ? $"-bindPort {containerPort}" : string.Empty;
            var scriptBuilder    = new ShellScriptBuilder()
                                   .AddCommand($"cd {appDir}");

            if (string.Equals("python", language, StringComparison.OrdinalIgnoreCase) ||
                string.Equals("nodejs", language, StringComparison.OrdinalIgnoreCase))
            {
                scriptBuilder = scriptBuilder.AddCommand($"oryx create-script -appPath {appDir} {bindPortFlag}");
            }
            else
            {
                scriptBuilder = scriptBuilder.AddCommand($"oryx -appPath {appDir} {bindPortFlag}");
            }

            var script = scriptBuilder.AddCommand(entrypointScript)
                         .ToString();

            var runtimeImageName = _imageHelper.GetTestRuntimeImage(language, languageVersion);

            if (string.Equals(language, "nodejs", StringComparison.OrdinalIgnoreCase))
            {
                runtimeImageName = _imageHelper.GetTestRuntimeImage("node", languageVersion);
            }

            string link = $"{_dbFixture.DbServerContainerName}:{Constants.InternalDbLinkName}";

            await EndToEndTestHelper.BuildRunAndAssertAppAsync(
                _output,
                new List <DockerVolume> {
                volume
            },
                buildImageName,
                "oryx", new[] { "build", appDir, "-l", language, "--language-version", languageVersion },
                runtimeImageName,
                _dbFixture.GetCredentialsAsEnvVars(),
                containerPort,
                link,
                "/bin/sh", new[] { "-c", script },
                async (hostPort) =>
            {
                var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                Assert.Equal(
                    DbContainerFixtureBase.GetSampleDataAsJson(),
                    data.Trim(),
                    ignoreLineEndingDifferences: true,
                    ignoreWhiteSpaceDifferences: true);
            });
        }
Пример #2
0
        public async Task Python37App_MicrosoftSqlServerDB(string imageTag)
        {
            // Arrange
            var appName = "mssqlserver-sample";
            var hostDir = Path.Combine(_hostSamplesDir, "python", appName);
            var volume  = DockerVolume.CreateMirror(hostDir);
            var appDir  = volume.ContainerDir;
            var script  = new ShellScriptBuilder()
                          .AddCommand($"oryx create-script -appPath {appDir} -bindPort {ContainerPort}")
                          .AddCommand(DefaultStartupFilePath)
                          .ToString();

            await EndToEndTestHelper.BuildRunAndAssertAppAsync(
                appName,
                _output,
                new List <DockerVolume> {
                volume
            },
                _imageHelper.GetBuildImage(imageTag),
                "oryx",
                new[] { "build", appDir, "--platform", "python", "--platform-version", "3.7" },
                _imageHelper.GetRuntimeImage("python", "3.7"),
                SqlServerDbTestHelper.GetEnvironmentVariables(),
                ContainerPort,
                "/bin/bash",
                new[]
            {
                "-c",
                script
            },
                async (hostPort) =>
            {
                var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                Assert.Equal(
                    DbContainerFixtureBase.GetSampleDataAsJson(),
                    data.Trim(),
                    ignoreLineEndingDifferences: true,
                    ignoreWhiteSpaceDifferences: true);
            });
        }
Пример #3
0
        public async Task NodeApp_MicrosoftSqlServerDB()
        {
            // Arrange
            var appName = "node-mssql";
            var hostDir = Path.Combine(_hostSamplesDir, "nodejs", appName);
            var volume  = DockerVolume.CreateMirror(hostDir);
            var appDir  = volume.ContainerDir;
            var script  = new ShellScriptBuilder()
                          .AddCommand($"oryx -appPath {appDir} -bindPort {ContainerPort}")
                          .AddCommand(DefaultStartupFilePath)
                          .ToString();

            await EndToEndTestHelper.BuildRunAndAssertAppAsync(
                appName,
                _output,
                new List <DockerVolume> {
                volume
            },
                Settings.BuildImageName,
                "oryx",
                new[] { "build", appDir, "-l", "nodejs", "--language-version", "10.14" },
                "oryxdevms/node-10.14",
                GetEnvironmentVariables(),
                ContainerPort,
                "/bin/bash",
                new[]
            {
                "-c",
                script
            },
                async (hostPort) =>
            {
                var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                Assert.Equal(
                    DbContainerFixtureBase.GetSampleDataAsJson(),
                    data.Trim(),
                    ignoreLineEndingDifferences: true,
                    ignoreWhiteSpaceDifferences: true);
            });
        }
Пример #4
0
        // pdo_sqlsrv only supports PHP >= 7.1
        public async Task PhpApp_UsingPdo(string phpVersion)
        {
            // Arrange
            var appName = "sqlsrv-example";
            var hostDir = Path.Combine(_hostSamplesDir, "php", appName);
            var volume  = DockerVolume.CreateMirror(hostDir);
            var appDir  = volume.ContainerDir;
            var script  = new ShellScriptBuilder()
                          .AddCommand($"oryx create-script -appPath {appDir} -bindPort {ContainerPort}")
                          .AddCommand(DefaultStartupFilePath)
                          .ToString();

            await EndToEndTestHelper.BuildRunAndAssertAppAsync(
                appName,
                _output,
                new List <DockerVolume> {
                volume
            },
                Settings.BuildImageName,
                "oryx",
                new[] { "build", appDir, "-l", "php", "--language-version", phpVersion },
                _imageHelper.GetRuntimeImage("php", phpVersion),
                GetEnvironmentVariables(),
                ContainerPort,
                "/bin/bash",
                new[]
            {
                "-c",
                script
            },
                async (hostPort) =>
            {
                var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                Assert.Equal(
                    DbContainerFixtureBase.GetSampleDataAsJson(),
                    data.Trim(),
                    ignoreLineEndingDifferences: true,
                    ignoreWhiteSpaceDifferences: true);
            });
        }