def test_brutal_bounce_no_existing_apps(self): """When marathon is unaware of a service, brutal bounce should try to create a marathon app.""" new_config = {'id': 'foo.bar.12345'} happy_tasks = [] assert bounce_lib.brutal_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_brutal_bounce_done(self): """When marathon has the desired app, and there are no other copies of the service running, brutal bounce should neither start nor stop anything.""" new_config = {'id': 'foo.bar.12345', 'instances': 5} happy_tasks = [mock.Mock() for _ in xrange(5)] assert bounce_lib.brutal_bounce( new_config=new_config, new_app_running=True, happy_new_tasks=happy_tasks, old_app_live_tasks={}, ) == { "create_app": False, "tasks_to_drain": set(), }
def test_brutal_bounce_old_but_no_new(self): """When marathon does not have the desired app, but there are other copies of the service running, brutal bounce should stop the old ones and start the new one.""" 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.brutal_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": old_app_live_tasks['app1'] | old_app_live_tasks['app2'], }