Пример #1
0
        private async Task ValidateDestination(IAsyncFilesCommands destination)
        {
            var stats = await destination.GetStatisticsAsync();

            Assert.Equal(20, stats.FileCount);

            var headers = await destination.BrowseAsync();

            Assert.Equal(20, headers.Length);

            for (int i = 0; i < 10; i++)
            {
                var metadata = new Reference <RavenJObject>();
                var stream   = await destination.DownloadAsync(SynchronizedFileName(i), metadata);

                Assert.Equal(stream.GetMD5Hash(), CreateUniformFileStream(i, (char)i).GetMD5Hash());

                stream = await destination.DownloadAsync(FileName(i), metadata);

                Assert.Equal(stream.GetMD5Hash(), CreateUniformFileStream(i, (char)i).GetMD5Hash());

                var searchResult = await destination.SearchAsync("ETag:" + metadata.Value[Constants.MetadataEtagField]);

                Assert.Equal(1, searchResult.Files.Count);
                Assert.Equal(1, searchResult.FileCount);

                var config = await destination.Configuration.GetKeyAsync <RavenJObject>(ConfigurationName(i));

                Assert.Equal(string.Format("value-{0}", i), config["key"].ToString());
            }
        }
Пример #2
0
        private async Task ValidateSource(IAsyncFilesCommands source)
        {
            var stats = await source.GetStatisticsAsync();

            Assert.Equal(10, stats.FileCount);
            Assert.Equal(0, stats.ActiveSyncs.Count);
            Assert.Equal(0, stats.PendingSyncs.Count);

            var headers = await source.BrowseAsync();

            Assert.Equal(10, headers.Length);

            for (int i = 0; i < 10; i++)
            {
                var metadata = new Reference <RavenJObject>();
                var stream   = await source.DownloadAsync(SynchronizedFileName(i), metadata);

                Assert.Equal(stream.GetMD5Hash(), CreateUniformFileStream(i, (char)i).GetMD5Hash());
            }

            var search = await source.SearchAsync("");

            Assert.Equal(10, search.Files.Count);
            Assert.Equal(10, search.FileCount);
        }
 private string[] ComputeMd5Sums(IAsyncFilesCommands filesCommands, int filesCount = 2)
 {
     return(Enumerable.Range(1, filesCount).Select(i =>
     {
         using (var stream = filesCommands.DownloadAsync(string.Format("file{0}.bin", i)).Result)
         {
             return stream.GetMD5Hash();
         }
     }).ToArray());
 }
        private static async Task <string> RunContentSynchronization(IAsyncFilesCommands sourceClient, IAsyncFilesCommands destinationClient, Action action = null)
        {
            await destinationClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("destination")));

            if (action != null)
            {
                action();
            }

            await sourceClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("source")));

            var report = await sourceClient.Synchronization.StartAsync("test", destinationClient);

            Assert.Null(report.Exception);
            Assert.Equal(SynchronizationType.ContentUpdate, report.Type);

            var stream = await destinationClient.DownloadAsync("test");

            return(StreamToString(stream));
        }
Пример #5
0
        private static void WaitForFileDelete(IAsyncFilesCommands client, string fileName)
        {
            var result = SpinWait.SpinUntil(() =>
            {
                try
                {
                    var file = AsyncHelpers.RunSync(() => client.DownloadAsync(fileName));
                    return(file == null);
                }
                catch (FileNotFoundException)
                {
                    return(true);
                }
            }, TimeSpan.FromSeconds(30));

            if (result)
            {
                return;
            }

            throw new TimeoutException("Could retrieve file " + fileName + " while it was supposed to be deleted");
        }
Пример #6
0
        private new static void WaitForFile(IAsyncFilesCommands client, string fileName)
        {
            var result = SpinWait.SpinUntil(() =>
            {
                try
                {
                    var file = AsyncHelpers.RunSync(() => client.DownloadAsync(fileName));
                    return(file != null);
                }
                catch (FileNotFoundException)
                {
                    return(false);
                }
            }, TimeSpan.FromSeconds(30));

            if (result)
            {
                return;
            }

            throw new TimeoutException("Could not download file " + fileName);
        }
        private static async Task <string> ExecuteRawSynchronizationRequest(IAsyncFilesCommands sourceClient, IAsyncFilesCommands destinationClient, Action action = null)
        {
            await destinationClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("destination")));

            if (action != null)
            {
                action();
            }

            await sourceClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("source")));

            var sourceStream = new MemoryStream();

            (await sourceClient.DownloadAsync("test")).CopyTo(sourceStream);

            var metadata = await sourceClient.GetMetadataForAsync("test");

            var request = new SynchronizationMultipartRequest(destinationClient.Synchronization, new ServerInfo()
            {
                FileSystemUrl = sourceClient.UrlFor(),
                Id            = sourceClient.GetServerIdAsync().Result
            }, "test", metadata, sourceStream, new[]
            {
                new RdcNeed()
                {
                    BlockLength = 6,
                    BlockType   = RdcNeedType.Source,
                    FileOffset  = 0
                }
            });

            var synchronizationReport = await request.PushChangesAsync(CancellationToken.None);

            Assert.Null(synchronizationReport.Exception);

            var stream = await destinationClient.DownloadAsync("test");

            return(StreamToString(stream));
        }
		private static async Task<string> ExecuteRawSynchronizationRequest(IAsyncFilesCommands sourceClient, IAsyncFilesCommands destinationClient, Action action = null)
		{
			await destinationClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("destination")));

			if (action != null)
				action();

			await sourceClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("source")));

			var sourceStream = new MemoryStream();

			(await sourceClient.DownloadAsync("test")).CopyTo(sourceStream);

			var metadata = await sourceClient.GetMetadataForAsync("test");

			var request = new SynchronizationMultipartRequest(destinationClient.Synchronization, new ServerInfo()
			{
				FileSystemUrl = sourceClient.UrlFor(),
				Id = sourceClient.GetServerIdAsync().Result
			}, "test", metadata, sourceStream, new[]
			{
				new RdcNeed()
				{
					BlockLength = 6,
					BlockType = RdcNeedType.Source,
					FileOffset = 0
				}
			});

			var synchronizationReport = await request.PushChangesAsync(CancellationToken.None);

			Assert.Null(synchronizationReport.Exception);

			var stream = await destinationClient.DownloadAsync("test");

			return StreamToString(stream);
		}
		private string[] ComputeMd5Sums(IAsyncFilesCommands filesCommands, int filesCount = 2)
		{
			return Enumerable.Range(1, filesCount).Select(i =>
			{
				using (var stream = filesCommands.DownloadAsync(string.Format("file{0}.bin", i)).Result)
				{
					return stream.GetMD5Hash();
				}
			}).ToArray();
		}
Пример #10
0
		private async Task ValidateDestination(IAsyncFilesCommands destination)
		{
			var stats = await destination.GetStatisticsAsync();

			Assert.Equal(20, stats.FileCount);

			var headers = await destination.BrowseAsync();
			Assert.Equal(20, headers.Length);

			for (int i = 0; i < 10; i++)
			{
				var metadata = new Reference<RavenJObject>();
				var stream = await destination.DownloadAsync(SynchronizedFileName(i), metadata);

				Assert.Equal(stream.GetMD5Hash(), CreateUniformFileStream(i, (char) i).GetMD5Hash());

				stream = await destination.DownloadAsync(FileName(i), metadata);

				Assert.Equal(stream.GetMD5Hash(), CreateUniformFileStream(i, (char) i).GetMD5Hash());

				var searchResult = await destination.SearchAsync("ETag:" + metadata.Value[Constants.MetadataEtagField]);

				Assert.Equal(1, searchResult.Files.Count);
				Assert.Equal(1, searchResult.FileCount);

				var config = await destination.Configuration.GetKeyAsync<RavenJObject>(ConfigurationName(i));

				Assert.Equal(string.Format("value-{0}", i), config["key"].ToString());
			}
		}
Пример #11
0
		private async Task ValidateSource(IAsyncFilesCommands source)
		{
			var stats = await source.GetStatisticsAsync();

			Assert.Equal(10, stats.FileCount);
			Assert.Equal(0, stats.ActiveSyncs.Count);
			Assert.Equal(0, stats.PendingSyncs.Count);

			var headers = await source.BrowseAsync();
			Assert.Equal(10, headers.Length);

			for (int i = 0; i < 10; i++)
			{
				var metadata = new Reference<RavenJObject>();
				var stream = await source.DownloadAsync(SynchronizedFileName(i), metadata);

				Assert.Equal(stream.GetMD5Hash(), CreateUniformFileStream(i, (char) i).GetMD5Hash());
			}

			var search = await source.SearchAsync("");
			Assert.Equal(10, search.Files.Count);
			Assert.Equal(10, search.FileCount);
		}
		private static async Task<string> RunContentSynchronization(IAsyncFilesCommands sourceClient, IAsyncFilesCommands destinationClient, Action action = null)
		{
			await destinationClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("destination")));

			if (action != null)
				action();

			await sourceClient.UploadAsync("test", new MemoryStream(Encoding.UTF8.GetBytes("source")));

			var report = await sourceClient.Synchronization.StartAsync("test", destinationClient);

			Assert.Null(report.Exception);
			Assert.Equal(SynchronizationType.ContentUpdate, report.Type);

			var stream = await destinationClient.DownloadAsync("test");

			return StreamToString(stream);
		}