spec/lib/flapjack/data/notification_rule_spec.rb in flapjack-1.6.0rc2 vs spec/lib/flapjack/data/notification_rule_spec.rb in flapjack-1.6.0rc3
- old
+ new
@@ -14,11 +14,11 @@
let(:rule_data) {
{:contact_id => '23',
:tags => ["database","physical"],
:regex_tags => [],
- :entities => ["foo-app-01.example.com"],
+ :entities => ["foo-app-01.example.com", "foo-app-10.example.com"],
:regex_entities => [],
:time_restrictions => [ weekdays_8_18 ],
:unknown_media => [],
:warning_media => ["email"],
:critical_media => ["sms", "email"],
@@ -26,16 +26,32 @@
:warning_blackhole => false,
:critical_blackhole => false
}
}
+ let(:empty_rule_data) {
+ {:contact_id => '23',
+ :tags => [],
+ :regex_tags => [],
+ :entities => [],
+ :regex_entities => [],
+ :time_restrictions => [ weekdays_8_18 ],
+ :unknown_media => [],
+ :warning_media => ["email"],
+ :critical_media => ["sms", "email"],
+ :unknown_blackhole => false,
+ :warning_blackhole => false,
+ :critical_blackhole => false
+ }
+ }
+
let(:regex_rule_data) {
{:contact_id => '23',
:tags => [],
:regex_tags => ["^data.*$","^(physical|bare_metal)$"],
:entities => [],
- :regex_entities => ["^foo-\S{3}-\d{2}.example.com$"],
+ :regex_entities => ['^foo-\S{3}-\d{2}.example.com$','.*abc.*'],
:time_restrictions => [ weekdays_8_18 ],
:unknown_media => [],
:warning_media => ["email"],
:critical_media => ["sms", "email"],
:unknown_blackhole => false,
@@ -50,10 +66,14 @@
let(:existing_rule) {
Flapjack::Data::NotificationRule.add(rule_data, :redis => @redis)
}
+ let(:existing_empty_rule) {
+ Flapjack::Data::NotificationRule.add(empty_rule_data, :redis => @redis)
+ }
+
let(:existing_regex_rule) {
Flapjack::Data::NotificationRule.add(regex_rule_data, :redis => @redis)
}
it "checks that a notification rule exists" do
@@ -98,28 +118,50 @@
it "checks whether entity names match" do
rule = existing_rule
expect(rule.match_entity?('foo-app-01.example.com')).to be true
+ expect(rule.match_entity?('foo-app-10.example.com')).to be true
expect(rule.match_entity?('foo-app-02.example.com')).to be false
+
+ expect(existing_empty_rule.match_entity?('anything.example.com')).to be true
end
- it "checks whether entity tags match" do
+ it "checks whether entity names match a regex" do
+ rule = existing_regex_rule
+
+ expect(rule.match_regex_entities?('foo-abc-01.example.com')).to be true
+ expect(rule.match_regex_entities?('foo-abc-99.example.com')).to be true
+ expect(rule.match_regex_entities?('foo-app-01.example.com')).to be false # does not match second regexp_entities
+ expect(rule.match_regex_entities?('foo-abc.example.com')).to be false
+ expect(rule.match_regex_entities?('bar-abc-01.example.com')).to be false
+
+ expect(existing_empty_rule.match_regex_entities?('anything.example.com')).to be true
+ end
+
+ it "checks whether event tags match" do
rule = existing_rule
expect(rule.match_tags?(['database', 'physical'].to_set)).to be true
expect(rule.match_tags?(['database', 'physical', 'beetroot'].to_set)).to be true
expect(rule.match_tags?(['database'].to_set)).to be false
expect(rule.match_tags?(['virtual'].to_set)).to be false
+ expect(rule.match_tags?([].to_set)).to be false
+
+ expect(existing_empty_rule.match_regex_entities?(['virtual'].to_set)).to be true
end
- it "checks whether entity tags match a regex" do
+ it "checks whether event tags match a regex" do
rule = existing_regex_rule
expect(rule.match_regex_tags?(['database', 'physical'].to_set)).to be true
expect(rule.match_regex_tags?(['database', 'physical', 'beetroot'].to_set)).to be true
expect(rule.match_regex_tags?(['database'].to_set)).to be false
+ expect(rule.match_regex_tags?(['database.physical'].to_set)).to be false # does not match second regex_tags
+ expect(rule.match_regex_tags?(['data1', 'data2'].to_set)).to be false # does not match second regex_tags
expect(rule.match_regex_tags?(['virtual'].to_set)).to be false
+
+ expect(existing_empty_rule.match_regex_entities?(['virtual'].to_set)).to be true
end
it "checks if blackhole settings for a rule match a severity level" do
rule_data[:warning_blackhole] = true
rule = Flapjack::Data::NotificationRule.add(rule_data, :redis => @redis)