diff options
| -rw-r--r-- | test/tc_mauve_notification.rb | 37 | ||||
| -rw-r--r-- | test/tc_mauve_people_list.rb | 120 | 
2 files changed, 151 insertions, 6 deletions
| diff --git a/test/tc_mauve_notification.rb b/test/tc_mauve_notification.rb index 16b6489..a447207 100644 --- a/test/tc_mauve_notification.rb +++ b/test/tc_mauve_notification.rb @@ -420,7 +420,7 @@ person ("test1") {    all { email }    notify {      every 300 -    during { !working_hours? } +    during { hours_in_day(0) }    }  } @@ -429,7 +429,14 @@ person ("test2") {    all { email }    notify {      every 300 -    during { working_hours? } +    during { hours_in_day(1) } +  } +} + +people_list("testers", %w(test1 test2)) { +  notify { +    every 150 +    during { hours_in_day(2) }    }  } @@ -437,6 +444,7 @@ alert_group("test") {    level URGENT    notify("test1")     notify("test2") +  notify("testers")  }  EOF @@ -455,6 +463,7 @@ EOF      #      # This should only alert test1      # +    assert_equal(0, Time.now.hour)      alert.raise!      assert_equal(1, notification_buffer.size, "Wrong number of notifications sent")      assert_equal("test1@example.com", notification_buffer.pop[2]) @@ -464,10 +473,11 @@ EOF      assert_equal("test1@example.com", notification_buffer.pop[2])      # -    # Wind forward to 9am (working hours) +    # Wind forward to 1am when test2 should get alerted      # -    Timecop.freeze(Time.now+9.hours) -    assert(Time.now.working_hours?) +    Timecop.freeze(Time.now+1.hours) + +    assert_equal(1, Time.now.hour)      alert.raise!      assert_equal(1, notification_buffer.size, "Wrong number of notifications sent")      assert_equal("test2@example.com", notification_buffer.pop[2]) @@ -475,7 +485,22 @@ EOF      alert.clear!      assert_equal(1, notification_buffer.size, "Wrong number of notifications sent")      assert_equal("test2@example.com", notification_buffer.pop[2]) -  + +    # +    # Wind forward to 2am when the testers group should get alerted +    # +    Timecop.freeze(Time.now+1.hours) + +    assert_equal(2, Time.now.hour) +    alert.raise! +    assert_equal(2, notification_buffer.size, "Wrong number of notifications sent") +    assert_equal("test2@example.com", notification_buffer.pop[2]) +    assert_equal("test1@example.com", notification_buffer.pop[2]) + +    alert.clear! +    assert_equal(2, notification_buffer.size, "Wrong number of notifications sent") +    assert_equal("test2@example.com", notification_buffer.pop[2]) +    assert_equal("test1@example.com", notification_buffer.pop[2])    end diff --git a/test/tc_mauve_people_list.rb b/test/tc_mauve_people_list.rb index e69de29..2d5da6d 100644 --- a/test/tc_mauve_people_list.rb +++ b/test/tc_mauve_people_list.rb @@ -0,0 +1,120 @@ +$:.unshift "../lib" + +require 'th_mauve' +require 'mauve/people_list' +require 'mauve/configuration' +require 'mauve/configuration_builder' +require 'mauve/configuration_builders' +require 'pp'  + +class TcMauvePeopleList < Mauve::UnitTest  + +  include Mauve + +  def setup +    super +    setup_database +  end + +  def teardown +    teardown_database +    super +  end + +  def test_send_alert +    # +    # Allows us to pick up notifications sent. +    # +    $sent_notifications = [] + +    config =<<EOF +notification_method("email") { +  debug! +  disable_normal_delivery! +  deliver_to_queue [] +} + +person ("test1") { +  email "test@example.com" +  all { email } +  suppress_notifications_after( 6 => 60.seconds ) +} + +person ("test2") { +  email "test@example.com" +  all { email } +  suppress_notifications_after( 1 => 1.minute ) +} + +people_list "testers", %w(test1 test2) + +alert_group("default") { +  level URGENT + +  notify("testers") { +    every 10.seconds +  }  +} +EOF +    Configuration.current = ConfigurationBuilder.parse(config) +    notification_buffer = Configuration.current.notification_methods["email"].deliver_to_queue + +    Server.instance.setup +    people_list = Configuration.current.people_lists["testers"] + +    alert = Alert.new( +      :alert_id  => "test", +      :source    => "test", +      :subject   => "test" +    ) +    alert.raise! +#    assert_equal(false,    .suppressed?, "Person suppressed before we even begin!") + +    start_time = Time.now + +    # +    # 6 alerts every 60 seconds. +    # +    [ [0, true, true], +      [5, true, false], +      [10, true, false], +      [15, true, false], +      [20, true, false], +      [25, true, false], # 6th alert -- suppress from now on +      [30, false, false],  +      [35, false, false], +      [40, false, false], +      [60, false, true], # One minute after starting -- should still be suppressed +      [65, false, false], +      [70, false, false], +      [75, false, false], +      [80, false, false], +      [85, true, false], # One minute after the last alert was sent, start sending again. +      [90, true, false] +    ].each do |offset, test1sent, test2sent| +      #  +      # Advance in to the future! +      # +      Timecop.freeze(start_time + offset) + +      people_list.people.each{|person| person.send_alert(alert.level, alert) } + + +      if test1sent or test2sent +        n_notifications = (test2sent ? 1 : 0) + (test1sent ? 1 : 0) +        assert_equal(n_notifications, notification_buffer.length, "Notification not sent when it should have been at #{Time.now}.") +        # +        # Pop the notification off the buffer. +        # +        n_notifications.times{ notification_buffer.pop } +#        assert_equal(Time.now, person.notification_thresholds[60][-1], "Notification thresholds not updated at #{Time.now}.") +      else +        assert_equal(0, notification_buffer.length, "Notification sent when it should not have been at #{Time.now}.") +      end + + +      logger_pop +    end + +  end +end | 
