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);
                }
            }
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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!");
                }
            }
        }
Esempio n. 4
0
 public AdlsWriteableStream(AdlsOutputStream parent)
 {
     _parent = parent ?? throw new ArgumentNullException(nameof(parent));
 }