def test_should_detect_influxdb_db(self): db_health = tdc.MetricsDbCheck() # check if influxdb is detected self.assertEqual( 'influxdb', db_health._detected_database_type('influxdb.metrics_repository'))
def test_health_check_failed(self, simport_mock): metrics_repo_mock = simport_mock.load.return_value metrics_repo_mock.check_status.return_value = (False, 'Error') db_health = tdc.MetricsDbCheck() result = db_health.health_check() self.assertFalse(result.healthy) self.assertEqual(result.message, 'Error')
def test_should_pass_cassandra_is_available(self, _): messaging_conf = { 'metrics_driver': 'cassandra.metrics_repository:MetricsRepository' } cassandra_conf = { 'cluster_ip_addresses': 'localhost', 'keyspace': 'test' } self._conf.config(group='repositories', **messaging_conf) self._conf.config(group='cassandra', **cassandra_conf) db_health = tdc.MetricsDbCheck() result = db_health.health_check() self.assertTrue(result.healthy)
def test_should_fail_influxdb_service_unavailable(self, req): response_mock = mock.Mock() req.side_effect = requests.HTTPError() req.return_value = response_mock influxdb_conf = {'ip_address': 'localhost', 'port': 8096} messaging_conf = { 'metrics_driver': 'influxdb.metrics_repository:MetricsRepository' } self._conf.config(group='repositories', **messaging_conf) self._conf.config(group='influxdb', **influxdb_conf) db_health = tdc.MetricsDbCheck() result = db_health.health_check() self.assertFalse(result.healthy)
def test_should_fail_influxdb_wrong_port_number(self, req): response_mock = mock.Mock() response_mock.ok = False response_mock.status_code = 404 req.return_value = response_mock influxdb_conf = {'ip_address': 'localhost', 'port': 8099} messaging_conf = { 'metrics_driver': 'influxdb.metrics_repository:MetricsRepository' } self._conf.config(group='repositories', **messaging_conf) self._conf.config(group='influxdb', **influxdb_conf) db_health = tdc.MetricsDbCheck() result = db_health.health_check() self.assertFalse(result.healthy) self.assertEqual('Error: 404', result.message)
def test_should_pass_infuxdb_available(self, req): response_mock = mock.Mock() response_mock.ok = True response_mock.status_code = 204 req.return_value = response_mock influxdb_conf = {'ip_address': 'localhost', 'port': 8086} messaging_conf = { 'metrics_driver': 'influxdb.metrics_repository:MetricsRepository' } self._conf.config(group='repositories', **messaging_conf) self._conf.config(group='influxdb', **influxdb_conf) db_health = tdc.MetricsDbCheck() result = db_health.health_check() self.assertTrue(result.healthy) self.assertEqual('OK', result.message)
def test_should_fail_cassandra_no_driver(self, try_import): messaging_conf = { 'metrics_driver': 'cassandra.metrics_repository:MetricsRepository' } cassandra_conf = { 'cluster_ip_addresses': 'localhost', 'keyspace': 'test' } self._conf.config(group='repositories', **messaging_conf) self._conf.config(group='cassandra', **cassandra_conf) # Simulate cassandra driver not available try_import.return_value = None db_health = tdc.MetricsDbCheck() db_health.cluster = None result = db_health.health_check() self.assertFalse(result.healthy)
def test_should_fail_cassandra_unavailable(self, cluster): messaging_conf = { 'metrics_driver': 'cassandra.metrics_repository:MetricsRepository' } cassandra_conf = { 'cluster_ip_addresses': 'localhost', 'keyspace': 'test' } self._conf.config(group='repositories', **messaging_conf) self._conf.config(group='cassandra', **cassandra_conf) cas_mock = mock.Mock() cluster.side_effect = cl.NoHostAvailable(message='Host unavailable', errors='Unavailable') cluster.return_value = cas_mock db_health = tdc.MetricsDbCheck() result = db_health.health_check() self.assertFalse(result.healthy)
def __init__(self): super(HealthChecks, self).__init__() self._kafka_check = kafka_check.KafkaHealthCheck() self._alarm_db_check = alarms_db_check.AlarmsDbHealthCheck() self._metrics_db_check = metrics_db_check.MetricsDbCheck()
def test_should_raise_exception_during_db_detection(self): db_health = tdc.MetricsDbCheck() # check exception db = 'postgresql.metrics_repository' self.assertRaises(exceptions.UnsupportedDriverException, db_health._detected_database_type, db)
def test_should_detect_cassandra_db(self): db_health = tdc.MetricsDbCheck() # check if cassandra is detected self.assertEqual( 'cassandra', db_health._detected_database_type('cassandra.metrics_repository'))