public void MultipleSegmentUploader_ResumedUploadWithMultipleSegments() { //the strategy here is to upload everything, then delete a set of the segments, and verify that a resume will pick up the slack var fe = new InMemoryFrontEnd(); var metadata = CreateMetadata(10); try { var msu = new MultipleSegmentUploader(metadata, 1, fe); msu.UseSegmentBlockBackOffRetryStrategy = false; msu.Upload(); VerifyTargetStreamsAreComplete(metadata, fe); //delete about 50% of segments for (int i = 0; i < metadata.SegmentCount; i++) { var currentSegment = metadata.Segments[i]; if (i % 2 == 0) { currentSegment.Status = SegmentUploadStatus.Pending; fe.DeleteStream(currentSegment.Path); } } //re-upload everything msu = new MultipleSegmentUploader(metadata, 1, fe); msu.Upload(); VerifyTargetStreamsAreComplete(metadata, fe); } finally { metadata.DeleteFile(); } }
public void MultipleSegmentUploader_ResumedUploadWithMultipleSegments() { //the strategy here is to upload everything, then delete a set of the segments, and verify that a resume will pick up the slack var fe = new InMemoryFrontEnd(); var metadata = CreateMetadata(10); try { var msu = new MultipleSegmentUploader(metadata, 1, fe); msu.UseSegmentBlockBackOffRetryStrategy = false; Assert.DoesNotThrow(() => { msu.Upload(); }); VerifyTargetStreamsAreComplete(metadata, fe); //delete about 50% of segments for (int i = 0; i < metadata.SegmentCount; i++) { var currentSegment = metadata.Segments[i]; if (i % 2 == 0) { currentSegment.Status = SegmentUploadStatus.Pending; fe.DeleteStream(currentSegment.Path); } } //re-upload everything msu = new MultipleSegmentUploader(metadata, 1, fe); Assert.DoesNotThrow(() => { msu.Upload(); }); VerifyTargetStreamsAreComplete(metadata, fe); } finally { metadata.DeleteFile(); } }