public static void ConfigureProgressValidator(DirectoryProgressValidator <UploadDirectoryProgressArgs> progressValidator) { progressValidator.Validate = (progress, lastProgress) => { Assert.False(string.IsNullOrEmpty(progress.CurrentFile)); Assert.True(progress.TotalNumberOfBytesForCurrentFile > 0); Assert.True(progress.TransferredBytesForCurrentFile > 0); if (lastProgress != null) { Assert.True(progress.NumberOfFilesUploaded >= lastProgress.NumberOfFilesUploaded); Assert.True(progress.TransferredBytes > lastProgress.TransferredBytes); if (progress.NumberOfFilesUploaded == lastProgress.NumberOfFilesUploaded) { Assert.True(progress.TransferredBytes - lastProgress.TransferredBytes >= 100 * KILO_SIZE); } else { Assert.Equal(progress.TransferredBytesForCurrentFile, progress.TotalNumberOfBytesForCurrentFile); } } if (progress.NumberOfFilesUploaded == progress.TotalNumberOfFiles) { Assert.Equal(progress.TransferredBytes, progress.TotalBytes); progressValidator.IsProgressEventComplete = true; } Console.Write("\t{0} : {1}/{2}\t", progress.CurrentFile, progress.TransferredBytesForCurrentFile, progress.TotalNumberOfBytesForCurrentFile); Console.WriteLine(progress.ToString()); }; }
public void DownloadDirectoryProgressTest() { var directoryName = UtilityMethods.GenerateName(@"DownloadDirectoryTest"); var progressValidator = new DirectoryProgressValidator <DownloadDirectoryProgressArgs>(); progressValidator.Validate = (progress, lastProgress) => { if (lastProgress != null) { Assert.IsTrue(progress.NumberOfFilesDownloaded >= lastProgress.NumberOfFilesDownloaded); Assert.IsTrue(progress.TransferredBytes > lastProgress.TransferredBytes); if (progress.NumberOfFilesDownloaded == lastProgress.NumberOfFilesDownloaded) { Assert.IsTrue(progress.TransferredBytes - lastProgress.TransferredBytes >= 100 * KILO_SIZE); } } if (progress.NumberOfFilesDownloaded == progress.TotalNumberOfFiles) { Assert.AreEqual(progress.TransferredBytes, progress.TotalBytes); progressValidator.IsProgressEventComplete = true; } Console.WriteLine(progress.ToString()); }; DownloadDirectory(directoryName, progressValidator); progressValidator.AssertOnCompletion(); }
public void DownloadDirectoryProgressTest() { var directoryName = UtilityMethods.GenerateName(@"DownloadDirectoryTest"); var progressValidator = new DirectoryProgressValidator <DownloadDirectoryProgressArgs>(); ConfigureProgressValidator(progressValidator); DownloadDirectory(directoryName, progressValidator); progressValidator.AssertOnCompletion(); }
private Task UploadDirectoryAsync(string directoryName, long size, DirectoryProgressValidator <UploadDirectoryProgressArgs> progressValidator, bool validate = true, bool concurrent = true) { var directoryPath = Path.Combine(basePath, directoryName); for (int i = 0; i < 5; i++) { var filePath = Path.Combine(Path.Combine(directoryPath, i.ToString()), "file.txt"); //MultipartUploadTests.UtilityMethods.GenerateFile(filePath, (i % 2 == 0) ? size : size / 2); UtilityMethods.GenerateFile(filePath, size); } var config = new TransferUtilityConfig { ConcurrentServiceRequests = 10, }; var transferUtility = new TransferUtility(Client, config); var request = new TransferUtilityUploadDirectoryRequest { BucketName = testBucketName, Directory = directoryPath, KeyPrefix = directoryName, SearchPattern = "*", SearchOption = SearchOption.AllDirectories, }; //if (concurrent) // request.UploadFilesConcurrently = true; if (progressValidator != null) { request.UploadDirectoryProgressEvent += progressValidator.OnProgressEvent; } HashSet <string> files = new HashSet <string>(); request.UploadDirectoryProgressEvent += (s, e) => { files.Add(e.CurrentFile); Console.WriteLine("Progress callback = " + e.ToString()); }; transferUtility.UploadDirectory(request); Assert.Equal(5, files.Count); if (validate) { return(ValidateDirectoryContents(testBucketName, directoryName, directoryPath)); } else { return(Task.FromResult <object>(null)); } }
public async Task DownloadDirectoryProgressTest() { // disable clock skew testing, this is a multithreaded test var directoryName = UtilityMethods.GenerateName(@"DownloadDirectoryTest"); var progressValidator = new DirectoryProgressValidator <DownloadDirectoryProgressArgs>(); ConfigureProgressValidator(progressValidator); await DownloadDirectoryAsync(directoryName, progressValidator).ConfigureAwait(false); progressValidator.AssertOnCompletion(); }
public void UploadDirectoryWithProgressTracker() { var directoryName = UtilityMethods.GenerateName("UploadDirectoryTest"); var progressValidator = new DirectoryProgressValidator <UploadDirectoryProgressArgs>(); progressValidator.Validate = (progress, lastProgress) => { Assert.IsFalse(string.IsNullOrEmpty(progress.CurrentFile)); Assert.IsTrue(progress.TotalNumberOfBytesForCurrentFile > 0); Assert.IsTrue(progress.TransferredBytesForCurrentFile > 0); if (lastProgress != null) { Assert.IsTrue(progress.NumberOfFilesUploaded >= lastProgress.NumberOfFilesUploaded); Assert.IsTrue(progress.TransferredBytes > lastProgress.TransferredBytes); if (progress.NumberOfFilesUploaded == lastProgress.NumberOfFilesUploaded) { Assert.IsTrue(progress.TransferredBytes - lastProgress.TransferredBytes >= 100 * KILO_SIZE); } else { Assert.AreEqual(progress.TransferredBytesForCurrentFile, progress.TotalNumberOfBytesForCurrentFile); } } if (progress.NumberOfFilesUploaded == progress.TotalNumberOfFiles) { Assert.AreEqual(progress.TransferredBytes, progress.TotalBytes); progressValidator.IsProgressEventComplete = true; } Console.Write("\t{0} : {1}/{2}\t", progress.CurrentFile, progress.TransferredBytesForCurrentFile, progress.TotalNumberOfBytesForCurrentFile); Console.WriteLine(progress.ToString()); }; UploadDirectory(directoryName, 10 * MEG_SIZE, progressValidator, true, false); progressValidator.AssertOnCompletion(); }