public void RangesForRequestsReturnsExpectedLookup() { var result = PartialObjectRangeUtilities.RangesForRequests( _blobs.Select(p => new Blob(p, "bar")).Concat(_blobs.Select(p => new Blob(p, "foo"))), _parts1.Select(p => new Ds3PartialObject(p, "bar")).Concat(_parts2.Select(p => new Ds3PartialObject(p, "foo"))) ); CollectionAssert.AreEqual( ( from cr in _expectedResults1 let blob = new Blob(cr.Context, "bar") orderby blob, cr.Range select new { Blob = blob, cr.Range } ).Concat( from cr in _expectedResults2 let blob = new Blob(cr.Context, "foo") orderby blob, cr.Range select new { Blob = blob, cr.Range } ), ( from grp in result from r in grp orderby grp.Key, r select new { Blob = grp.Key, Range = r } ) ); }
public void RangesForObjectRequestsReturnsBlobContextRanges() { Assert.AreEqual( _expectedResults1.Sorted().ToArray(), PartialObjectRangeUtilities.RangesForObjectRequests(_blobs, _parts1).Sorted().ToArray() ); Assert.AreEqual( _expectedResults2.Sorted().ToArray(), PartialObjectRangeUtilities.RangesForObjectRequests(_blobs, _parts2).Sorted().ToArray() ); }
public static IPartialReadJob Create( JobResponse jobResponse, IEnumerable <string> fullObjects, IEnumerable <Ds3PartialObject> partialObjects, ITransferItemSource transferItemSource) { var blobs = Blob.Convert(jobResponse).ToList(); var allItems = partialObjects .Concat(PartialObjectRangeUtilities.ObjectPartsForFullObjects(fullObjects, blobs)) .ToList(); return(new PartialReadJob( jobResponse.BucketName, jobResponse.JobId, transferItemSource, PartialObjectRangeUtilities.RangesForRequests(blobs, allItems), allItems, allItems.Select(po => ContextRange.Create(Range.ByLength(0L, po.Range.Length), po)) )); }
public void ObjectPartsForFullObjectsReturnsExpectedParts() { var fullObjects = new[] { "foo", "bar", "baz" }; var blobs = new[] { new Blob(Range.ByLength(10L, 10L), "hello"), new Blob(Range.ByLength(0L, 123L), "baz"), new Blob(Range.ByLength(15L, 15L), "bar"), new Blob(Range.ByLength(100L, 10L), "foo"), new Blob(Range.ByLength(0L, 15L), "bar"), new Blob(Range.ByLength(0L, 100L), "foo"), }; CollectionAssert.AreEquivalent( new[] { new Ds3PartialObject(Range.ByLength(0L, 123L), "baz"), new Ds3PartialObject(Range.ByLength(0L, 110L), "foo"), new Ds3PartialObject(Range.ByLength(0L, 30L), "bar"), }, PartialObjectRangeUtilities.ObjectPartsForFullObjects(fullObjects, blobs) ); }