def add_healthcheck_endpoint(app, ES, REDIS): health = healthcheck.HealthCheck(app, "/healthz") ES = Elasticsearch([app.config['ES_ADDRESS']], ca_certs=certifi.where(), timeout=1.0) REDIS = redis.StrictRedis( host=app.config['REDIS_ADDRESS'], socket_connect_timeout=1, socket_timeout=1 ) def elasticsearch_available(): ES.info() return True, 'elasticsearch ok' health.add_check(elasticsearch_available) def redis_available(): REDIS.info() return True, 'redis ok' health.add_check(redis_available) # def main_page_renders(): # res = api_aservice.render_main_page(ES, None, 0, 'No Ticket', set()) # if res: # return True, 'site ok' # else: # return False, 'render failed' # # removing for now due to it taking too long with many Traceback errors in the system # health.add_check(main_page_renders) _ = healthcheck.EnvironmentDump(app, "/environment")
def test_set_command_if_exists_missing(self): expected = { 'protocol': 'COMMAND', 'command': { 'value': '/bin/bash something' } } labels = {'blah': '/bin/bash something'} h = healthcheck.HealthCheck(labels) actual = h._set_command_if_exists({}) self.assertEqual({}, actual)
def restart_healthcheck(self): time.sleep(0.1) try: health_check = healthcheck.HealthCheck() except KeyboardInterrupt: os.killpg(0, signal.SIGINT) sys.exit(1) except Exception as e: LOG.error('Failed to init HealthCheck: {}'.format(e)) self.restart_healthcheck() return hc_process = Process(target=health_check.healthcheck_main, args=(self, )) hc_process.start()
def test_get_health_check_config_tcp(self): expected = [{ 'portIndex': 0, 'protocol': 'TCP', 'timeoutSeconds': 20, 'intervalSeconds': 5, 'gracePeriodSeconds': 300, 'maxConsecutiveFailures': 3 }] labels = {healthcheck.HealthCheck.HEALTH_CHECK_LABEL: 'true'} h = healthcheck.HealthCheck(labels) actual = h.get_health_check_config() self.assertEquals(expected, actual)
def test_get_health_check_config_http_portindex(self): expected = [{ 'portIndex': 1, 'protocol': 'HTTP', 'timeoutSeconds': 20, 'intervalSeconds': 5, 'gracePeriodSeconds': 300, 'maxConsecutiveFailures': 3 }] labels = {healthcheck.HealthCheck.PORT_INDEX_LABEL: 1} h = healthcheck.HealthCheck(labels) actual = h.get_health_check_config() self.assertEquals(expected, actual)
def test_get_health_check_config_command(self): expected = [{ 'portIndex': 0, 'protocol': 'COMMAND', 'command': { 'value': '/bin/bash something' }, 'timeoutSeconds': 20, 'intervalSeconds': 5, 'gracePeriodSeconds': 300, 'maxConsecutiveFailures': 3 }] labels = {healthcheck.HealthCheck.COMMAND_LABEL: '/bin/bash something'} h = healthcheck.HealthCheck(labels) actual = h.get_health_check_config() self.assertEquals(expected, actual)
def test_set_path_if_exists(self): expected = {'path': '/my/path', 'protocol': 'HTTP'} labels = {healthcheck.HealthCheck.PATH_LABEL: '/my/path'} h = healthcheck.HealthCheck(labels) actual = h._set_path_if_exists({}) self.assertEqual(expected, actual)
def test_get_label_value_none(self): labels = {'label1': 'value1', 'label2': 'value2'} h = healthcheck.HealthCheck(labels) actual = h._get_label_value(None) self.assertEquals(None, actual)
def test_get_label_value_list(self): labels = ['label1=value1', 'label2=value2'] h = healthcheck.HealthCheck(labels) actual = h._get_label_value('label1') self.assertEquals('value1', actual)
def test_get_label_value_case_missing(self): labels = {'label1': 'value1', 'label2': 'value2'} h = healthcheck.HealthCheck(labels) actual = h._get_label_value('MISSING') self.assertEquals(None, actual)
def test_not_none(self): h = healthcheck.HealthCheck({}) self.assertIsNotNone(h)
def test_get_label_value_case_sensitive(self): labels = {'label1': 'value1', 'label2': 'value2'} h = healthcheck.HealthCheck(labels) actual = h._get_label_value('LABEL2') self.assertEquals(None, actual)
def test_label_exists_list(self): labels = ['label1=value1', 'label2=value2'] h = healthcheck.HealthCheck(labels) actual = h._label_exists('label1') self.assertTrue(actual)
def test_set_port_if_exists(self): expected = {'portIndex': '123', 'protocol': 'HTTP'} labels = {healthcheck.HealthCheck.PORT_INDEX_LABEL: '123'} h = healthcheck.HealthCheck(labels) actual = h._set_port_index_if_exists({}) self.assertEqual(expected, actual)
def test_label_exists_case_sensitive(self): labels = {'label1': 'value1', 'label2': 'value2'} h = healthcheck.HealthCheck(labels) actual = h._label_exists('Label1') self.assertFalse(actual)
def test_label_exists_empty(self): h = healthcheck.HealthCheck({}) actual = h._label_exists('label1') self.assertFalse(actual)
def test_label_exists(self): labels = {'label1': 'value1', 'label2': 'value2'} h = healthcheck.HealthCheck(labels) actual = h._label_exists('label1') self.assertTrue(actual)
def test_set_path_if_exists_missing(self): labels = {'something': '/my/path'} h = healthcheck.HealthCheck(labels) actual = h._set_path_if_exists({}) self.assertEqual({}, actual)
def test_label_exists_none(self): labels = ['label1=value1', 'label2=value2'] h = healthcheck.HealthCheck(labels) actual = h._label_exists(None) self.assertFalse(actual)
def test_label_exists_missing(self): labels = {'label1': 'value1', 'label2': 'value2'} h = healthcheck.HealthCheck(labels) actual = h._label_exists('MISSING') self.assertFalse(actual)
def test_set_port_if_exists_missing(self): labels = {'blah': '123'} h = healthcheck.HealthCheck(labels) actual = h._set_port_index_if_exists({}) self.assertEqual({}, actual)