Beispiel #1
0
        public async Task Execute_WithPathSpaces()
        {
            // Verify that we can execute SUDO and non-SUDO commands from a temporary
            // folder that includes spaces.  This happens when the user's Windows username
            // include spaces.

            var imagePath = await TestHelper.GetTestImageAsync();

            using (var folderWithSpaces = new TempFolder(folder: Path.Combine(Path.GetTempPath(), $"test {Guid.NewGuid().ToString("d")}")))
            {
                using (var tempFolder = new TempFolder())
                {
                    try
                    {
                        Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path);

                        var distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser);

                        distro.TempFolder = folderWithSpaces.Path;

                        Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText);
                        Assert.Contains("Hello World!", distro.SudoExecute("echo", "Hello World!").OutputText);
                    }
                    finally
                    {
                        TestHelper.RemoveTestDistro();
                    }
                }
            }
        }
Beispiel #2
0
        public async Task StartAs_Sysadmin()
        {
            // Verify that we can start a distro as [sysadmin] without configuring
            // or starting systemd.

            var imagePath = await TestHelper.GetTestImageAsync();

            using (var tempFolder = new TempFolder())
            {
                try
                {
                    Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path);

                    // Start as the [sysadmin] user.

                    var distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser);

                    Assert.Equal(KubeConst.SysAdminUser, distro.User);

                    // Expecting to be running under MSFT's [init] process 1.

                    var response = distro.Execute("ps", "-e");

                    Assert.Equal(0, response.ExitCode);
                    Assert.Contains("init", response.OutputText);

                    // Expecting to be logged in as [root]

                    response = distro.Execute("echo", "$LOGNAME");

                    Assert.Equal(0, response.ExitCode);
                    Assert.Equal(KubeConst.SysAdminUser, response.OutputText.Trim());
                }
                finally
                {
                    TestHelper.RemoveTestDistro();
                }
            }
        }
Beispiel #3
0
        public async Task ImportExport()
        {
            // Verify that we can import and export distributions.

            var imagePath = await TestHelper.GetTestImageAsync();

            using (var tempFolder = new TempFolder())
            {
                try
                {
                    //---------------------------------------------------------
                    // Import the distribution and verify that we can execute a command.

                    Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path);
                    Assert.True(Wsl2Proxy.Exists(TestHelper.TestDistroName));

                    var distro = new Wsl2Proxy(TestHelper.TestDistroName);

                    Assert.Equal(TestHelper.TestDistroName, distro.Name);
                    Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText);

                    //---------------------------------------------------------
                    // Terminate the distribution and verify that we can export it.

                    var exportPath = Path.Combine(tempFolder.Path, "export.tar");

                    Wsl2Proxy.Terminate(TestHelper.TestDistroName);
                    Wsl2Proxy.Export(TestHelper.TestDistroName, exportPath);

                    //---------------------------------------------------------
                    // Remove the test distribution and verify that we can regenerate
                    // it from the image we just exported.

                    TestHelper.RemoveTestDistro();

                    Wsl2Proxy.Import(TestHelper.TestDistroName, exportPath, tempFolder.Path);
                    Assert.True(Wsl2Proxy.Exists(TestHelper.TestDistroName));

                    distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser);

                    Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText);
                }
                finally
                {
                    TestHelper.RemoveTestDistro();
                }
            }
        }
Beispiel #4
0
        public async Task Execute()
        {
            // Verify that we can execute SUDO and non-SUDO commands.

            var imagePath = await TestHelper.GetTestImageAsync();

            using (var tempFolder = new TempFolder())
            {
                try
                {
                    Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path);

                    var distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser);

                    Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText);
                    Assert.Contains("Hello World!", distro.SudoExecute("echo", "Hello World!").OutputText);
                }
                finally
                {
                    TestHelper.RemoveTestDistro();
                }
            }
        }