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()); } }
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)); }
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"); }
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(); }
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()); } }
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); }