예제 #1
0
    def test_downthenup_bounce_no_existing_apps(self):
        """When marathon is unaware of a service, downthenup bounce should try to
        create a marathon app."""
        new_config = {'id': 'foo.bar.12345', 'instances': 5}
        happy_tasks = []
        old_app_live_tasks = {}

        assert bounce_lib.downthenup_bounce(
            new_config=new_config,
            new_app_running=False,
            happy_new_tasks=happy_tasks,
            old_app_live_tasks=old_app_live_tasks,
        ) == {
            "create_app": True,
            "tasks_to_drain": set(),
        }
예제 #2
0
    def test_downthenup_bounce_done(self):
        """When marathon has the desired app, and there are no other copies of the service running, downthenup 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.downthenup_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(),
        }
예제 #3
0
    def test_downthenup_bounce_old_but_no_new(self):
        """When marathon has only old copies of the service, downthenup_bounce should kill them and not start a new one
        yet."""
        new_config = {'id': 'foo.bar.12345', 'instances': 5}
        happy_tasks = []
        old_app_live_tasks = {
            'app1': set(mock.Mock() for _ in xrange(3)),
            'app2': set(mock.Mock() for _ in xrange(2)),
        }

        assert bounce_lib.downthenup_bounce(
            new_config=new_config,
            new_app_running=False,
            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'],
        }