def test_update_app_poor_health(): """ Tests updating an app with an automatic rollback due to poor health. """ app_id = uuid.uuid4().hex app_def = readiness_and_health_app() app_def['id'] = app_id with marathon_on_marathon(): client = marathon.create_client() client.add_app(app_def) shakedown.deployment_wait() # start with 1 tasks = client.get_tasks(app_id) assert len(tasks) == 1 # provides a testing delay to rollback from app_def['healthChecks'][0]['path'] = '/non-existant' app_def['instances'] = 2 deployment_id = client.update_app(app_id, app_def) # 2 min wait try: shakedown.deployment_wait() except: client.rollback_deployment(deployment_id) shakedown.deployment_wait() tasks = client.get_tasks(app_id) assert len(tasks) == 1
def test_update_app_poor_health(): """ Tests updating an app with an automatic rollback due to poor health. """ app_id = uuid.uuid4().hex app_def = readiness_and_health_app() app_def['id'] = app_id client = marathon.create_client() client.add_app(app_def) shakedown.deployment_wait() # start with 1 tasks = client.get_tasks(app_id) assert len(tasks) == 1 # provides a testing delay to rollback from app_def['healthChecks'][0]['path'] = '/non-existant' app_def['instances'] = 2 deployment_id = client.update_app(app_id, app_def) # 2 min wait try: shakedown.deployment_wait() except: client.rollback_deployment(deployment_id) shakedown.deployment_wait() tasks = client.get_tasks(app_id) assert len(tasks) == 1
def test_update_app_rollback(): """ Tests updating an app then rolling back the update. """ app_id = uuid.uuid4().hex app_def = readiness_and_health_app() app_def['id'] = app_id with marathon_on_marathon(): client = marathon.create_client() client.add_app(app_def) shakedown.deployment_wait() # start with 1 tasks = client.get_tasks(app_id) assert len(tasks) == 1 app_def['instances'] = 2 client.update_app(app_id, app_def) shakedown.deployment_wait() # update works to 2 tasks = client.get_tasks(app_id) assert len(tasks) == 2 # provides a testing delay to rollback from app_def['readinessChecks'][0]['intervalSeconds'] = 30 app_def['instances'] = 1 deployment_id = client.update_app(app_id, app_def) client.rollback_deployment(deployment_id) shakedown.deployment_wait() # update to 1 instance is rollback to 2 tasks = client.get_tasks(app_id) assert len(tasks) == 2
def test_update_app_rollback(): """ Tests updating an app then rolling back the update. """ app_id = uuid.uuid4().hex app_def = readiness_and_health_app() app_def['id'] = app_id client = marathon.create_client() client.add_app(app_def) shakedown.deployment_wait() # start with 1 tasks = client.get_tasks(app_id) assert len(tasks) == 1 app_def['instances'] = 2 client.update_app(app_id, app_def) shakedown.deployment_wait() # update works to 2 tasks = client.get_tasks(app_id) assert len(tasks) == 2 # provides a testing delay to rollback from app_def['readinessChecks'][0]['intervalSeconds'] = 30 app_def['instances'] = 1 deployment_id = client.update_app(app_id, app_def) client.rollback_deployment(deployment_id) shakedown.deployment_wait() # update to 1 instance is rollback to 2 tasks = client.get_tasks(app_id) assert len(tasks) == 2