public void GetEnumerator_ChangeWhileEnumerating_GetsOriginalList()
        {
            // Arrange

            var node1 = CreateMockNode(CreateEndpoint(1)).Object;
            var node2 = CreateMockNode(CreateEndpoint(2)).Object;

            var nodes = new ClusterNodeCollection
            {
                node1,
                node2
            };

            Assert.Equal(2, nodes.Count);

            // Act

            using var enumerator = nodes.GetEnumerator();
            Assert.True(enumerator.MoveNext());

            Assert.True(nodes.Remove(CreateEndpoint(1), out _));

            // Assert

            Assert.True(enumerator.MoveNext());
            Assert.False(enumerator.MoveNext());
        }
        public void Clear_ReturnsRemovedNodes()
        {
            // Arrange

            var node1 = CreateMockNode(CreateEndpoint(1)).Object;
            var node2 = CreateMockNode(CreateEndpoint(2)).Object;

            var nodes = new ClusterNodeCollection
            {
                node1,
                node2
            };

            Assert.Equal(2, nodes.Count);

            // Act

            var result = nodes.Clear();

            // Assert

            Assert.Equal(2, result.Count);
            Assert.Contains(node1, result);
            Assert.Contains(node2, result);
        }
        public void RemoveKeyEndPoint_RemovesFromLookup()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1), CreateEndpoint(2));

            var nodes = new ClusterNodeCollection
            {
                node.Object
            };

            var args = new NotifyCollectionChangedEventArgs(
                NotifyCollectionChangedAction.Remove,
                new List <IPEndPoint> {
                CreateEndpoint(2)
            },
                1);

            // Act

            node.Raise(m => m.KeyEndPointsChanged += null, args);

            // Assert

            Assert.False(nodes.TryGet(CreateEndpoint(2), out _));
        }
        public void Remove_NotInCollection_ReturnsFalse()
        {
            // Arrange

            var nodes = new ClusterNodeCollection();

            // Act

            var result = nodes.Remove(CreateEndpoint(1), out _);

            // Assert

            Assert.False(result);
        }
Пример #5
0
        public void Start()
        {
            if (textes.Count < 3)
            {
                return;
            }

            ClusteringTreeModel   clusteringModel = new ClusteringTreeModel(dataSets, parsedRegions, textes, files);
            ClusterNodeCollection clusters        = clusteringModel.ExecuteClustering(ActiveStratege, 1);

            Items = new List <Node> {
                BuildRootNode(clusters.FirstOrDefault())
            };
        }
        public async Task Should_Continue_After_Failures()
        {
            var clusterOptions = new ClusterOptions()
                                 .WithConnectionString($"couchbases://NOSUCHHOST{nameof(Should_Continue_After_Failures)}")
                                 .WithCredentials("UnitTestUser", "PasswordDoesn'tMatter");

            var messageHandler    = new ThrowsEveryTimeMessageHandler();
            var httpClientFactory = new MockHttpClientFactory(() => new HttpClient(messageHandler, false));
            var configHandler     = new Mock <IConfigHandler>(MockBehavior.Loose).Object;
            var mockLogger        = new Mock <ILogger <HttpStreamingConfigListener> >(MockBehavior.Loose).Object;
            var mockBucket        = new Mock <BucketBase>();

            var clusterNodeCollection = new ClusterNodeCollection();
            var clusterNode           = new Mock <IClusterNode>();

            clusterNode.Setup(x => x.KeyEndPoints).Returns(new ReadOnlyObservableCollection <HostEndpointWithPort>(new ObservableCollection <HostEndpointWithPort>()));
            clusterNode.Setup(x => x.ManagementUri).Returns(new Uri($"http://NOSUCHHOST{nameof(Should_Continue_After_Failures)}:8091"));
            clusterNode.Setup(x => x.EndPoint).Returns(new HostEndpointWithPort($"NOSUCHHOST{nameof(Should_Continue_After_Failures)}", 11210));
            clusterNodeCollection.Add(clusterNode.Object);
            mockBucket.Object.Nodes.Add(clusterNode.Object);

            using var configListener = new HttpStreamingConfigListener(mockBucket.Object,
                                                                       clusterOptions, httpClientFactory, configHandler, mockLogger);
            configListener.StartListening();
            var exitedSpinBeforeTimeout = SpinWait.SpinUntil(() => messageHandler.CallCount > 0, TimeSpan.FromSeconds(10));

            if (!exitedSpinBeforeTimeout)
            {
                throw new TimeoutException($"{nameof(HttpStreamingConfigListener)} didn't start in time.");
            }

            await Task.Delay(500);

            Assert.NotInRange(messageHandler.CallCount, 0, 2);
            configListener.Dispose();

            // give it a little time to finish up.
            await Task.Delay(500);

            var callCountAfterDispose = messageHandler.CallCount;

            // a little more time to generate more calls if it was still running.
            await Task.Delay(500);

            Assert.Equal(callCountAfterDispose, messageHandler.CallCount);

            await configListener.DisposeAsync();
        }
        public void Add_NotInCollection_RegistersForEvents()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1));

            var nodes = new ClusterNodeCollection();

            // Act

            nodes.Add(node.Object);

            // Assert

            node.VerifyAdd(m => m.KeyEndPointsChanged += It.IsAny <NotifyCollectionChangedEventHandler>(), Times.Once);
        }
        public void Add_NotInCollection_ReturnsTrue()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1)).Object;

            var nodes = new ClusterNodeCollection();

            // Act

            var result = nodes.Add(node);

            // Assert

            Assert.True(result);
        }
        public void Remove_InCollection_UnregistersForEvents()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1));

            var nodes = new ClusterNodeCollection
            {
                node.Object
            };

            // Act

            nodes.Remove(CreateEndpoint(1), out _);

            // Assert

            node.VerifyRemove(m => m.KeyEndPointsChanged -= It.IsAny <NotifyCollectionChangedEventHandler>(), Times.AtLeastOnce);
        }
        public void Add_NotInCollection_RegistersAllEndpoints()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1), CreateEndpoint(2)).Object;

            var nodes = new ClusterNodeCollection();

            // Act

            nodes.Add(node);

            // Assert

            Assert.True(nodes.TryGet(CreateEndpoint(1), out var resultNode));
            Assert.Equal(node, resultNode);

            Assert.True(nodes.TryGet(CreateEndpoint(2), out resultNode));
            Assert.Equal(node, resultNode);
        }
        public void Add_InCollection_ReturnsFalse()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1)).Object;

            var nodes = new ClusterNodeCollection
            {
                node
            };

            // Act

            var result = nodes.Add(node);

            // Assert

            Assert.False(result);
            Assert.Equal(1, nodes.Count);
        }
        public void Remove_InCollection_UnregistersAllEndpoints()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1), CreateEndpoint(2)).Object;

            var nodes = new ClusterNodeCollection()
            {
                node
            };

            // Act

            nodes.Remove(CreateEndpoint(1), out _);

            // Assert

            Assert.False(nodes.TryGet(CreateEndpoint(1), out _));
            Assert.False(nodes.TryGet(CreateEndpoint(2), out _));
        }
        public void Remove_InCollection_ReturnsTrue()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1)).Object;

            var nodes = new ClusterNodeCollection
            {
                node
            };

            // Act

            var result = nodes.Remove(CreateEndpoint(1), out var removedNode);

            // Assert

            Assert.True(result);
            Assert.Equal(node, removedNode);
        }
        public void Remove_InCollection_ReducesCount()
        {
            // Arrange

            var node = CreateMockNode(CreateEndpoint(1)).Object;

            var nodes = new ClusterNodeCollection
            {
                node
            };

            Assert.Equal(1, nodes.Count);

            // Act

            var result = nodes.Remove(CreateEndpoint(1), out _);

            // Assert

            Assert.Equal(0, nodes.Count);
        }
        public void Clear_UnregistersEvents()
        {
            // Arrange

            var node1 = CreateMockNode(CreateEndpoint(1));
            var node2 = CreateMockNode(CreateEndpoint(2));

            var nodes = new ClusterNodeCollection
            {
                node1.Object,
                node2.Object
            };

            Assert.Equal(2, nodes.Count);

            // Act

            nodes.Clear();

            // Assert

            node1.VerifyRemove(m => m.KeyEndPointsChanged -= It.IsAny <NotifyCollectionChangedEventHandler>(), Times.AtLeastOnce);
            node2.VerifyRemove(m => m.KeyEndPointsChanged -= It.IsAny <NotifyCollectionChangedEventHandler>(), Times.AtLeastOnce);
        }
        public void Clear_RemovesFromLookup()
        {
            // Arrange

            var node1 = CreateMockNode(CreateEndpoint(1)).Object;
            var node2 = CreateMockNode(CreateEndpoint(2)).Object;

            var nodes = new ClusterNodeCollection
            {
                node1,
                node2
            };

            Assert.Equal(2, nodes.Count);

            // Act

            nodes.Clear();

            // Assert

            Assert.False(nodes.TryGet(CreateEndpoint(1), out _));
            Assert.False(nodes.TryGet(CreateEndpoint(2), out _));
        }