def test_check_alert_recover_from_high_traffic(self): alerter = Alerter(alert_check_interval=120, high_traffic_threshold=10) loglines_at_threshold = alerter.high_traffic_threshold * alerter.alert_check_interval loglines = generate_loglines(num_lines=loglines_at_threshold + 1, sleep=0) has_alert = alerter.check_if_alert(loglines) self.assertIsNotNone(alerter.last_alert) loglines = generate_loglines(num_lines=100, sleep=0) has_alert = alerter.check_if_alert(loglines) self.assertIsNotNone(alerter.last_alert) self.assertEqual(alerter.last_alert.state, AlertState.RECOVERED)
def test_check_if_alert_under_threshold_no_alert(self): alerter = Alerter(alert_check_interval=120, high_traffic_threshold=10) loglines = generate_loglines(num_lines=100, sleep=0) has_alert = alerter.check_if_alert(loglines) self.assertFalse(has_alert) self.assertIsNone(alerter.last_alert)
def test_check_if_alert_no_duplicate_alerts_created(self): alerter = Alerter(alert_check_interval=120, high_traffic_threshold=10) loglines_at_threshold = alerter.high_traffic_threshold * alerter.alert_check_interval loglines = generate_loglines(num_lines=loglines_at_threshold + 1, sleep=0) # Generate first alert has_alert = alerter.check_if_alert(loglines) first_alert = alerter.last_alert self.assertIsNotNone(alerter.last_alert) self.assertEqual(alerter.last_alert.state, AlertState.HIGH_TRAFFIC) # Try to generate second alert alerter.check_if_alert(loglines) self.assertEqual(first_alert.time, alerter.last_alert.time)
def test_check_if_alert_over_threshold_has_alert(self): alerter = Alerter(alert_check_interval=120, high_traffic_threshold=10) loglines_at_threshold = alerter.high_traffic_threshold * alerter.alert_check_interval loglines = generate_loglines(num_lines=loglines_at_threshold + 1, sleep=0) has_alert = alerter.check_if_alert(loglines) self.assertIsNotNone(alerter.last_alert) self.assertEqual(alerter.last_alert.state, AlertState.HIGH_TRAFFIC)