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)); }
public void RegisterOrUpdate_should_register_new_endpoint_and_emit_NewEndpointAdded_event() { MockMonitor("monitor"); Endpoint endpoint = null; _registry.NewEndpointAdded += e => { endpoint = e; }; var id = _registry.RegisterOrUpdate("monitor", "address", "group", "name"); Assert.NotNull(endpoint); Assert.Equal("monitor", endpoint.MonitorType); Assert.Equal("address", endpoint.Address); Assert.Equal("name", endpoint.Name); Assert.Equal("group", endpoint.Group); Assert.Equal(id, endpoint.Id); }
public void RegisterOrUpdate_should_register_new_endpoint_which_should_be_retrievable_later_by_GetById() { SetupMonitors("monitor"); var expectedLastModifiedTime = DateTime.UtcNow; _timeCoordinator.Setup(c => c.UtcNow).Returns(expectedLastModifiedTime); var endpointId = _registry.RegisterOrUpdate("monitor", "address", "group", "name", new[] { "t1" }, null, "password"); Assert.NotEqual(Guid.Empty, endpointId); var endpoint = _registry.GetById(endpointId); Assert.NotNull(endpoint); Assert.Equal("monitor", endpoint.Identity.MonitorType); Assert.Equal("address", endpoint.Identity.Address); Assert.Equal("password".ToSha256Hash(), endpoint.Password); Assert.Equal("name", endpoint.Metadata.Name); Assert.Equal("group", endpoint.Metadata.Group); Assert.Equal(endpointId, endpoint.Identity.Id); Assert.Equal("t1", endpoint.Metadata.Tags[0]); Assert.Equal(expectedLastModifiedTime, endpoint.LastModifiedTimeUtc); }
public void RegisterOrUpdate_should_register_new_endpoint_which_should_be_retrievable_later_by_GetById() { SetupMonitors("monitor"); var id = _registry.RegisterOrUpdate("monitor", "address", "group", "name", new[] { "t1" }); Assert.NotEqual(Guid.Empty, id); var endpoint = _registry.GetById(id); Assert.NotNull(endpoint); Assert.Equal("monitor", endpoint.Identity.MonitorType); Assert.Equal("address", endpoint.Identity.Address); Assert.Equal("name", endpoint.Metadata.Name); Assert.Equal("group", endpoint.Metadata.Group); Assert.Equal(id, endpoint.Identity.Id); Assert.Equal("t1", endpoint.Metadata.Tags[0]); Assert.True(endpoint.LastModifiedTime > DateTime.UtcNow.AddSeconds(-1), "LastModifiedTime should be updated"); }