Beispiel #1
0
        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());
            };
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        public void DownloadDirectoryProgressTest()
        {
            var directoryName     = UtilityMethods.GenerateName(@"DownloadDirectoryTest");
            var progressValidator = new DirectoryProgressValidator <DownloadDirectoryProgressArgs>();

            ConfigureProgressValidator(progressValidator);

            DownloadDirectory(directoryName, progressValidator);
            progressValidator.AssertOnCompletion();
        }
Beispiel #4
0
        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));
            }
        }
Beispiel #5
0
        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();
        }
Beispiel #6
0
        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();
        }