Example #1
0
 public SampleAppsTestBase(ITestOutputHelper output, DockerCli dockerCli = null)
 {
     _output      = output;
     _dockerCli   = dockerCli ?? new DockerCli();
     _imageHelper = new ImageTestHelper(output);
     _restrictedPermissionsImageHelper = ImageTestHelper.WithRestrictedPermissions(output);
 }
Example #2
0
        public MSSqlServerDatabaseSetupFixture()
        {
            _dockerCli = new DockerCli();

            var runResult = StartDatabaseContainer();

            DatabaseServerContainerName = runResult.ContainerName;

            InsertSampleData(runResult.ContainerName);
        }
        public MySqlDatabaseSetupFixture()
        {
            _dockerCli = new DockerCli();

            var runResult = StartDatabaseContainer();

            DatabaseServerContainerName = runResult.ContainerName;

            // Wait for the database server to be up
            Thread.Sleep(TimeSpan.FromMinutes(1));

            InsertSampleData(runResult.ContainerName);
        }
Example #4
0
 public BenvTest(ITestOutputHelper output)
 {
     _output      = output;
     _dockerCli   = new DockerCli();
     _imageHelper = new ImageTestHelper(output);
 }
Example #5
0
 public PulledBuildImageTypeTest(ITestOutputHelper output)
 {
     _output    = output;
     _dockerCli = new DockerCli();
 }
Example #6
0
 public BenvTest(ITestOutputHelper output)
 {
     _output    = output;
     _dockerCli = new DockerCli();
 }
Example #7
0
 public PythonImagesTest(ITestOutputHelper output)
 {
     _output    = output;
     _dockerCli = new DockerCli();
 }
Example #8
0
 public SampleAppsTestBase(ITestOutputHelper output, DockerCli dockerCli = null)
 {
     _output    = output;
     _dockerCli = dockerCli ?? new DockerCli();
 }
 public BuildScriptGenFromBuildImageTests(ITestOutputHelper output)
 {
     _output    = output;
     _dockerCli = new DockerCli();
 }
Example #10
0
 public StaticWebAppSamplesTest(ITestOutputHelper output, DockerCli dockerCli = null)
     : base(output, dockerCli)
 {
 }
Example #11
0
        public async Task CanBuildAndRunAngular6App_WithDevAndProdDependencies_UsingZippedNodeModules(string nodeVersion)
        {
            string compressFormat = "tar-gz";
            // NOTE:
            // 1. Use intermediate directory(which here is local to container) to avoid errors like
            //      "tar: node_modules/form-data: file changed as we read it"
            //    related to zipping files on a folder which is volume mounted.
            // 2. Use output directory within the container due to 'rsync'
            //    having issues with volume mounted directories

            // Arrange
            var appOutputDirPath = Directory.CreateDirectory(Path.Combine(_tempRootDir, Guid.NewGuid().ToString("N")))
                                   .FullName;
            var appOutputDirVolume = DockerVolume.CreateMirror(appOutputDirPath);
            var appOutputDir       = appOutputDirVolume.ContainerDir;
            var appName            = "angular6app";
            var volume             = CreateAppVolume(appName);
            var appDir             = volume.ContainerDir;
            var runAppScript       = new ShellScriptBuilder()
                                     .AddCommand($"export PORT=4200")
                                     .AddCommand($"oryx -appPath {appOutputDir}")
                                     .AddCommand(DefaultStartupFilePath)
                                     .ToString();
            var buildScript = new ShellScriptBuilder()
                              .AddCommand(
                $"oryx build {appDir} -i /tmp/int -o /tmp/out --platform nodejs " +
                $"--platform-version {nodeVersion} -p compress_node_modules={compressFormat}")
                              .AddCommand($"cp -rf /tmp/out/* {appOutputDir}")
                              .ToString();

            await EndToEndTestHelper.BuildRunAndAssertAppAsync(
                appName,
                _output,
                new List <DockerVolume> {
                appOutputDirVolume, volume
            },
                "/bin/sh",
                new[]
            {
                "-c",
                buildScript
            },
                $"oryxdevmcr.azurecr.io/public/oryx/node-{nodeVersion}",
                4200,
                "/bin/sh",
                new[]
            {
                "-c",
                runAppScript
            },
                async (hostPort) =>
            {
                var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                Assert.Contains("Angular6app", data);
            });

            // Re-run the runtime container multiple times against the same output to catch any issues.
            var dockerCli = new DockerCli();

            for (var i = 0; i < 5; i++)
            {
                await EndToEndTestHelper.RunAndAssertAppAsync(
                    imageName : $"oryxdevmcr.azurecr.io/public/oryx/node-{nodeVersion}",
                    output : _output,
                    volumes : new List <DockerVolume> {
                    appOutputDirVolume, volume
                },
                    environmentVariables : new List <EnvironmentVariable>(),
                    port : 4200,
                    link : null,
                    runCmd : "/bin/sh",
                    runArgs : new[]
                {
                    "-c",
                    runAppScript
                },
                    assertAction : async(hostPort) =>
                {
                    var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                    Assert.Contains("Angular6app", data);
                },
                    dockerCli);
            }
        }
 public DotnetCoreImageVersionsTest(ITestOutputHelper output)
 {
     _output = output;
     _dockerCli = new DockerCli();
 }
 public DotnetCoreStartupScriptGenerationTest(ITestOutputHelper output)
 {
     _output    = output;
     _dockerCli = new DockerCli();
 }
Example #14
0
 public NodeJSSampleAppsTest(ITestOutputHelper output)
 {
     _output         = output;
     _dockerCli      = new DockerCli(new EnvironmentVariable[] { new EnvironmentVariable(LoggingConstants.AppServiceAppNameEnvironmentVariableName, SampleAppName) });
     _hostSamplesDir = Path.Combine(Directory.GetCurrentDirectory(), "SampleApps");
 }
Example #15
0
 public SampleAppsTestBase(ITestOutputHelper output, DockerCli dockerCli = null)
 {
     _output      = output;
     _dockerCli   = dockerCli ?? new DockerCli();
     _imageHelper = new ImageTestHelper(output);
 }
Example #16
0
 public PythonSampleAppsTest(ITestOutputHelper output)
 {
     _output         = output;
     _dockerCli      = new DockerCli();
     _hostSamplesDir = Path.Combine(Directory.GetCurrentDirectory(), "SampleApps");
 }
Example #17
0
 public VersionInformationTest(ITestOutputHelper output)
 {
     _output    = output;
     _dockerCli = new DockerCli();
 }
Example #18
0
        public async Task CanBuildAndRunAngular6App_WithDevAndProdDependencies_UsingZippedNodeModules(string nodeVersion)
        {
            // Arrange
            string compressFormat   = "tar-gz";
            var    appOutputDirPath = Directory.CreateDirectory(Path.Combine(_tempRootDir, Guid.NewGuid().ToString("N")))
                                      .FullName;
            var appOutputDirVolume = DockerVolume.CreateMirror(appOutputDirPath);
            var appOutputDir       = appOutputDirVolume.ContainerDir;
            var appName            = "angular6app";
            var volume             = CreateAppVolume(appName);
            var appDir             = volume.ContainerDir;
            var runAppScript       = new ShellScriptBuilder()
                                     .AddCommand($"export PORT=4200")
                                     .AddCommand($"oryx create-script -appPath {appOutputDir}")
                                     .AddCommand(DefaultStartupFilePath)
                                     .ToString();
            var buildScript = new ShellScriptBuilder()
                              .AddCommand(
                $"oryx build {appDir} -i /tmp/int -o {appOutputDir} --platform nodejs " +
                $"--platform-version {nodeVersion} -p compress_node_modules={compressFormat}")
                              .ToString();

            await EndToEndTestHelper.BuildRunAndAssertAppAsync(
                appName,
                _output,
                new List <DockerVolume> {
                appOutputDirVolume, volume
            },
                "/bin/sh",
                new[]
            {
                "-c",
                buildScript
            },
                _imageHelper.GetTestRuntimeImage("node", nodeVersion),
                4200,
                "/bin/sh",
                new[]
            {
                "-c",
                runAppScript
            },
                async (hostPort) =>
            {
                var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                Assert.Contains("Angular6app", data);
            });

            // Re-run the runtime container multiple times against the same output to catch any issues.
            var dockerCli = new DockerCli();

            for (var i = 0; i < 5; i++)
            {
                await EndToEndTestHelper.RunAndAssertAppAsync(
                    imageName : _imageHelper.GetTestRuntimeImage("node", nodeVersion),
                    output : _output,
                    volumes : new List <DockerVolume> {
                    appOutputDirVolume, volume
                },
                    environmentVariables : new List <EnvironmentVariable>(),
                    port : 4200,
                    link : null,
                    runCmd : "/bin/sh",
                    runArgs : new[]
                {
                    "-c",
                    runAppScript
                },
                    assertAction : async(hostPort) =>
                {
                    var data = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/");
                    Assert.Contains("Angular6app", data);
                },
                    dockerCli);
            }
        }