diff options
author | nicolargo <nicolas@nicolargo.com> | 2024-03-16 17:00:16 +0100 |
---|---|---|
committer | nicolargo <nicolas@nicolargo.com> | 2024-03-16 17:00:16 +0100 |
commit | 6508acaba73fbfd61ed471e1204a23c028a3f9fd (patch) | |
tree | dbcdd8f28fd8a393e441f9b5c5b452ac8d84ed22 /unitest.py | |
parent | 0080c61eac898345062110b29ed1e678af056ac5 (diff) |
Improve alert with mininimal interval/duration configuration keys #2558
Diffstat (limited to 'unitest.py')
-rwxr-xr-x | unitest.py | 56 |
1 files changed, 54 insertions, 2 deletions
@@ -15,8 +15,8 @@ import unittest import sys # Check Python version -if sys.version_info < (3, 4): - print('Glances requires at least Python 3.4 to run.') +if sys.version_info < (3, 8): + print('Glances requires at least Python 3.8 to run.') sys.exit(1) from glances.main import GlancesMain @@ -32,6 +32,7 @@ from glances.thresholds import GlancesThresholds from glances.plugins.plugin.model import GlancesPluginModel from glances.programs import processes_to_programs from glances.secure import secure_popen +from glances.events import GlancesEvents # Global variables # ================= @@ -293,6 +294,57 @@ class TestGlances(unittest.TestCase): self.assertEqual(string_value_to_float('12'), 12) self.assertEqual(string_value_to_float('--'), None) + def test_019_events(self): + """Test events class""" + print('INFO: [TEST_019] Test events') + # Init events + events = GlancesEvents(max_events=5, min_duration=1, min_interval=3) + # Minimal event duration not reached + events.add('WARNING', 'LOAD', 4) + events.add('CRITICAL', 'LOAD', 5) + events.add('OK', 'LOAD', 1) + self.assertEqual(len(events.get()), 0) + # Minimal event duration LOAD reached + events.add('WARNING', 'LOAD', 4) + time.sleep(1) + events.add('CRITICAL', 'LOAD', 5) + time.sleep(1) + events.add('OK', 'LOAD', 1) + self.assertEqual(len(events.get()), 1) + self.assertEqual(events.get()[0]['type'], 'LOAD') + self.assertEqual(events.get()[0]['state'], 'CRITICAL') + self.assertEqual(events.get()[0]['max'], 5) + # Minimal event duration CPU reached + events.add('WARNING', 'CPU', 60) + time.sleep(1) + events.add('WARNING', 'CPU', 70) + time.sleep(1) + events.add('OK', 'CPU', 10) + self.assertEqual(len(events.get()), 2) + self.assertEqual(events.get()[0]['type'], 'CPU') + self.assertEqual(events.get()[0]['state'], 'WARNING') + self.assertEqual(events.get()[0]['min'], 60) + self.assertEqual(events.get()[0]['max'], 70) + self.assertEqual(events.get()[0]['count'], 2) + # Minimal event duration CPU reached (again) + # but time between two events (min_interval) is too short + # a merge will be done + time.sleep(0.5) + events.add('WARNING', 'CPU', 60) + time.sleep(1) + events.add('WARNING', 'CPU', 80) + time.sleep(1) + events.add('OK', 'CPU', 10) + self.assertEqual(len(events.get()), 2) + self.assertEqual(events.get()[0]['type'], 'CPU') + self.assertEqual(events.get()[0]['state'], 'WARNING') + self.assertEqual(events.get()[0]['min'], 60) + self.assertEqual(events.get()[0]['max'], 80) + self.assertEqual(events.get()[0]['count'], 4) + # Clean WARNING events + events.clean() + self.assertEqual(len(events.get()), 1) + def test_094_thresholds(self): """Test thresholds classes""" print('INFO: [TEST_094] Thresholds') |