cold
This commit is contained in:
0
sleeper_agents_aom_engine/serviceapp/__init__.py
Executable file
0
sleeper_agents_aom_engine/serviceapp/__init__.py
Executable file
1073
sleeper_agents_aom_engine/serviceapp/service.py
Executable file
1073
sleeper_agents_aom_engine/serviceapp/service.py
Executable file
File diff suppressed because it is too large
Load Diff
99
sleeper_agents_aom_engine/serviceapp/test_service.py
Executable file
99
sleeper_agents_aom_engine/serviceapp/test_service.py
Executable file
@@ -0,0 +1,99 @@
|
||||
import unittest
|
||||
|
||||
import service
|
||||
|
||||
class TestMockRedis(unittest.TestCase) :
|
||||
def test_base(self) :
|
||||
from redis import Redis
|
||||
r = service.get_redis_client()
|
||||
self.assertTrue(not isinstance(r, Redis))
|
||||
self.assertEqual(r.get("a"), None)
|
||||
self.assertEqual(r.set("a", "b"), None)
|
||||
self.assertEqual(r.call("KEYS", "b*"), [])
|
||||
def test_test(self) :
|
||||
r = TestRedis()
|
||||
r.set("a", "b")
|
||||
self.assertEqual(r.get("a"), "b")
|
||||
self.assertEqual(r.call("KEYS", "a*"), ["a"])
|
||||
|
||||
DB = None
|
||||
class TestRedis(service.MockRedis) :
|
||||
def __init__(self) :
|
||||
global DB
|
||||
if DB is None :
|
||||
DB = {}
|
||||
def get(self, key) :
|
||||
global DB
|
||||
return DB[key] if key in DB else None
|
||||
def delete(self, key) :
|
||||
global DB
|
||||
if key in DB :
|
||||
del(DB[key])
|
||||
def set(self, key, value) :
|
||||
global DB
|
||||
DB[key] = value
|
||||
def call(self, cmd, arg) :
|
||||
global DB
|
||||
if not cmd is "KEYS" :
|
||||
return None
|
||||
return [i for i in DB.keys() if i.startswith(arg.strip("*"))]
|
||||
|
||||
class TestSetFiring(unittest.TestCase) :
|
||||
def test_base(self) :
|
||||
def mock_get_redis_client() :
|
||||
return TestRedis()
|
||||
service.get_redis_client = mock_get_redis_client
|
||||
service.set_firing("TestSetFiring", [
|
||||
[0, 0, 0, {"dc": "there"}],
|
||||
[0, 0, 0, {"dc": "here"}],
|
||||
])
|
||||
self.assertEqual(len(service.list_firing("TestSetFiring")), 2)
|
||||
service.set_firing("TestSetFiring", [
|
||||
[0, 0, 0, {"dc": "here"}],
|
||||
])
|
||||
self.assertEqual(len(service.list_firing("TestSetFiring")), 1)
|
||||
|
||||
class MockResolveDep():
|
||||
def __init__(self, l) :
|
||||
self.l = l
|
||||
def getDependencies(self) :
|
||||
return self.l
|
||||
|
||||
class TestIsSuppressed(unittest.TestCase) :
|
||||
def test_base(self) :
|
||||
def mock_get_redis_client() :
|
||||
return TestRedis()
|
||||
service.get_redis_client = mock_get_redis_client
|
||||
|
||||
alert_config = {
|
||||
'id': "TestIsSuppressed",
|
||||
'resolvedDependencies': MockResolveDep(["TestIsSuppressedD", "b", "c"]),
|
||||
'suppressed_occurrences_threshold': 2,
|
||||
}
|
||||
alert_tags = {"dc":"z", "x":"y"}
|
||||
|
||||
# dependency fires one alert, suppress in effect
|
||||
service.set_firing("TestIsSuppressedD", [[0, 0, 0, alert_tags]])
|
||||
service.clear_suppressed(alert_config, alert_tags)
|
||||
self.assertTrue(service.is_suppressed(alert_config, alert_tags))
|
||||
|
||||
# dependency still firing alert, suppress stops
|
||||
service.set_firing("TestIsSuppressedD", [[0, 0, 0, alert_tags]])
|
||||
service.clear_suppressed(alert_config, alert_tags)
|
||||
self.assertFalse(service.is_suppressed(alert_config, alert_tags))
|
||||
|
||||
# dependency in different dc fires alert, suppress in DC1 stops, suppress in DC2 starts
|
||||
new_alert_tags = {"dc":"w"}
|
||||
service.set_firing("TestIsSuppressedD", [[0, 0, 0, new_alert_tags]])
|
||||
service.clear_suppressed(alert_config, new_alert_tags)
|
||||
self.assertFalse(service.is_suppressed(alert_config, alert_tags))
|
||||
self.assertTrue(service.is_suppressed(alert_config, new_alert_tags))
|
||||
|
||||
# dependencies clear everywhere, suppress stops everywhere
|
||||
service.set_firing("TestIsSuppressedD", [])
|
||||
service.clear_suppressed(alert_config, [])
|
||||
self.assertFalse(service.is_suppressed(alert_config, alert_tags))
|
||||
self.assertFalse(service.is_suppressed(alert_config, new_alert_tags))
|
||||
|
||||
if __name__ == "__main__" :
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user