Exemplo n.º 1
0
        public void CompareToWithInvalidTypesThrowsException()
        {
            var item = new Ds3PartialObject(Range.ByLength(1, 10), "foo");

            Assert.Throws <ArgumentException>(() => item.CompareTo(new { Name = "foo", Range = Range.ByLength(1, 10) }));
            Assert.Throws <ArgumentNullException>(() => item.CompareTo(null));
        }
Exemplo n.º 2
0
        public void CompareToWorks(int result, Ds3PartialObject other)
        {
            var item = new Ds3PartialObject(Range.ByLength(1, 10), "foo");

            Assert.AreEqual(result, item.CompareTo((object)other));
            Assert.AreEqual(result, item.CompareTo(other));
        }
 public void EqualsWorks()
 {
     var item = new Ds3PartialObject(Range.ByLength(1, 10), "foo");
     Assert.True(item.Equals(item));
     Assert.True(item.Equals(new Ds3PartialObject(Range.ByLength(1, 10), "foo")));
     Assert.False(item.Equals(new Ds3PartialObject(Range.ByLength(1, 10), "bar")));
     Assert.False(item.Equals(new Ds3PartialObject(Range.ByLength(0, 10), "foo")));
     Assert.False(item.Equals(new Ds3PartialObject(Range.ByLength(0, 10), "bar")));
     Assert.False(item.Equals(null));
     Assert.False(item.Equals(new {Name = "foo", Range = Range.ByLength(1, 10)}));
 }
Exemplo n.º 4
0
        public void EqualsWorks()
        {
            var item = new Ds3PartialObject(Range.ByLength(1, 10), "foo");

            Assert.True(item.Equals(item));
            Assert.True(item.Equals(new Ds3PartialObject(Range.ByLength(1, 10), "foo")));
            Assert.False(item.Equals(new Ds3PartialObject(Range.ByLength(1, 10), "bar")));
            Assert.False(item.Equals(new Ds3PartialObject(Range.ByLength(0, 10), "foo")));
            Assert.False(item.Equals(new Ds3PartialObject(Range.ByLength(0, 10), "bar")));
            Assert.False(item.Equals(null));
            Assert.False(item.Equals(new { Name = "foo", Range = Range.ByLength(1, 10) }));
        }
 public void ObjectToPartTranslateWorks()
 {
     var po1 = new Ds3PartialObject(Range.ByLength(100L, 200L), "foobar");
     var po2 = new Ds3PartialObject(Range.ByLength(300L, 100L), "foobar");
     var po3 = new Ds3PartialObject(Range.ByLength(10000L, 123L), "foobar");
     var translator = new ObjectToPartRangeTranslator(new[] {po1, po2, po3});
     var result = translator.Translate(ContextRange.Create(Range.ByLength(110L, 250L), "foobar")).ToList();
     CollectionAssert.AreEqual(
         new[]
         {
             ContextRange.Create(Range.ByLength(10L, 190L), po1),
             ContextRange.Create(Range.ByLength(0L, 60L), po2),
         },
         result
     );
 }
Exemplo n.º 6
0
        public void ObjectToPartTranslateWorks()
        {
            var po1        = new Ds3PartialObject(Range.ByLength(100L, 200L), "foobar");
            var po2        = new Ds3PartialObject(Range.ByLength(300L, 100L), "foobar");
            var po3        = new Ds3PartialObject(Range.ByLength(10000L, 123L), "foobar");
            var translator = new ObjectToPartRangeTranslator(new[] { po1, po2, po3 });
            var result     = translator.Translate(ContextRange.Create(Range.ByLength(110L, 250L), "foobar")).ToList();

            CollectionAssert.AreEqual(
                new[]
            {
                ContextRange.Create(Range.ByLength(10L, 190L), po1),
                ContextRange.Create(Range.ByLength(0L, 60L), po2),
            },
                result
                );
        }
        public void PartialReadTransfer()
        {
            var partialObjects = new[]
            {
                new Ds3PartialObject(Range.ByLength(0L, 4L), "foo"),
                new Ds3PartialObject(Range.ByLength(6L, 10L), "foo"),
                new Ds3PartialObject(Range.ByLength(18L, 1L), "foo"),
                new Ds3PartialObject(Range.ByLength(10L, 26L), "bar"),
            };
            var fullObjects = new[] { "hello" };

            var initialJobResponse = Stubs.BuildJobResponse(
                Stubs.Chunk1(null, false, false),
                Stubs.Chunk2(null, false, false),
                Stubs.Chunk3(null, false, false)
            );
            var availableJobResponse = Stubs.BuildJobResponse(
                Stubs.Chunk1(Stubs.NodeId2, true, true),
                Stubs.Chunk2(Stubs.NodeId2, true, true),
                Stubs.Chunk3(Stubs.NodeId1, true, true)
            );

            var node1Client = new Mock<IDs3Client>(MockBehavior.Strict);
            MockHelpers.SetupGetObject(node1Client, "hello", 0L, "ABCDefGHIJ", Range.ByLength(0L, 10L));
            MockHelpers.SetupGetObject(node1Client, "bar", 35L, "z", Range.ByLength(35L, 1L));

            var node2Client = new Mock<IDs3Client>(MockBehavior.Strict);
            MockHelpers.SetupGetObject(node2Client, "bar", 0L, "abcde", Range.ByLength(10L, 5L));
            MockHelpers.SetupGetObject(node2Client, "foo", 10L, "klmnop!", Range.ByLength(10L, 6L), Range.ByLength(18L, 1L));
            MockHelpers.SetupGetObject(node2Client, "foo", 0L, "abcdghij", Range.ByLength(0L, 4L), Range.ByLength(6L, 4L));
            MockHelpers.SetupGetObject(node2Client, "bar", 15L, "fghijklmnopqrstuvwxy", Range.ByLength(15L, 20L));

            var clientFactory = new Mock<IDs3ClientFactory>(MockBehavior.Strict);
            clientFactory
                .Setup(cf => cf.GetClientForNodeId(Stubs.NodeId1))
                .Returns(node1Client.Object);
            clientFactory
                .Setup(cf => cf.GetClientForNodeId(Stubs.NodeId2))
                .Returns(node2Client.Object);

            var client = new Mock<IDs3Client>(MockBehavior.Strict);
            client
                .Setup(c => c.BuildFactory(Stubs.Nodes))
                .Returns(clientFactory.Object);
            client
                .Setup(c => c.GetBulkJobSpectraS3(MockHelpers.ItIsBulkGetRequest(
                    Stubs.BucketName,
                    null,
                    fullObjects,
                    partialObjects
                )))
                .Returns(new GetBulkJobSpectraS3Response(initialJobResponse));
            client
                .Setup(c => c.GetJobChunksReadyForClientProcessingSpectraS3(MockHelpers.ItIsGetAvailableJobChunksRequest(Stubs.JobId)))
                .Returns(GetJobChunksReadyForClientProcessingSpectraS3Response.Success(TimeSpan.FromMinutes(1), availableJobResponse));

            var job = new Ds3ClientHelpers(client.Object)
                .StartPartialReadJob(Stubs.BucketName, fullObjects, partialObjects);
            CollectionAssert.AreEquivalent(
                partialObjects.Concat(new[] { new Ds3PartialObject(Range.ByLength(0L, 10L), "hello") }),
                job.AllItems
            );

            var dataTransfers = new ConcurrentQueue<long>();
            var itemsCompleted = new ConcurrentQueue<Ds3PartialObject>();
            job.DataTransferred += dataTransfers.Enqueue;
            job.ItemCompleted += itemsCompleted.Enqueue;

            var streams = new ConcurrentDictionary<Ds3PartialObject, MockStream>();
            job.Transfer(key => streams.GetOrAdd(key, k => new MockStream()));

            node1Client.VerifyAll();
            node2Client.VerifyAll();
            clientFactory.VerifyAll();
            client.VerifyAll();

            var fullObjectPart = new Ds3PartialObject(Range.ByLength(0L, 10L), fullObjects[0]);
            CollectionAssert.AreEqual(
                new[]
                {
                    new { Key = partialObjects[0], Value = "abcd" },
                    new { Key = partialObjects[1], Value = "ghijklmnop" },
                    new { Key = partialObjects[2], Value = "!" },
                    new { Key = partialObjects[3], Value = "abcdefghijklmnopqrstuvwxyz" },
                    new { Key = fullObjectPart, Value = "ABCDefGHIJ" },
                }.OrderBy(it => it.Key).ToArray(),
                (
                    from item in streams
                    orderby item.Key
                    select new { item.Key, Value = MockHelpers.Encoding.GetString(item.Value.Result) }
                ).ToArray()
            );
            CollectionAssert.AreEquivalent(
                new[] { 1L, 1L, 4L, 4L, 5L, 6L, 10L, 20L },
                dataTransfers.Sorted().ToArray()
            );
            CollectionAssert.AreEquivalent(partialObjects.Concat(new[] { fullObjectPart }), itemsCompleted);
        }
Exemplo n.º 8
0
        public void PartialReadTransfer()
        {
            var partialObjects = new[]
            {
                new Ds3PartialObject(Range.ByLength(0L, 4L), "foo"),
                new Ds3PartialObject(Range.ByLength(6L, 10L), "foo"),
                new Ds3PartialObject(Range.ByLength(18L, 1L), "foo"),
                new Ds3PartialObject(Range.ByLength(10L, 26L), "bar"),
            };
            var fullObjects = new[] { "hello" };

            var initialJobResponse = Stubs.BuildJobResponse(
                Stubs.Chunk1(null, false, false),
                Stubs.Chunk2(null, false, false),
                Stubs.Chunk3(null, false, false)
                );
            var availableJobResponse = Stubs.BuildJobResponse(
                Stubs.Chunk1(Stubs.NodeId2, true, true),
                Stubs.Chunk2(Stubs.NodeId2, true, true),
                Stubs.Chunk3(Stubs.NodeId1, true, true)
                );

            var node1Client = new Mock <IDs3Client>(MockBehavior.Strict);

            SetupGetObject(node1Client, "hello", 0L, "ABCDefGHIJ", Range.ByLength(0L, 10L));
            SetupGetObject(node1Client, "bar", 35L, "z", Range.ByLength(35L, 1L));

            var node2Client = new Mock <IDs3Client>(MockBehavior.Strict);

            SetupGetObject(node2Client, "bar", 0L, "abcde", Range.ByLength(10L, 5L));
            SetupGetObject(node2Client, "foo", 10L, "klmnop!", Range.ByLength(10L, 6L), Range.ByLength(18L, 1L));
            SetupGetObject(node2Client, "foo", 0L, "abcdghij", Range.ByLength(0L, 4L), Range.ByLength(6L, 4L));
            SetupGetObject(node2Client, "bar", 15L, "fghijklmnopqrstuvwxy", Range.ByLength(15L, 20L));

            var clientFactory = new Mock <IDs3ClientFactory>(MockBehavior.Strict);

            clientFactory
            .Setup(cf => cf.GetClientForNodeId(Stubs.NodeId1))
            .Returns(node1Client.Object);
            clientFactory
            .Setup(cf => cf.GetClientForNodeId(Stubs.NodeId2))
            .Returns(node2Client.Object);

            var client = new Mock <IDs3Client>(MockBehavior.Strict);

            client
            .Setup(c => c.BuildFactory(Stubs.Nodes))
            .Returns(clientFactory.Object);
            client
            .Setup(c => c.BulkGet(ItIsBulkGetRequest(
                                      Stubs.BucketName,
                                      ChunkOrdering.None,
                                      fullObjects,
                                      partialObjects
                                      )))
            .Returns(initialJobResponse);
            client
            .Setup(c => c.GetAvailableJobChunks(ItIsGetAvailableJobChunksRequest(Stubs.JobId)))
            .Returns(GetAvailableJobChunksResponse.Success(TimeSpan.FromMinutes(1), availableJobResponse));

            var job = new Ds3ClientHelpers(client.Object)
                      .StartPartialReadJob(Stubs.BucketName, fullObjects, partialObjects);

            CollectionAssert.AreEquivalent(
                partialObjects.Concat(new[] { new Ds3PartialObject(Range.ByLength(0L, 10L), "hello") }),
                job.AllItems
                );

            var dataTransfers  = new ConcurrentQueue <long>();
            var itemsCompleted = new ConcurrentQueue <Ds3PartialObject>();

            job.DataTransferred += dataTransfers.Enqueue;
            job.ItemCompleted   += itemsCompleted.Enqueue;

            var streams = new ConcurrentDictionary <Ds3PartialObject, MockStream>();

            job.Transfer(key => streams.GetOrAdd(key, k => new MockStream()));

            node1Client.VerifyAll();
            node2Client.VerifyAll();
            clientFactory.VerifyAll();
            client.VerifyAll();

            var fullObjectPart = new Ds3PartialObject(Range.ByLength(0L, 10L), fullObjects[0]);

            CollectionAssert.AreEqual(
                new[]
            {
                new { Key = partialObjects[0], Value = "abcd" },
                new { Key = partialObjects[1], Value = "ghijklmnop" },
                new { Key = partialObjects[2], Value = "!" },
                new { Key = partialObjects[3], Value = "abcdefghijklmnopqrstuvwxyz" },
                new { Key = fullObjectPart, Value = "ABCDefGHIJ" },
            }.OrderBy(it => it.Key).ToArray(),
                (
                    from item in streams
                    orderby item.Key
                    select new { item.Key, Value = _encoding.GetString(item.Value.Result) }
                ).ToArray()
                );
            CollectionAssert.AreEquivalent(
                new[] { 1L, 1L, 4L, 4L, 5L, 6L, 10L, 20L },
                dataTransfers.Sorted().ToArray()
                );
            CollectionAssert.AreEquivalent(partialObjects.Concat(new[] { fullObjectPart }), itemsCompleted);
        }
 public void CompareToWorks(int result, Ds3PartialObject other)
 {
     var item = new Ds3PartialObject(Range.ByLength(1, 10), "foo");
     Assert.AreEqual(result, item.CompareTo((object) other));
     Assert.AreEqual(result, item.CompareTo(other));
 }
 public void CompareToWithInvalidTypesThrowsException()
 {
     var item = new Ds3PartialObject(Range.ByLength(1, 10), "foo");
     Assert.Throws<ArgumentException>(() => item.CompareTo(new {Name = "foo", Range = Range.ByLength(1, 10)}));
     Assert.Throws<ArgumentNullException>(() => item.CompareTo(null));
 }