def test_upthendown_bounce_no_existing_apps(self): """When marathon is unaware of a service, upthendown bounce should try to create a marathon app.""" new_config = {'id': 'foo.bar.12345'} happy_tasks = [] assert bounce_lib.upthendown_bounce( new_config=new_config, new_app_running=False, happy_new_tasks=happy_tasks, old_app_live_tasks={}, ) == { "create_app": True, "tasks_to_drain": set(), }
def test_upthendown_bounce_done(self): """When marathon has the desired app, and there are no other copies of the service running, upthendown bounce should neither start nor stop anything.""" new_config = {'id': 'foo.bar.12345', 'instances': 5} happy_tasks = [mock.Mock() for _ in xrange(5)] old_app_live_tasks = {} assert bounce_lib.upthendown_bounce( new_config=new_config, new_app_running=True, happy_new_tasks=happy_tasks, old_app_live_tasks=old_app_live_tasks, ) == { "create_app": False, "tasks_to_drain": set(), }
def test_upthendown_bounce_old_but_no_new(self): """When marathon has the desired app, but there are other copies of the service running, upthendown bounce should start the new one. but not stop the old one yet.""" new_config = {'id': 'foo.bar.12345', 'instances': 5} old_app_live_tasks = { 'app1': set(mock.Mock() for _ in xrange(3)), 'app2': set(mock.Mock() for _ in xrange(2)), } assert bounce_lib.upthendown_bounce( new_config=new_config, new_app_running=False, happy_new_tasks=[], old_app_live_tasks=old_app_live_tasks, ) == { "create_app": True, "tasks_to_drain": set(), }
def test_upthendown_bounce_cleanup(self): """When marathon has the desired app, and there are other copies of the service running, and the new app is fully up, upthendown bounce should stop the old ones.""" new_config = {'id': 'foo.bar.12345', 'instances': 5} happy_tasks = [mock.Mock() for _ in xrange(5)] old_app_live_tasks = { 'app1': set(mock.Mock() for _ in xrange(3)), 'app2': set(mock.Mock() for _ in xrange(2)), } assert bounce_lib.upthendown_bounce( new_config=new_config, new_app_running=True, happy_new_tasks=happy_tasks, old_app_live_tasks=old_app_live_tasks, ) == { "create_app": False, "tasks_to_drain": old_app_live_tasks['app1'] | old_app_live_tasks['app2'], }