public void TryUnregister_should_remove_endpoint_and_dispose_it()
        {
            SetupMonitors("monitor");
            var id       = _registry.RegisterOrUpdate("monitor", "address", "group", "name", new[] { "t1", "t2" }, null, "password");
            var endpoint = _registry.GetById(id);

            Assert.True(_registry.TryUnregisterById(id), "Endpoint should be unregistered");
            Assert.True(endpoint.IsDisposed, "Endpoint should be disposed");
            Assert.Null(_registry.GetById(id));

            _configurationStore.Verify(s => s.DeleteEndpoint(id));
        }
        public void TryUnregister_should_remove_endpoint_and_dispose_it()
        {
            MockMonitor("monitor");
            var id       = _registry.RegisterOrUpdate("monitor", "address", "group", "name");
            var endpoint = _registry.GetById(id);

            Assert.True(_registry.TryUnregisterById(id), "Endpoint should be unregistered");
            Assert.True(endpoint.IsDisposed, "Endpoint should be disposed");
            Assert.Null(_registry.GetById(id));

            _configurationStore.Verify(s => s.DeleteEndpoint(id));
            _statsRepository.Verify(s => s.DeleteStatistics(id));
        }
Example #3
0
        public void Monitor_should_start_checking_the_health_of_endpoints_until_disposed()
        {
            var endpoint1 = _endpointRegistry.RegisterOrUpdate(_testableHealthMonitor.Name, "address1", "group", "name");

            _endpointRegistry.RegisterOrUpdate(_testableHealthMonitor.Name, "address2", "group", "name");
            _testableHealthMonitor.StartWatch();

            var delay = TimeSpan.FromMilliseconds(400);

            var statsManager = new Mock <IEndpointStatsManager>();
            var settings     = MonitorSettingsHelper.ConfigureSettings(TimeSpan.FromMilliseconds(50));

            using (new EndpointMonitor(_endpointRegistry, new HealthSampler(settings, statsManager.Object), settings))
            {
                WaitForAnyCall();

                _endpointRegistry.RegisterOrUpdate(_testableHealthMonitor.Name, "address3", "group", "name");
                Thread.Sleep(delay);
                _endpointRegistry.TryUnregisterById(endpoint1);
                Thread.Sleep(delay);
            }
            var afterStop = _testableHealthMonitor.Calls.Count();

            Thread.Sleep(delay);
            var afterDelay = _testableHealthMonitor.Calls.Count();

            Assert.Equal(afterStop, afterDelay);

            var a1 = _testableHealthMonitor.Calls.Where(c => c.Item1 == "address1").ToArray();
            var a2 = _testableHealthMonitor.Calls.Where(c => c.Item1 == "address2").ToArray();
            var a3 = _testableHealthMonitor.Calls.Where(c => c.Item1 == "address3").ToArray();

            Assert.True(a1.Length > 1, string.Format("Expected more than 1 check of address1, got: {0}", a1.Length));
            Assert.True(a1.Length < a2.Length, string.Format("Expected less checks of address1 than address 2, got: address1={0}, address2={1}", a1.Length, a2.Length));
            Assert.True(a3.Length > 1, string.Format("Expected more than 1 check of address3, got: {0}", a3.Length));
        }