Beispiel #1
0
 public void TestUploadInBadServer_UploaderRestart(
     [CombinatorialValues(new[] { 0 }, new[] { 100 }, new[] { 410 }, new[] { 0, 410 })] int[] dodgyBytes,
     [CombinatorialValues(100, 400, 1000)] int chunkSize)
 {
     using (var server = new MultiChunkBadServer(_server, dodgyBytes, HttpStatusCode.NotFound))
         using (var service = new MockClientService(server.HttpPrefix))
         {
             var             content   = new MemoryStream(uploadTestBytes);
             Uri             uploadUri = null;
             IUploadProgress progress;
             {
                 var uploader = new TestResumableUpload(service, "MultiChunk", "POST", content, "text/plain", chunkSize);
                 uploader.UploadSessionData += s => uploadUri = s.UploadUri;
                 progress = uploader.Upload();
             }
             Assert.NotNull(uploadUri);
             int sanity = 0;
             while (progress.Status == UploadStatus.Failed && sanity++ < 10)
             {
                 var uploader = new TestResumableUpload(service, "MultiChunk", "POST", content, "text/plain", chunkSize);
                 progress = uploader.Resume(uploadUri);
             }
             Assert.Equal(UploadStatus.Completed, progress.Status);
             Assert.Equal(uploadTestBytes, server.Bytes);
         }
 }
Beispiel #2
0
        public void TestUploadInBadServer_NeedsResume(
            [CombinatorialValues(true, false)] bool knownSize,
            [CombinatorialValues(new[] { 0 }, new[] { 100 }, new[] { 410 }, new[] { 0, 410 })] int[] dodgyBytes,
            [CombinatorialValues(100, 400, 1000)] int chunkSize,
            [CombinatorialValues(4096, 51, 100)] int bufferSize)
        {
            var expectedCallCount = 1 + (uploadLength + chunkSize - 1) / chunkSize
                                    + dodgyBytes.Length * 2;

            using (var server = new MultiChunkBadServer(_server, dodgyBytes, HttpStatusCode.NotFound))
                using (var service = new MockClientService(server.HttpPrefix))
                {
                    var content  = knownSize ? new MemoryStream(uploadTestBytes) : new UnknownSizeMemoryStream(uploadTestBytes);
                    var uploader = new TestResumableUpload(service, "MultiChunk", "POST", content, "text/plain", chunkSize);
                    uploader.BufferSize = bufferSize;
                    var progress = uploader.Upload();
                    int sanity   = 0;
                    while (progress.Status == UploadStatus.Failed && sanity++ < 10)
                    {
                        progress = uploader.Resume();
                    }
                    Assert.Equal(UploadStatus.Completed, progress.Status);
                    Assert.Equal(expectedCallCount, server.Requests.Count);
                    Assert.Equal(uploadTestBytes, server.Bytes);
                }
        }