Exemplo n.º 1
0
class RackspaceTests(unittest.TestCase):
    def setUp(self):
        RackspaceMonitoringDriver.connectionCls.conn_classes = (
            RackspaceMockHttp, RackspaceMockHttp)
        RackspaceMonitoringDriver.connectionCls.auth_url = \
                'https://auth.api.example.com/v1.1/'
        RackspaceMockHttp.type = None
        self.driver = RackspaceMonitoringDriver(
            *RACKSPACE_PARAMS, ex_force_base_url='http://www.todo.com')

    def test_list_monitoring_zones(self):
        result = list(self.driver.list_monitoring_zones())
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, 'mzxJ4L2IU')

    def test_list_entities(self):
        result = list(self.driver.list_entities())
        self.assertEqual(len(result), 6)
        self.assertEqual(result[0].id, 'en8B9YwUn6')
        self.assertEqual(result[0].label, 'bar')

    def test_list_checks(self):
        en = self.driver.list_entities()[0]
        result = list(self.driver.list_checks(entity=en))
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].label, 'bar')
        self.assertEqual(result[0].details['url'], 'http://www.foo.com')
        self.assertEqual(result[0].details['method'], 'GET')

    def test_list_alarms(self):
        en = self.driver.list_entities()[0]
        result = list(self.driver.list_alarms(entity=en))
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].type, 'remote.http')
        self.assertEqual(result[0].notification_plan_id, 'npIXxOAn5')

    def test_list_check_types(self):
        result = list(self.driver.list_check_types())
        self.assertEqual(len(result), 2)
        self.assertEqual(result[0].id, 'remote.dns')
        self.assertTrue(result[0].is_remote)

    def test_list_notification_types(self):
        result = list(self.driver.list_notification_types())
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, 'webhook')

    def test_list_notifications(self):
        result = list(self.driver.list_notifications())
        self.assertEqual(len(result), 2)
        self.assertEqual(result[0].type, 'webhook')
        self.assertEqual(result[0].details['url'],
                         'http://www.postbin.org/lulz')

    def test_list_notification_plans(self):
        result = list(self.driver.list_notification_plans())
        self.assertEqual(len(result), 8)
        self.assertEqual(result[0].label, 'test-notification-plan')

    def test_ex_list_alarm_history_checks(self):
        entity = self.driver.list_entities()[0]
        alarm = self.driver.list_alarms(entity=entity)[0]
        result = self.driver.ex_list_alarm_history_checks(entity=entity,
                                                          alarm=alarm)
        self.assertEqual(len(result['check_ids']), 2)

    def test_ex_list_alarm_history(self):
        entity = self.driver.list_entities()[0]
        alarm = self.driver.list_alarms(entity=entity)[0]
        check = self.driver.list_checks(entity=entity)[0]
        result = self.driver.ex_list_alarm_history(entity=entity,
                                                   alarm=alarm,
                                                   check=check)
        self.assertEqual(len(result), 1)
        self.assertTrue('timestamp' in result[0])
        self.assertTrue('notification_plan_id' in result[0])
        self.assertTrue('computed_state' in result[0])
        self.assertTrue('transaction_id' in result[0])
        self.assertTrue('notification_results' in result[0])

    def test_test_alarm(self):
        entity = self.driver.list_entities()[0]
        criteria = (
            'if (metric[\"code\"] == \"404\") { return CRITICAL, \"not',
            'found\" } return OK')
        check_data = []
        result = self.driver.test_alarm(entity=entity,
                                        criteria=criteria,
                                        check_data=check_data)

        self.assertTrue('timestamp' in result[0])
        self.assertTrue('computed_state' in result[0])
        self.assertTrue('status' in result[0])

    def test_check(self):
        entity = self.driver.list_entities()[0]
        check_data = {
            'label': 'test',
            'monitoring_zones': ['mzA'],
            'target_alias': 'default',
            'details': {
                'url': 'http://www.google.com'
            },
            'type': 'remote.http'
        }
        result = self.driver.test_check(entity=entity)

        self.assertTrue('available' in result[0])
        self.assertTrue('monitoring_zone_id' in result[0])
        self.assertTrue('available' in result[0])
        self.assertTrue('metrics' in result[0])

    def test_delete_entity_success(self):
        entity = self.driver.list_entities()[0]
        result = self.driver.delete_entity(entity=entity,
                                           ex_delete_children=False)
        self.assertTrue(result)

    def test_delete_entity_children_exist(self):
        entity = self.driver.list_entities()[1]
        RackspaceMockHttp.type = 'CHILDREN_EXIST'

        try:
            self.driver.delete_entity(entity=entity, ex_delete_children=False)
        except RackspaceMonitoringValidationError:
            pass
        else:
            self.fail('Exception was not thrown')

    def test_delete_check_success(self):
        en = self.driver.list_entities()[0]
        check = self.driver.list_checks(entity=en)[0]
        check.delete()

    def test_delete_alarm(self):
        en = self.driver.list_entities()[0]
        alarm = self.driver.list_alarms(entity=en)[0]
        alarm.delete()

    def test_delete_notification(self):
        notification = self.driver.list_notifications()[0]
        notification.delete()

    def test_delete_notification_plan(self):
        notification_plan = self.driver.list_notification_plans()[0]
        notification_plan.delete()
class RackspaceTests(unittest.TestCase):
    def setUp(self):
        RackspaceMonitoringDriver.connectionCls.conn_classes = (RackspaceMockHttp, RackspaceMockHttp)
        RackspaceMonitoringDriver.connectionCls.auth_url = "https://auth.api.example.com/v1.1/"
        RackspaceMockHttp.type = None
        self.driver = RackspaceMonitoringDriver(*RACKSPACE_PARAMS, ex_force_base_url="http://www.todo.com")

    def test_list_monitoring_zones(self):
        result = list(self.driver.list_monitoring_zones())
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "mzxJ4L2IU")

    def test_list_entities(self):
        result = list(self.driver.list_entities())
        self.assertEqual(len(result), 6)
        self.assertEqual(result[0].id, "en8B9YwUn6")
        self.assertEqual(result[0].label, "bar")

    def test_list_checks(self):
        en = self.driver.list_entities()[0]
        result = list(self.driver.list_checks(entity=en))
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].label, "bar")
        self.assertEqual(result[0].details["url"], "http://www.foo.com")
        self.assertEqual(result[0].details["method"], "GET")

    def test_list_alarms(self):
        en = self.driver.list_entities()[0]
        result = list(self.driver.list_alarms(entity=en))
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].type, "remote.http")
        self.assertEqual(result[0].notification_plan_id, "npIXxOAn5")

    def test_list_check_types(self):
        result = list(self.driver.list_check_types())
        self.assertEqual(len(result), 2)
        self.assertEqual(result[0].id, "remote.dns")
        self.assertTrue(result[0].is_remote)

    def test_list_notification_types(self):
        result = list(self.driver.list_notification_types())
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "webhook")

    def test_list_notifications(self):
        result = list(self.driver.list_notifications())
        self.assertEqual(len(result), 2)
        self.assertEqual(result[0].type, "webhook")
        self.assertEqual(result[0].details["url"], "http://www.postbin.org/lulz")

    def test_list_notification_plans(self):
        result = list(self.driver.list_notification_plans())
        self.assertEqual(len(result), 8)
        self.assertEqual(result[0].label, "test-notification-plan")

    def test_ex_list_alarm_history_checks(self):
        entity = self.driver.list_entities()[0]
        alarm = self.driver.list_alarms(entity=entity)[0]
        result = self.driver.ex_list_alarm_history_checks(entity=entity, alarm=alarm)
        self.assertEqual(len(result["check_ids"]), 2)

    def test_ex_list_alarm_history(self):
        entity = self.driver.list_entities()[0]
        alarm = self.driver.list_alarms(entity=entity)[0]
        check = self.driver.list_checks(entity=entity)[0]
        result = self.driver.ex_list_alarm_history(entity=entity, alarm=alarm, check=check)
        self.assertEqual(len(result), 1)
        self.assertTrue("timestamp" in result[0])
        self.assertTrue("notification_plan_id" in result[0])
        self.assertTrue("computed_state" in result[0])
        self.assertTrue("transaction_id" in result[0])
        self.assertTrue("notification_results" in result[0])

    def test_test_alarm(self):
        entity = self.driver.list_entities()[0]
        criteria = ('if (metric["code"] == "404") { return CRITICAL, "not', 'found" } return OK')
        check_data = []
        result = self.driver.test_alarm(entity=entity, criteria=criteria, check_data=check_data)

        self.assertTrue("timestamp" in result[0])
        self.assertTrue("computed_state" in result[0])
        self.assertTrue("status" in result[0])

    def test_check(self):
        entity = self.driver.list_entities()[0]
        check_data = {
            "label": "test",
            "monitoring_zones": ["mzA"],
            "target_alias": "default",
            "details": {"url": "http://www.google.com"},
            "type": "remote.http",
        }
        result = self.driver.test_check(entity=entity)

        self.assertTrue("available" in result[0])
        self.assertTrue("monitoring_zone_id" in result[0])
        self.assertTrue("available" in result[0])
        self.assertTrue("metrics" in result[0])

    def test_delete_entity_success(self):
        entity = self.driver.list_entities()[0]
        result = self.driver.delete_entity(entity=entity, ex_delete_children=False)
        self.assertTrue(result)

    def test_delete_entity_children_exist(self):
        entity = self.driver.list_entities()[1]
        RackspaceMockHttp.type = "CHILDREN_EXIST"

        try:
            self.driver.delete_entity(entity=entity, ex_delete_children=False)
        except RackspaceMonitoringValidationError:
            pass
        else:
            self.fail("Exception was not thrown")

    def test_delete_check_success(self):
        en = self.driver.list_entities()[0]
        check = self.driver.list_checks(entity=en)[0]
        check.delete()

    def test_delete_alarm(self):
        en = self.driver.list_entities()[0]
        alarm = self.driver.list_alarms(entity=en)[0]
        alarm.delete()

    def test_delete_notification(self):
        notification = self.driver.list_notifications()[0]
        notification.delete()

    def test_delete_notification_plan(self):
        notification_plan = self.driver.list_notification_plans()[0]
        notification_plan.delete()