def test_failed_secondary_health_check(self): """Verifies that a secondary health check is not invoked when a primary check fails""" task = self.create_task(0, 'a') self._health_check_a.health(task).AndReturn(Retriable.alive()) self._health_check_b.health(task).AndReturn(Retriable.dead()) health_check = ChainedHealthCheck(self._health_check_a, self._health_check_b) self.replay() assert health_check.health(task) == Retriable.dead() self.verify()
def test_instancewatcher_http_health_check(self): """Verifies that http health check is performed if the task has a health port""" task = self.create_task(0, 'a') self.expect_http_signaler_creation() self.expect_health_check(status=False) self.replay() assert self._smart_health_check.health(task) == Retriable.dead() self.verify()
def test_http_health_check(self): """Verify successful and failed http health checks for a task""" task_a = self.create_task(0, 'a') self.expect_http_signaler_creation() self.expect_health_check() self.expect_health_check(status=False) self.replay() assert self._http_health_check.health(task_a) == Retriable.alive() assert self._http_health_check.health(task_a) == Retriable.dead() self.verify()
def test_failed_status_health_check(self): """Verify that the health check fails for tasks in a state other than RUNNING""" pending_task = self.create_task(0, 'a', status=PENDING) failed_task = self.create_task(1, 'b', status=FAILED) assert self._status_health_check.health(pending_task) == Retriable.dead() assert self._status_health_check.health(failed_task) == Retriable.dead()
def test_health_statuses(self): """Verfies that the health status tuple (health, retry_status) are as expected""" assert Retriable.alive() == (True, True) assert Retriable.dead() == (False, True) assert NotRetriable.alive() == (True, False) assert NotRetriable.dead() == (False, False)