public async Task WriteAsync(string id, Stream sourceStream, bool append, CancellationToken cancellationToken) { GenericValidation.CheckBlobId(id); AdlsClient client = await GetAdlsClient(); if (append && (await ExistsAsync(new[] { id }, cancellationToken)).First()) { AdlsOutputStream adlsStream = await client.GetAppendStreamAsync(id, cancellationToken); using (var writeStream = new AdlsWriteableStream(adlsStream)) { await sourceStream.CopyToAsync(writeStream); } } else { AdlsOutputStream adlsStream = await client.CreateFileAsync(id, IfExists.Overwrite, createParent : true, cancelToken : cancellationToken); using (var writeStream = new AdlsWriteableStream(adlsStream)) { await sourceStream.CopyToAsync(writeStream); } } }
public void TestRestry3() { int port = 8083; AdlsClient adlsClient = AdlsClient.CreateClientWithoutAccntValidation(MockWebServer.Host + ":" + port, TestToken); MockWebServer server = new MockWebServer(port); server.StartServer(); server.EnqueMockResponse(new MockResponse(502, "Bad Gateway")); server.EnqueMockResponse(new MockResponse(200, "OK")); adlsClient.SetInsecureHttp(); AdlsOutputStream ostream = null; try { ostream = adlsClient.CreateFile("/Test/dir", IfExists.Overwrite, ""); } catch (IOException) { Assert.Fail("The request should have passed"); } server.EnqueMockResponse(new MockResponse(502, "Bad Gateway")); server.EnqueMockResponse(new MockResponse(503, "Service Unavailable")); server.EnqueMockResponse(new MockResponse(504, "Gateway Timeout")); server.EnqueMockResponse(new MockResponse(503, "Service Unavailable")); server.EnqueMockResponse(new MockResponse(503, "Service Unavailable")); try { byte[] buff = Encoding.UTF8.GetBytes(SdkUnitTest.RandomString(5 * 1024 * 1024)); ostream.Write(buff, 0, buff.Length); Assert.Fail("The request should not have passed"); } catch (IOException) { } server.EnqueMockResponse(new MockResponse(200, "OK")); try { ostream.Dispose(); } catch (IOException) { Assert.Fail("This request should have passed"); } server.StopServer(); }
private async Task Upload(StreamReader reader) { string fileName = $"/files/{Guid.NewGuid().ToString()}"; using (AdlsOutputStream file = await Client.CreateFileAsync(fileName, IfExists.Overwrite)) { int bufferSize = 1024 * 1024; char[] buffer = new char[bufferSize]; using (var writer = new StreamWriter(file)) { int totalRead = 0; Console.WriteLine("Reading..."); while (!reader.EndOfStream) { int read = await reader.ReadAsync(buffer, 0, bufferSize); totalRead += read; Console.WriteLine($"Read: {totalRead}"); await writer.WriteAsync(buffer, 0, read); } Console.WriteLine("...done reading!"); } } }
public AdlsWriteableStream(AdlsOutputStream parent) { _parent = parent ?? throw new ArgumentNullException(nameof(parent)); }