public async Task PopulateResourceNames_NonExistantResourceSpecified_Ingnored()
        {
            // arrange
            var resourceSourceStub = new Mock <IResourceSource <ExampleServiceModel> >();

            resourceSourceStub
            .Setup(x => x.GetResourceNamesAsync())
            .ReturnsAsync(new List <string>
            {
                "ItemY"
            });

            var sut = new ResourceNamePopulator <ExampleServiceModel, ResourceConfig>(new ConsoleAlarmLogger(false), resourceSourceStub.Object);

            var group = new ServiceAlertingGroup <ResourceConfig>
            {
                GroupParameters = new AlertingGroupParameters("name", "suffix"),
                Service         = new AwsServiceAlarms <ResourceConfig>
                {
                    Resources = new List <ResourceThresholds <ResourceConfig> >
                    {
                        new ResourceThresholds <ResourceConfig> {
                            Name = "DoesNotExist"
                        }
                    }
                }
            };

            // act
            await sut.PopulateResourceNames(group);

            // assert
            Assert.That(group.Service.Resources.Count, Is.EqualTo(0));
        }
        public async Task PopulateResourceNames_ExclusionPrefixSpecified_ExcludesResources()
        {
            // arrange
            var resourceSourceStub = new Mock <IResourceSource <ExampleServiceModel> >();

            resourceSourceStub
            .Setup(x => x.GetResourceNamesAsync())
            .ReturnsAsync(new List <string>
            {
                "ItemY",
                "Something"
            });

            var sut = new ResourceNamePopulator <ExampleServiceModel, ResourceConfig> (new ConsoleAlarmLogger(false), resourceSourceStub.Object);

            var group = new ServiceAlertingGroup <ResourceConfig>
            {
                GroupParameters = new AlertingGroupParameters("name", "suffix"),
                Service         = new AwsServiceAlarms <ResourceConfig>
                {
                    Resources = new List <ResourceThresholds <ResourceConfig> >
                    {
                        new ResourceThresholds <ResourceConfig> {
                            Name = "ItemY"
                        },
                        new ResourceThresholds <ResourceConfig> {
                            Pattern = "Item"
                        },
                        new ResourceThresholds <ResourceConfig> {
                            Name = "Something"
                        }
                    },
                    ExcludeResourcesPrefixedWith = new List <string> {
                        "Item"
                    }
                }
            };

            // act
            await sut.PopulateResourceNames(group);

            // assert
            Assert.That(group.Service.Resources.Count, Is.EqualTo(1));
            Assert.That(group.Service.Resources.First().Name, Is.EqualTo("Something"));
        }
Esempio n. 3
0
        public async Task PopulateResourceNames_DuplicatesMatched_DoesNotReturnDuplicates()
        {
            // arrange
            var resourceSourceStub = new Mock <IResourceSource <ExampleServiceModel> >();

            resourceSourceStub
            .Setup(x => x.GetResourcesAsync())
            .ReturnsAsync(WrapResourceNames(new List <string>
            {
                "ItemY"
            }));

            var sut = new ResourceNamePopulator <ExampleServiceModel, ResourceConfig>(
                new ConsoleAlarmLogger(false), resourceSourceStub.Object);

            var group = new ServiceAlertingGroup <ResourceConfig>
            {
                GroupParameters = new AlertingGroupParameters("name", "suffix"),
                Service         = new AwsServiceAlarms <ResourceConfig>
                {
                    Resources = new List <ResourceThresholds <ResourceConfig> >
                    {
                        new ResourceThresholds <ResourceConfig> {
                            Name = "ItemY"
                        },
                        new ResourceThresholds <ResourceConfig> {
                            Pattern = "ItemY"
                        },
                        new ResourceThresholds <ResourceConfig> {
                            Pattern = "Item"
                        }
                    }
                }
            };

            // act
            var result = await sut.PopulateResourceNames(group);

            // assert
            Assert.That(result.Service.Resources.Count, Is.EqualTo(1));
        }
Esempio n. 4
0
        public async Task PopulateResourceNames_DuplicatesMatched_DoesNotReturnDuplicates()
        {
            // arrange
            var resourceSourceStub = new Mock <IResourceSource <ExampleServiceModel> >();

            resourceSourceStub
            .Setup(x => x.GetResourceNamesAsync())
            .ReturnsAsync(new List <string>
            {
                "ItemY"
            });

            var sut = new ResourceNamePopulator <ExampleServiceModel>(new ConsoleAlarmLogger(false), resourceSourceStub.Object);

            var group = new ServiceAlertingGroup
            {
                Service = new AwsServiceAlarms
                {
                    Resources = new List <ResourceThresholds>
                    {
                        new ResourceThresholds {
                            Name = "ItemY"
                        },
                        new ResourceThresholds {
                            Pattern = "ItemY"
                        },
                        new ResourceThresholds {
                            Pattern = "Item"
                        }
                    }
                }
            };

            // act
            await sut.PopulateResourceNames(group);

            // assert
            Assert.That(group.Service.Resources.Count, Is.EqualTo(1));
        }
        public async Task PopulateResourceNames_ByPatternAndNamed_ResourcesExpandedWithCorrectEvaluationPeriods()
        {
            // arrange
            var resourceSourceStub = new Mock <IResourceSource <ExampleServiceModel> >();

            resourceSourceStub
            .Setup(x => x.GetResourceNamesAsync())
            .ReturnsAsync(new List <string>
            {
                "ItemX",
                "ItemY",
                "ItemZ"
            });

            var sut = new ResourceNamePopulator <ExampleServiceModel, ResourceConfig>(new ConsoleAlarmLogger(false), resourceSourceStub.Object);

            var namedItem = new ResourceThresholds <ResourceConfig>
            {
                Name   = "ItemX",
                Values = new Dictionary <string, AlarmValues>
                {
                    {
                        "SomeThreshold", new AlarmValues(500, 2)
                    }
                }
            };

            var patternMatchedItem = new ResourceThresholds <ResourceConfig>
            {
                Pattern = "Item",
                Values  = new Dictionary <string, AlarmValues>
                {
                    {
                        "SomeThreshold", new AlarmValues(100, 3)
                    }
                }
            };

            var group = new ServiceAlertingGroup <ResourceConfig>
            {
                GroupParameters = new AlertingGroupParameters("name", "suffix"),
                Service         = new AwsServiceAlarms <ResourceConfig>
                {
                    Resources = new List <ResourceThresholds <ResourceConfig> >
                    {
                        namedItem,
                        patternMatchedItem
                    }
                }
            };

            // act
            await sut.PopulateResourceNames(group);

            // assert
            var resources = group.Service.Resources;

            Assert.That(resources.Count, Is.EqualTo(3));

            var itemXThreshold = resources.First(x => x.Name == "ItemX").Values["SomeThreshold"];
            var itemYThreshold = resources.First(x => x.Name == "ItemY").Values["SomeThreshold"];
            var itemZThreshold = resources.First(x => x.Name == "ItemZ").Values["SomeThreshold"];

            Assert.That(itemXThreshold.EvaluationPeriods, Is.EqualTo(2));
            Assert.That(itemYThreshold.EvaluationPeriods, Is.EqualTo(3));
            Assert.That(itemZThreshold.EvaluationPeriods, Is.EqualTo(3));
        }