public void RemoveRootDirectoryTest()
        {
            CommandAgent.RemoveDirectory(this.fileShare, "/");
            var result = CommandAgent.Invoke();

            CommandAgent.AssertErrors(record => record.AssertError(AssertUtil.InvalidResourceFullQualifiedErrorId, AssertUtil.AuthenticationFailedFullQualifiedErrorId));
        }
        public void CreateCasePreservingExistingDirectoryTest()
        {
            int    length    = this.randomProvider.Next(5, 50);
            string dirName   = FileNamingGenerator.GenerateNameFromRange(length, new Tuple <int, int>((int)'a', (int)'z'));
            var    directory = fileUtil.EnsureDirectoryExists(this.fileShare, dirName);

            // Randomly up case some letters
            StringBuilder sb = new StringBuilder(dirName);

            for (int i = 0; i < sb.Length; i++)
            {
                // 1/3 chance to up case the letters
                if (this.randomProvider.Next(3) == 0)
                {
                    sb[i] = Char.ToUpperInvariant(sb[i]);
                }
            }

            string newDirName = sb.ToString();

            Test.Info("Original dir name: {0}. New dir name: {1}.", dirName, newDirName);
            CommandAgent.NewDirectory(this.fileShare, newDirName);
            var result = CommandAgent.Invoke();

            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ResourceAlreadyExistsFullQualifiedErrorId));
        }
Пример #3
0
        /// <summary>
        /// Positive functional test case 5.8.1
        /// </summary>
        /// <remarks>
        /// RDTask 1414230:
        /// Test case DownloadExistingFile requires a 200G file already exist
        /// on the storage account in the file service. It does not make sense
        /// to generate a 200G file at runtime, upload it and download it in
        /// functional test cases.
        /// Currently, since the only test we could do is against dev fabric,
        /// we could not prepare such file on the cloud first. So the test case
        /// is temp blocked.
        /// Once the xSMB file service GAed, and we are testing against real
        /// storage accounts, we could put this case back online.
        /// </remarks>
        ////[TestMethod]
        ////[TestCategory(PsTag.File)]
        public void DownloadExistingFileTest()
        {
            string[] filesToDownload = Test.Data.Get("ExistingFilesToDownload").Split(';');
            string[] md5Checksum     = Test.Data.Get("ExistingFilesMD5").Split(';');

            for (int i = 0; i < filesToDownload.Length; i++)
            {
                var destination = Path.Combine(Test.Data.Get("TempDir"), FileUtil.GetSpecialFileName());
                try
                {
                    Test.Info("About to download: {0} to {1}", filesToDownload[i], destination);
                    CommandAgent.DownloadFile(this.fileShare, filesToDownload[i], destination);
                    var result = CommandAgent.Invoke();
                    CommandAgent.AssertNoError();
                    result.AssertNoResult();

                    string destinationMD5 = FileUtil.GetFileContentMD5(destination);
                    Test.Assert(
                        destinationMD5.Equals(md5Checksum[i], StringComparison.Ordinal),
                        "MD5 checksum of the downloaded file mismatches. Expected: {0}, Actural: {1}.",
                        md5Checksum[i],
                        destinationMD5);
                }
                finally
                {
                    FileUtil.RemoveFile(destination);
                }
            }
        }
Пример #4
0
        private void CreateShareInternal(Func <string> shareNameProvider, Action <IExecutionResult, string> assertAction, bool validateNotExists = true)
        {
            string shareName = shareNameProvider();

            if (validateNotExists)
            {
                while (fileUtil.Client.GetShareReference(shareName).Exists())
                {
                    shareName = shareNameProvider();
                }
            }

            try
            {
                CommandAgent.NewFileShare(shareName);
                assertAction(CommandAgent.Invoke(), shareName);
            }
            finally
            {
                if (validateNotExists)
                {
                    fileUtil.DeleteFileShareIfExists(shareName);
                }
            }
        }
Пример #5
0
        public void GetShareSnapshot_ExistTime()
        {
            string shareName = CloudFileUtil.GenerateUniqueFileShareName();

            try
            {
                CloudFileShare share          = fileUtil.EnsureFileShareExists(shareName);
                CloudFileShare shareSnapshot1 = share.Snapshot();


                CommandAgent.GetFileShareByName(shareName, shareSnapshot1.SnapshotTime.Value);
                var result = CommandAgent.Invoke();
                result.AssertObjectCollection(obj => result.AssertCloudFileContainer(obj, shareName, snapshotTime: shareSnapshot1.SnapshotTime.Value), 1);
            }
            finally
            {
                try
                {
                    fileUtil.DeleteFileShareIfExists(shareName);
                }
                catch (Exception e)
                {
                    Test.Warn("Unexpected exception when cleanup file share {0}: {1}", shareName, e);
                }
            }
        }
Пример #6
0
        public void GetShareSnapshot_notExistTime()
        {
            string shareName = CloudFileUtil.GenerateUniqueFileShareName();

            try
            {
                CloudFileShare share          = fileUtil.EnsureFileShareExists(shareName);
                CloudFileShare shareSnapshot1 = share.Snapshot();

                CommandAgent.GetFileShareByName(shareName, DateTime.Now.AddDays(-1));
                var result = CommandAgent.Invoke();


                CommandAgent.AssertErrors(record => record.AssertError(AssertUtil.ResourceNotFoundFullQualifiedErrorId));
                result.AssertNoResult();
            }
            finally
            {
                try
                {
                    fileUtil.DeleteFileShareIfExists(shareName);
                }
                catch (Exception e)
                {
                    Test.Warn("Unexpected exception when cleanup file share {0}: {1}", shareName, e);
                }
            }
        }
Пример #7
0
        public void GetDirsToListDir()
        {
            fileUtil.CleanupDirectory(this.fileShare.GetRootDirectoryReference());
            var dirNames = Enumerable.Range(0, this.randomProvider.Next(5, 20)).Select(x => CloudFileUtil.GenerateUniqueFileName()).ToList();

            fileUtil.CleanupDirectory(this.fileShare.GetRootDirectoryReference());
            var dirs      = dirNames.Select(name => fileUtil.EnsureDirectoryExists(this.fileShare, name)).ToList();
            var fileNames = Enumerable.Range(0, this.randomProvider.Next(5, 20)).Select(x => CloudFileUtil.GenerateUniqueFileName()).ToList();
            var files     = fileNames.Select(name => fileUtil.CreateFile(dirs[0], name)).ToList();

            CommandAgent.GetFile(this.fileShare, dirNames[0]);
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddCommand("Get-AzureStorageFile");
            var result = CommandAgent.Invoke();

            CommandAgent.AssertNoError();
            result.AssertFileListItems(files, Enumerable.Empty <CloudFileDirectory>());

            foreach (var dir in dirs)
            {
                fileNames = Enumerable.Range(0, this.randomProvider.Next(5, 20)).Select(x => CloudFileUtil.GenerateUniqueFileName()).ToList();
                files.AddRange(fileNames.Select(name => fileUtil.CreateFile(dir, name)).ToList());
            }

            CommandAgent.Clear();
            CommandAgent.GetFile(this.fileShare);
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddCommand("Get-AzureStorageFile");
            result = CommandAgent.Invoke();
            CommandAgent.AssertNoError();
            result.AssertFileListItems(files, Enumerable.Empty <CloudFileDirectory>());
            fileUtil.CleanupDirectory(this.fileShare.GetRootDirectoryReference());
        }
        public void PipelineCreatingMultipleDirectoriesWhileSomeDirectoryExistsTest()
        {
            int numberOfDirectories = this.randomProvider.Next(2, 33);

            int[]    indexes = Enumerable.Range(0, numberOfDirectories).ToArray();
            string[] names   = indexes.Select(i => CloudFileUtil.GenerateUniqueDirectoryName()).ToArray();
            int      numberOfExistingDirectories = this.randomProvider.Next(1, numberOfDirectories);

            List <int> indexToBeRemoved = new List <int>(indexes);

            for (int i = 0; i < numberOfExistingDirectories; i++)
            {
                int id = this.randomProvider.Next(indexToBeRemoved.Count);
                fileUtil.EnsureDirectoryExists(this.fileShare, names[indexToBeRemoved[id]]);
                indexToBeRemoved.RemoveAt(id);
            }

            CommandAgent.NewDirectoryFromPipeline(this.fileShare.Name);
            var result = CommandAgent.Invoke(names);

            // A total number of "numberOfExistingDirectories" errors should throw while others should success.
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ResourceAlreadyExistsFullQualifiedErrorId), numberOfExistingDirectories);

            // Assert all directories are created
            foreach (string name in names)
            {
                fileUtil.AssertDirectoryExists(this.fileShare, name, string.Format("Directory {0} should exist after created.", name));
            }
        }
Пример #9
0
        public void GetShareSnapshot_CheckIncludeSnapshot()
        {
            string shareName = CloudFileUtil.GenerateUniqueFileShareName();
            string fileName  = CloudFileUtil.GenerateUniqueFileName();

            try
            {
                CloudFileShare share          = fileUtil.EnsureFileShareExists(shareName);
                CloudFileShare shareSnapshot1 = share.Snapshot();
                fileUtil.CreateFile(share, fileName);
                CloudFileShare shareSnapshot2 = share.Snapshot();

                CommandAgent.GetFileShareByName("");
                var result = CommandAgent.Invoke();

                List <DateTimeOffset> snapshotTimes = new List <DateTimeOffset>();
                snapshotTimes.Add(shareSnapshot1.SnapshotTime.Value);
                snapshotTimes.Add(shareSnapshot2.SnapshotTime.Value);

                result.AssertCloudFileContainersExist(shareName, snapshotTimes);
            }
            finally
            {
                try
                {
                    fileUtil.DeleteFileShareIfExists(shareName);
                }
                catch (Exception e)
                {
                    Test.Warn("Unexpected exception when cleanup file share {0}: {1}", shareName, e);
                }
            }
        }
Пример #10
0
        public void DownloadBatchFilesFromListingResult()
        {
            int numberOfFilesToDownload = this.randomProvider.Next(5, 20);
            List <CloudFile> files      = new List <CloudFile>();
            List <string>    fileNames  = new List <string>();

            for (int i = 0; i < numberOfFilesToDownload; i++)
            {
                string cloudFileName = CloudFileUtil.GenerateUniqueFileName();
                string localFilePath = Path.Combine(Test.Data.Get("TempDir"), CloudFileUtil.GenerateUniqueFileName());
                FileUtil.GenerateSmallFile(localFilePath, Utility.GetRandomTestCount(5, 10), true);
                files.Add(fileUtil.CreateFile(this.fileShare, cloudFileName, localFilePath));
                File.Delete(localFilePath);
                fileNames.Add(cloudFileName.ToLowerInvariant());
            }

            DirectoryInfo localDir = new DirectoryInfo(Test.Data.Get("TempDir"));

            CommandAgent.GetFile(this.fileShare);
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddCommand("Get-AzureStorageFileContent");
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddParameter("Destination", localDir.FullName);
            CommandAgent.Invoke();
            CommandAgent.AssertNoError();

            var localFilesInfo = localDir.GetFiles();

            foreach (var fileInfo in localFilesInfo)
            {
                fileNames.Remove(fileInfo.Name.ToLowerInvariant());
            }

            Test.Assert(fileNames.Count == 0, "All files should be downloaded while missing: {0}", string.Join(",", fileNames));
        }
Пример #11
0
        public void GetFileShareUsageTest()
        {
            string fileShareName = CloudFileUtil.GenerateUniqueFileShareName();
            string cloudFileName = CloudFileUtil.GenerateUniqueFileName();
            var    fileShare     = fileUtil.EnsureFileShareExists(fileShareName);

            try
            {
                CommandAgent.GetFileShareByName(fileShareName);

                var result = CommandAgent.Invoke();

                CommandAgent.AssertNoError();
                result.AssertObjectCollection(obj => result.AssertCloudFileContainer(obj, fileShareName), 1);

                fileUtil.CreateFile(fileShare.GetRootDirectoryReference(), cloudFileName);

                CommandAgent.Clear();
                CommandAgent.GetFileShareByName(fileShareName);

                result = CommandAgent.Invoke();
                CommandAgent.AssertNoError();
                result.AssertObjectCollection(obj => result.AssertCloudFileContainer(obj, fileShareName, 1), 1);
            }
            finally
            {
                fileUtil.DeleteFileShareIfExists(fileShareName);
            }
        }
        public void PipelineMultipleShareNamesToRemoveTest()
        {
            // TODO: Generate more random names for file shares after the
            // naming rules is settled down.
            int numberOfShares = this.randomProvider.Next(2, 33);

            string[] names = Enumerable.Range(0, numberOfShares)
                             .Select(i => CloudFileUtil.GenerateUniqueFileShareName()).ToArray();
            foreach (var name in names)
            {
                fileUtil.EnsureFileShareExists(name);
            }

            try
            {
                CommandAgent.RemoveFileShareFromPipeline();
                var result = CommandAgent.Invoke(names);

                CommandAgent.AssertNoError();
                result.AssertNoResult();
            }
            finally
            {
                foreach (string fileShareName in names)
                {
                    fileUtil.DeleteFileShareIfExists(fileShareName);
                }
            }
        }
Пример #13
0
        private void UploadMultipleThroughPipeline(int numberOfFiles, int numberOfExistingFiles)
        {
            string localFilePath = Path.Combine(Test.Data.Get("TempDir"), CloudFileUtil.GenerateUniqueFileName());

            FileUtil.GenerateSmallFile(localFilePath, Utility.GetRandomTestCount(5, 10), true);

            int[]    indexes = Enumerable.Range(0, numberOfFiles).ToArray();
            string[] names   = indexes.Select(i => CloudFileUtil.GenerateUniqueFileName()).ToArray();

            List <int> indexToBeRemoved = new List <int>(indexes);

            for (int i = 0; i < numberOfExistingFiles; i++)
            {
                int id = this.randomProvider.Next(indexToBeRemoved.Count);
                fileUtil.CreateFile(this.fileShare, names[indexToBeRemoved[id]]);
                indexToBeRemoved.RemoveAt(id);
            }

            CommandAgent.UploadFilesFromPipeline(this.fileShare.Name, localFilePath);
            var result = CommandAgent.Invoke(names);

            // Assert all files are created
            foreach (string name in names)
            {
                fileUtil.AssertFileExists(this.fileShare, name, string.Format("File {0} should exist after created.", name));
            }
        }
Пример #14
0
        public void DownloadFileUsingRelativePathAfterChangedDefaultLocation()
        {
            string currentPath = CommandAgent.GetCurrentLocation();

            try
            {
                string cloudFileName = CloudFileUtil.GenerateUniqueFileName();
                string localFilePath = Path.Combine(Test.Data.Get("TempDir"), CloudFileUtil.GenerateUniqueFileName());
                FileUtil.GenerateSmallFile(localFilePath, Utility.GetRandomTestCount(5, 10), true);
                var sourceFile = fileUtil.CreateFile(this.fileShare, cloudFileName, localFilePath);
                CommandAgent.ChangeLocation(Test.Data.Get("TempDir"));
                UploadAndDownloadFileInternal(
                    sourceFile,
                    FileUtil.GetFileContentMD5(localFilePath),
                    destination => CommandAgent.DownloadFile(this.fileShare, cloudFileName, ".", true));
                var result = CommandAgent.Invoke();
                result.AssertNoResult();
                Test.Assert(new FileInfo(Path.Combine(Test.Data.Get("TempDir"), cloudFileName)).Exists, "File should exist after downloaded.");
            }
            finally
            {
                CommandAgent.Clear();
                CommandAgent.ChangeLocation(currentPath);
            }
        }
Пример #15
0
        public void NewDirectoryWithNullShareObjectTest()
        {
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddScript("New-AzureStorageDirectory -Share $null -Path dir");
            var result = CommandAgent.Invoke();

            result.AssertNoResult();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ParameterArgumentValidationErrorFullQualifiedErrorId));
        }
Пример #16
0
        public void CreateDirectoryWithNoPath_FileShareName()
        {
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddScript("New-AzureStorageDirectory -ShareName " + this.fileShare.Name);
            var result = CommandAgent.Invoke();

            result.AssertNoResult();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.MissingMandatoryParameterFullQualifiedErrorId));
        }
Пример #17
0
        public void DownloadFileUsingNullFileObjectTest()
        {
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddScript("Get-AzureStorageFileContent -File $null -Destination .");
            var result = CommandAgent.Invoke();

            result.AssertNoResult();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ParameterArgumentValidationErrorFullQualifiedErrorId));
        }
Пример #18
0
        public void ListFilesUsingNullDirectoryObjectTest()
        {
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddScript("Get-AzureStorageFile -Directory $null");
            var result = CommandAgent.Invoke();

            result.AssertNoResult();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ParameterArgumentValidationErrorFullQualifiedErrorId));
        }
Пример #19
0
        public void NewShareWithEmptyNameTest()
        {
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddScript("New-AzureStorageShare -Name \"\"");
            var result = CommandAgent.Invoke();

            result.AssertNoResult();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ParameterArgumentValidationErrorFullQualifiedErrorId));
        }
Пример #20
0
        public void GetShareByPrefixUsingWildCardTest()
        {
            string shareName = string.Concat("*", CloudFileUtil.GenerateUniqueFileShareName());

            CommandAgent.GetFileShareByPrefix(shareName);
            CommandAgent.Invoke();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.InvalidArgumentFullQualifiedErrorId));
        }
Пример #21
0
        public void RemoveDirectoryWithNoPath_FileShare()
        {
            CommandAgent.SetVariable("share", this.fileShare);
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddScript("Remove-AzureStorageDirectory -Share $share");
            var result = CommandAgent.Invoke();

            result.AssertNoResult();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.MissingMandatoryParameterFullQualifiedErrorId));
        }
Пример #22
0
        public void UploadFileFromSubDirectoryOfRootTest()
        {
            string localFilePath = Path.Combine(Test.Data.Get("TempDir"), CloudFileUtil.GenerateUniqueFileName());

            FileUtil.GenerateSmallFile(localFilePath, Utility.GetRandomTestCount(5, 10), true);
            CommandAgent.UploadFile(this.fileShare, localFilePath, "../a");
            CommandAgent.Invoke();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.InvalidResourceFullQualifiedErrorId, AssertUtil.AuthenticationFailedFullQualifiedErrorId));
        }
Пример #23
0
        public void DownloadingNonExistingFile()
        {
            string cloudFileName = CloudFileUtil.GenerateUniqueFileName();
            var    file          = fileUtil.DeleteFileIfExists(this.fileShare, cloudFileName);

            CommandAgent.DownloadFile(file, Test.Data.Get("TempDir"), true);
            var result = CommandAgent.Invoke();

            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.InvalidOperationExceptionFullQualifiedErrorId, AssertUtil.PathNotFoundFullQualifiedErrorId, AssertUtil.ResourceNotFoundFullQualifiedErrorId));
        }
        public void CreateExistingDirectoryTest()
        {
            string dirName   = CloudFileUtil.GenerateUniqueDirectoryName();
            var    directory = fileUtil.EnsureDirectoryExists(this.fileShare, dirName);

            CommandAgent.NewDirectory(this.fileShare, dirName);
            var result = CommandAgent.Invoke();

            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ResourceAlreadyExistsFullQualifiedErrorId));
        }
        public void RemoveNonExistingDirectoryTest()
        {
            string dir = CloudFileUtil.GenerateUniqueDirectoryName();

            fileUtil.DeleteDirectoryIfExists(this.fileShare, dir);

            CommandAgent.RemoveDirectory(this.fileShare, dir);
            var result = CommandAgent.Invoke();

            CommandAgent.AssertErrors(record => record.AssertError(AssertUtil.ResourceNotFoundFullQualifiedErrorId));
        }
        public void RemoveDirectoryUnderNonExistingShareTest()
        {
            string shareName = CloudFileUtil.GenerateUniqueFileShareName();
            string dir       = CloudFileUtil.GenerateUniqueDirectoryName();

            fileUtil.DeleteFileShareIfExists(shareName);
            CommandAgent.RemoveDirectory(shareName, dir);
            var result = CommandAgent.Invoke();

            CommandAgent.AssertErrors(record => record.AssertError(AssertUtil.ShareNotFoundFullQualifiedErrorId));
        }
Пример #27
0
        public void RemoveNonExistingFile()
        {
            string fileName = CloudFileUtil.GenerateUniqueFileName();

            fileUtil.DeleteFileIfExists(this.fileShare, fileName);

            CommandAgent.RemoveFile(this.fileShare, fileName);
            var result = CommandAgent.Invoke();

            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.ResourceNotFoundFullQualifiedErrorId));
        }
Пример #28
0
        public void CreateDirectoryWithNoPath_Directory()
        {
            var dir = fileUtil.EnsureDirectoryExists(this.fileShare, CloudFileUtil.GenerateUniqueDirectoryName());

            CommandAgent.SetVariable("dir", dir);
            ((PowerShellAgent)CommandAgent).PowerShellSession.AddScript("New-AzureStorageDirectory -Directory $dir");
            var result = CommandAgent.Invoke();

            result.AssertNoResult();
            CommandAgent.AssertErrors(err => err.AssertError(AssertUtil.MissingMandatoryParameterFullQualifiedErrorId));
        }
Пример #29
0
        public void CreateDirectoryAndListThroughPSHTest()
        {
            string directoryName = CloudFileUtil.GenerateUniqueDirectoryName();

            this.mountedShareRoot.CreateSubdirectory(directoryName);
            CommandAgent.GetFile(this.fileShare);
            var result = CommandAgent.Invoke();

            CommandAgent.AssertNoError();
            result.AssertObjectCollection(obj => obj.AssertCloudFileDirectory(directoryName));
        }
Пример #30
0
        public void CreateDirectoryAndListThroughSMBTest()
        {
            string directoryName = CloudFileUtil.GenerateUniqueDirectoryName();

            CommandAgent.NewDirectory(this.fileShare, directoryName);
            CommandAgent.Invoke();
            CommandAgent.AssertNoError();
            SMBValidationRetry(
                () => this.mountedShareRoot.GetDirectories().Select(x => x.Name).Contains(directoryName),
                "list the newly created directory through SMB protocol");
        }