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");
        }
Example #2
0
 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);
 }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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());
        }
Example #6
0
        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));
        }
Example #7
0
        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);
        }