public void InitializeCheckJob_Should_CreatePingCheckJobWithNoTriggers() { // Arrange var config = new JobConfiguration { Type = "Ping" }; var job = new HealthCheckJob { JobConfiguration = config }; var mock = new Mock <IComponentFactory>(); _ = mock.Setup(f => f.GetPlugin("Ping")).Returns(new Mock <IHealthCheckPlugin>().Object); _ = mock.Setup(f => f.GetTrigger(It.IsAny <XElement>())).Returns(new Mock <ITrigger>().Object); var manager = new PluginManager(mock.Object); var group = new HealthCheckGroup { Name = "PROD" }; // Act _ = manager.InitializeCheckJob(job, group); // Assert Assert.Empty(job.Triggers); }
public void Stop_Should_StopExecutingJobs() { // Arrange var counter = 0; var factory = new Mock <IComponentFactory>(); var manager = new PluginManager(factory.Object); var reader = new Mock <IHealthCheckConfigurationReader>(); var plugin = new Mock <IHealthCheckPlugin>(); var group = new HealthCheckGroup() { Name = "UnitTest" }; var job = new HealthCheckJob(); job.Plugin = plugin.Object; job.JobConfiguration = new JobConfiguration(); job.JobConfiguration.Triggers = new List <XElement>(); job.JobConfiguration.Triggers.Add(new XElement("Trigger")); group.Checks.Add(job); var groups = new List <HealthCheckGroup>(); groups.Add(group); reader.Setup(m => m.ReadAll()).Returns(groups); plugin.Setup(p => p.Execute()) .Callback(() => { counter++; }) .Returns(new HealthStatus()); factory.Setup(f => f.GetPlugin(It.IsAny <string>())).Returns(plugin.Object); factory.Setup(m => m.GetTrigger(It.IsAny <XElement>())) .Returns(new CronTriggerImpl("StopTest", "g1", "* * * ? * * *")); var service = new HealthService(reader.Object, manager); // Act service.Start(); Thread.Sleep(3000); var countAtStop = counter; service.Stop(); Thread.Sleep(3000); // Assert Assert.Equal(countAtStop, counter); }
public void InitializeCheckJob_Should_CreatePingCheckJobWithTriggerAndListenerAndSettings() { // Arrange var config = new JobConfiguration { Type = "Ping" }; var xml = new XElement("Listener"); xml.SetAttributeValue("Type", "LogFile"); xml.SetAttributeValue("Threshold", "Warning"); config.Listeners.Add(xml); xml = new XElement("Trigger"); xml.SetAttributeValue("Type", "simple"); xml.SetAttributeValue("Repeat", "10"); config.Triggers.Add(xml); config.Settings = new XElement("Settings", new XElement("HostName")); var job = new HealthCheckJob { JobConfiguration = config }; var mock = new Mock <IComponentFactory>(); _ = mock.Setup(f => f.GetPlugin("Ping")).Returns(new Mock <IHealthCheckPlugin>().Object); _ = mock.Setup(f => f.GetListener(It.IsAny <string>())).Returns(new Mock <IStatusListener>().Object); _ = mock.Setup(f => f.GetTrigger(It.IsAny <XElement>())).Returns(new Mock <ITrigger>().Object); var manager = new PluginManager(mock.Object); var group = new HealthCheckGroup { Name = "PROD" }; // Act _ = manager.InitializeCheckJob(job, group); // Assert Assert.True(job.Triggers.Any() && job.Listeners.Any()); }
/// <summary> /// Gets a grouped list of health checks, but doesn't actively check the status of each health check. /// </summary> /// <returns>Returns a collection of anonymous objects representing each group.</returns> public object GetAllHealthChecks() { IOrderedEnumerable <IGrouping <string?, HealthCheck> > groups = _checks .Where(x => _disabledCheckIds.Contains(x.Id) == false) .GroupBy(x => x.Group) .OrderBy(x => x.Key); var healthCheckGroups = new List <HealthCheckGroup>(); foreach (IGrouping <string?, HealthCheck> healthCheckGroup in groups) { var hcGroup = new HealthCheckGroup { Name = healthCheckGroup.Key, Checks = healthCheckGroup .OrderBy(x => x.Name) .ToList() }; healthCheckGroups.Add(hcGroup); } return(healthCheckGroups); }
public void InitializeCheckJob_Should_CreatePingCheckJobWithTrigger() { // Arrange var config = new JobConfiguration { Type = "Ping" }; var xml = new XElement("Trigger"); xml.SetAttributeValue("Type", "simple"); xml.SetAttributeValue("Repeat", "10"); config.Triggers.Add(xml); var job = new HealthCheckJob { JobConfiguration = config }; var mock = new Mock <IComponentFactory>(); _ = mock.Setup(f => f.GetPlugin("Ping")).Returns(new Mock <IHealthCheckPlugin>().Object); _ = mock.Setup(f => f.GetTrigger(It.IsAny <XElement>())).Returns(new Mock <ITrigger>().Object); var manager = new PluginManager(mock.Object); var group = new HealthCheckGroup { Name = "PROD" }; // Act _ = manager.InitializeCheckJob(job, group); // Assert _ = Assert.Single(job.Triggers); }