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 }
                )
                );
        }
Esempio n. 2
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))
                       ));
        }