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()
         );
 }
示例#3
0
        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)
                );
        }