aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/tc_mauve_alert_changed.rb83
-rw-r--r--test/tc_mauve_alert_group.rb2
-rw-r--r--test/tc_mauve_configuration_builders_alert_group.rb3
-rw-r--r--test/tc_mauve_configuration_builders_notification_method.rb16
-rw-r--r--test/tc_mauve_configuration_builders_person.rb3
-rw-r--r--test/tc_mauve_notification.rb84
6 files changed, 161 insertions, 30 deletions
diff --git a/test/tc_mauve_alert_changed.rb b/test/tc_mauve_alert_changed.rb
index 86f31d7..167ea75 100644
--- a/test/tc_mauve_alert_changed.rb
+++ b/test/tc_mauve_alert_changed.rb
@@ -6,6 +6,7 @@ require 'mauve/alert_changed'
require 'mauve/configuration'
require 'mauve/configuration_builder'
require 'mauve/configuration_builders'
+require 'mauve/notifiers'
class TcMauveAlertChanged < Mauve::UnitTest
include Mauve
@@ -23,8 +24,15 @@ class TcMauveAlertChanged < Mauve::UnitTest
def test_reminder
config=<<EOF
+notification_method("email") {
+ debug!
+ deliver_to_queue []
+ disable_normal_delivery!
+}
+
person("test_person") {
- all { true }
+ email "test_person@example.com"
+ all { email }
}
alert_group("test_group") {
@@ -37,20 +45,27 @@ alert_group("test_group") {
EOF
Configuration.current = ConfigurationBuilder.parse(config)
+ notification_buffer = Configuration.current.notification_methods["email"].deliver_to_queue
Server.instance.setup
alert = Alert.new(:source => "test", :alert_id => "test_alert", :summary => "test alert")
alert.raise!
- reminders = 1
+ reminders = 1
notifications = 1
mins = 0
11.times do
mins += 1
- assert_equal(notifications, Server.instance.notification_buffer.length)
+ #
+ # In order to send the notification and stick in the reminder, we need to
+ # process the buffer.
+ #
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+
+ assert_equal(notifications, notification_buffer.length)
assert_equal(reminders, AlertChanged.count)
Timecop.freeze(Time.now+1.minute)
@@ -67,7 +82,12 @@ EOF
alert.clear!
notifications += 1
- assert_equal(notifications, Server.instance.notification_buffer.length)
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(notifications, notification_buffer.length)
+ #
+ # Process the buffer again
+ #
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
assert_equal(reminders, AlertChanged.count)
Timecop.freeze(Time.now + 10.minutes)
@@ -75,15 +95,23 @@ EOF
#
# Send NO MORE notifications.
#
- assert_equal(notifications, Server.instance.notification_buffer.length)
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(notifications, notification_buffer.length)
assert_equal(reminders, AlertChanged.count)
end
def test_only_send_one_alert_on_unacknowledge
config=<<EOF
+notification_method("email") {
+ debug!
+ deliver_to_queue []
+ disable_normal_delivery!
+}
+
person("test_person") {
- all { true }
+ email "test@example.com"
+ all { email }
}
alert_group("test_group") {
@@ -96,21 +124,29 @@ alert_group("test_group") {
EOF
Configuration.current = ConfigurationBuilder.parse(config)
+ notification_buffer = Configuration.current.notification_methods["email"].deliver_to_queue
Server.instance.setup
alert = Alert.new(:source => "test", :alert_id => "test_alert", :summary => "test alert")
alert.raise!
- assert_equal(1,Server.instance.notification_buffer.length, "Wrong no of notifications sent after raise.")
- assert_equal(1,AlertChanged.count, "Wrong no of AlertChangeds created after raise.")
+
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(1, notification_buffer.length, "Wrong no of notifications sent after raise.")
+ assert_equal(1, AlertChanged.count, "Wrong no of AlertChangeds created after raise.")
alert.acknowledge!(Configuration.current.people["test_person"], Time.now + 10.minutes)
- assert_equal(2,Server.instance.notification_buffer.length, "Wrong no of notifications sent after acknowledge.")
- assert_equal(2,AlertChanged.count, "Wrong no of AlertChangeds created after acknowledge.")
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(2, notification_buffer.length, "Wrong no of notifications sent after raise.")
+ assert_equal(2, AlertChanged.count, "Wrong no of AlertChangeds created after acknowledge.")
+ #
+ # The alert has been acknowledged so send no more reminders.
+ #
Timecop.freeze(Time.now + 10.minutes)
AlertChanged.all.each{|ac| ac.poll}
- assert_equal(2,Server.instance.notification_buffer.length, "Extra notifications sent when alertchangeds are polled.")
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(2, notification_buffer.length, "Extra notifications sent when alertchangeds are polled.")
#
# OK if we poll the alert now it should be re-raised.
@@ -118,19 +154,28 @@ EOF
alert.poll
assert(!alert.acknowledged?,"Alert not unacknowledged")
assert(alert.raised?,"Alert not raised following unacknowledgment")
- assert_equal(3,Server.instance.notification_buffer.length, "No re-raise notification sent.")
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(3, notification_buffer.length, "No re-raise notification sent.")
+
#
# If we poll the AlertChangeds again, no further notification should be sent.
#
AlertChanged.all.each{|ac| ac.poll}
- assert_equal(3,Server.instance.notification_buffer.length, "Extra notifications sent when alertchangeds are polled.")
-
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(3, notification_buffer.length, "Extra notifications sent when alertchangeds are polled.")
end
def test_only_set_one_alert_changed_on_a_reminder_after_multiple_raises_and_clears
config=<<EOF
+notification_method("email") {
+ debug!
+ deliver_to_queue []
+ disable_normal_delivery!
+}
+
person("office_chat") {
- all { true }
+ email "test@example.com"
+ all { email }
}
alert_group("test_group") {
@@ -147,6 +192,7 @@ EOF
Configuration.current = ConfigurationBuilder.parse(config)
+ notification_buffer = Configuration.current.notification_methods["email"].deliver_to_queue
Server.instance.setup
@@ -165,7 +211,8 @@ EOF
#
# No notification should have been sent, since it is the middle of the night
#
- assert_equal(0,Server.instance.notification_buffer.length, "No notifications should have been sent.")
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(0, notification_buffer.length, "No notifications should have been sent.")
assert(alert.cleared?)
#
@@ -175,14 +222,14 @@ EOF
#
# Still no alerts should be sent.
#
- assert_equal(0,Server.instance.notification_buffer.length, "No notifications should have been sent.")
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(0, notification_buffer.length, "No notifications should have been sent.")
assert(alert.raised?)
#
# Only one AlertChanged should be set now, with a reminder time of 8.30.
#
assert_equal(1, AlertChanged.all(:remind_at.not => nil).length, "Too many reminders are due to be sent.")
-
end
end
diff --git a/test/tc_mauve_alert_group.rb b/test/tc_mauve_alert_group.rb
index d6416a2..7e7c4dd 100644
--- a/test/tc_mauve_alert_group.rb
+++ b/test/tc_mauve_alert_group.rb
@@ -5,7 +5,7 @@ require 'mauve/alert_group'
require 'th_mauve_resolv'
require 'pp'
-class TcMauveAlert < Mauve::UnitTest
+class TcMauveAlertGroup < Mauve::UnitTest
def test_matches_alert
diff --git a/test/tc_mauve_configuration_builders_alert_group.rb b/test/tc_mauve_configuration_builders_alert_group.rb
index 77d16b5..f260fa2 100644
--- a/test/tc_mauve_configuration_builders_alert_group.rb
+++ b/test/tc_mauve_configuration_builders_alert_group.rb
@@ -1,10 +1,9 @@
$:.unshift "../lib/"
require 'th_mauve'
-require 'pp'
require 'mauve/configuration_builders/alert_group'
-class TcMauveConfigurationBuildersNotificationMethod < Mauve::UnitTest
+class TcMauveConfigurationBuildersAlertGroup < Mauve::UnitTest
def test_load
diff --git a/test/tc_mauve_configuration_builders_notification_method.rb b/test/tc_mauve_configuration_builders_notification_method.rb
index e5e8475..80768e8 100644
--- a/test/tc_mauve_configuration_builders_notification_method.rb
+++ b/test/tc_mauve_configuration_builders_notification_method.rb
@@ -1,13 +1,25 @@
$:.unshift "../lib/"
require 'th_mauve'
-require 'pp'
+require 'mauve/configuration_builder'
require 'mauve/configuration_builders/notification_method'
class TcMauveConfigurationBuildersNotificationMethod < Mauve::UnitTest
- def test_load
+ def test_debug_methods
+ config =<<EOF
+notification_method("email") {
+ debug!
+ disable_normal_delivery!
+ deliver_to_queue []
+}
+EOF
+ x = nil
+ assert_nothing_raised { x = Mauve::ConfigurationBuilder.parse(config) }
+ y = x.notification_methods["email"]
+
+ # TODO test delivery
end
end
diff --git a/test/tc_mauve_configuration_builders_person.rb b/test/tc_mauve_configuration_builders_person.rb
index b4fbd4f..61a6202 100644
--- a/test/tc_mauve_configuration_builders_person.rb
+++ b/test/tc_mauve_configuration_builders_person.rb
@@ -1,10 +1,9 @@
$:.unshift "../lib/"
require 'th_mauve'
-require 'pp'
require 'mauve/configuration_builders/person'
-class TcMauveConfigurationBuildersNotificationMethod < Mauve::UnitTest
+class TcMauveConfigurationBuildersPerson < Mauve::UnitTest
def test_load
diff --git a/test/tc_mauve_notification.rb b/test/tc_mauve_notification.rb
index 0b3bc04..bac389f 100644
--- a/test/tc_mauve_notification.rb
+++ b/test/tc_mauve_notification.rb
@@ -185,16 +185,25 @@ class TcMauveNotification < Mauve::UnitTest
t = Time.now
config=<<EOF
+notification_method("email") {
+ debug!
+ deliver_to_queue []
+ disable_normal_delivery!
+}
+
person ("test1") {
- all { true }
+ email "test1@example.com"
+ all { email }
}
person ("test2") {
- all { true }
+ email "test2@example.com"
+ all { email }
}
person ("test3") {
- all { true }
+ email "test3@example.com"
+ all { email }
}
people_list "testers", %w(
@@ -227,6 +236,8 @@ alert_group("default") {
EOF
Configuration.current = ConfigurationBuilder.parse(config)
+ notification_buffer = Configuration.current.notification_methods["email"].deliver_to_queue
+
Server.instance.setup
alert = Alert.new(
:alert_id => "test",
@@ -240,7 +251,8 @@ EOF
#
# Also make sure that only 2 notifications has been sent..
#
- assert_equal(2, Server.instance.notification_buffer.size, "Wrong number of notifications sent")
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(2, notification_buffer.size, "Wrong number of notifications sent")
#
# Although there are four clauses above for notifications, test1 should be
@@ -303,8 +315,9 @@ EOF
)
alert.raise!
- assert_equal(1, Alert.count, "Wrong number of alerts saved")
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+ assert_equal(1, Alert.count, "Wrong number of alerts saved")
assert_equal(1, AlertChanged.count, "Wrong number of reminders inserted")
a = AlertChanged.first
@@ -315,4 +328,65 @@ EOF
end
+ #
+ # Test to make sure that if a bondary is crossed, then the during clauses all
+ # work.
+ #
+ def test_no_race_conditions_in_during
+
+ config=<<EOF
+notification_method("email") {
+ debug!
+ deliver_to_queue []
+ disable_normal_delivery!
+}
+
+person ("test1") {
+ email "test1@example.com"
+ all { email }
+}
+
+person ("test2") {
+ email "test1@example.com"
+ all { email }
+}
+
+alert_group("default") {
+ level URGENT
+ notify("test1") {
+ every 0
+ during { sleep 2 ; hours_in_day 1..7 }
+ }
+
+ notify("test2") {
+ every 0
+ during { hours_in_day 8..10 }
+ }
+
+}
+EOF
+
+ #
+ # Wind forward until 7:59:59am
+ #
+ Configuration.current = ConfigurationBuilder.parse(config)
+ notification_buffer = Configuration.current.notification_methods["email"].deliver_to_queue
+
+ Server.instance.setup
+
+ alert = Alert.new(
+ :alert_id => "test",
+ :source => "test",
+ :subject => "test"
+ )
+
+ Timecop.travel(Time.now + 7.hours + 59.minutes + 59.seconds)
+ alert.raise!
+
+ assert_nothing_raised{ Notifier.instance.__send__(:main_loop) }
+
+ assert_equal(1, notification_buffer.size, "Wrong number of notifications sent")
+ end
+
+
end