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)); }
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)})); }
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 ); }
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); }
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)); }