public void AddRemoveAndReplace_FromQueue_ShouldAddRemoveAndReplace_InFIFO() { // Arrange var queue = new HashedQueue(); // Act and Assert queue.Add(1, "One"); queue.Add(2, "Two"); queue.Add(3, "Three"); queue.Add(4, "Four"); queue.Add(5, "Five"); queue.Add(6, "Six"); queue.Add(7, "Seven"); var(id, value) = queue.Remove(); id.Should().Be(1); value.Should().Be("One"); (id, value) = queue.Remove(); id.Should().Be(2); value.Should().Be("Two"); queue.Replace(4, "IV"); (id, value) = queue.Remove(); id.Should().Be(3); value.Should().Be("Three"); (id, value) = queue.Remove(); id.Should().Be(4); value.Should().Be("IV"); }
public RouteDiscovery(IAutoDiscoverySender autoDiscoverySender, IScaleOutConfigurationProvider scaleOutConfigurationProvider, ClusterMembershipConfiguration clusterMembershipConfiguration, ISecurityProvider securityProvider, ILogger logger) { this.securityProvider = securityProvider; discoveryConfiguration = clusterMembershipConfiguration.RouteDiscovery; this.autoDiscoverySender = autoDiscoverySender; this.scaleOutConfigurationProvider = scaleOutConfigurationProvider; this.logger = logger; requests = new HashedQueue <MessageRoute>(discoveryConfiguration.MaxMissingRouteDiscoveryRequestQueueLength); }
public void TryEnqueue_DoesntInsertDuplicatedItems() { var queue = new HashedQueue <MessageIdentifier>(); var messageIdentifier = CreateMessageIdentifier(); Assert.IsTrue(queue.TryEnqueue(messageIdentifier)); Assert.IsFalse(queue.TryEnqueue(messageIdentifier)); IList <MessageIdentifier> messageIdentifiers; queue.TryPeek(out messageIdentifiers, 10); Assert.AreEqual(1, messageIdentifiers.Count); }
public void TryDelete_DoesntFailIfDeletingMoreItemsThanExist() { var queue = new HashedQueue <MessageIdentifier>(); var itemsCount = 6; var messageIdentifiers = Enumerable.Range(0, itemsCount) .Select(_ => CreateMessageIdentifier()) .ToList(); for (var i = 0; i < messageIdentifiers.Count - 2; i++) { queue.TryEnqueue(CreateMessageIdentifier()); } queue.TryDelete(messageIdentifiers); }
public void TryEnqueue_AddsItemsAtEnd() { var queue = new HashedQueue <MessageIdentifier>(); var ms1 = CreateMessageIdentifier(); var ms2 = CreateMessageIdentifier(); queue.TryEnqueue(ms1); queue.TryEnqueue(ms2); IList <MessageIdentifier> messageIdentifiers; queue.TryPeek(out messageIdentifiers, 2); Assert.AreEqual(ms1, messageIdentifiers.First()); Assert.AreEqual(ms2, messageIdentifiers.Second()); }
public void TryDelete_DeletesOnlySpecificItems() { var queue = new HashedQueue <MessageIdentifier>(); var ms1 = CreateMessageIdentifier(); var ms2 = CreateMessageIdentifier(); queue.TryEnqueue(ms1); queue.TryEnqueue(ms2); queue.TryDelete(new[] { ms2 }); IList <MessageIdentifier> messageIdentifiers; Assert.IsTrue(queue.TryPeek(out messageIdentifiers, 2)); Assert.AreEqual(ms1, messageIdentifiers.First()); queue.TryDelete(new[] { ms1 }); Assert.IsFalse(queue.TryPeek(out messageIdentifiers, 2)); }
public void TryEnqueue_DoesntInsertItemsMoreThanMaxQueueLengthSize() { var maxQueueLength = 2; var queue = new HashedQueue <MessageIdentifier>(maxQueueLength); for (var i = 0; i < maxQueueLength + 2; i++) { if (i < maxQueueLength) { Assert.IsTrue(queue.TryEnqueue(CreateMessageIdentifier())); } else { Assert.IsFalse(queue.TryEnqueue(CreateMessageIdentifier())); } } IList <MessageIdentifier> messageIdentifiers; queue.TryPeek(out messageIdentifiers, maxQueueLength + 2); Assert.AreEqual(maxQueueLength, messageIdentifiers.Count); }