Пример #1
0
    def test_brutal_bounce_mid_bounce(self):
        """When marathon has the desired app, but there are other copies of
        the service running, brutal 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_happy_tasks = {
            'app1': set(mock.Mock() for _ in xrange(3)),
            'app2': set(mock.Mock() for _ in xrange(2)),
        }
        old_app_live_unhappy_tasks = {
            'app1': set(mock.Mock() for _ in xrange(2)),
            'app2': set(mock.Mock() for _ in xrange(3)),
        }

        assert bounce_lib.brutal_bounce(
            new_config=new_config,
            new_app_running=True,
            happy_new_tasks=happy_tasks,
            old_app_live_happy_tasks=old_app_live_happy_tasks,
            old_app_live_unhappy_tasks=old_app_live_unhappy_tasks,
        ) == {
            "create_app": False,
            "tasks_to_drain": set.union(
                old_app_live_happy_tasks['app1'],
                old_app_live_happy_tasks['app2'],
                old_app_live_unhappy_tasks['app1'],
                old_app_live_unhappy_tasks['app2'],
            ),
        }
Пример #2
0
    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_happy_tasks = {
            'app1': {mock.Mock() for _ in range(3)},
            'app2': {mock.Mock() for _ in range(2)},
        }
        old_app_live_unhappy_tasks = {
            'app1': {mock.Mock() for _ in range(2)},
            'app2': {mock.Mock() for _ in range(3)},
        }

        assert bounce_lib.brutal_bounce(
            new_config=new_config,
            new_app_running=False,
            happy_new_tasks=[],
            old_app_live_happy_tasks=old_app_live_happy_tasks,
            old_app_live_unhappy_tasks=old_app_live_unhappy_tasks,
        ) == {
            "create_app": True,
            "tasks_to_drain": set.union(
                old_app_live_happy_tasks['app1'],
                old_app_live_happy_tasks['app2'],
                old_app_live_unhappy_tasks['app1'],
                old_app_live_unhappy_tasks['app2'],
            ),
        }
Пример #3
0
    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_happy_tasks = {
            'app1': set(mock.Mock() for _ in xrange(3)),
            'app2': set(mock.Mock() for _ in xrange(2)),
        }
        old_app_live_unhappy_tasks = {
            'app1': set(mock.Mock() for _ in xrange(2)),
            'app2': set(mock.Mock() for _ in xrange(3)),
        }

        assert bounce_lib.brutal_bounce(
            new_config=new_config,
            new_app_running=False,
            happy_new_tasks=[],
            old_app_live_happy_tasks=old_app_live_happy_tasks,
            old_app_live_unhappy_tasks=old_app_live_unhappy_tasks,
        ) == {
            "create_app": True,
            "tasks_to_drain": set.union(
                old_app_live_happy_tasks['app1'],
                old_app_live_happy_tasks['app2'],
                old_app_live_unhappy_tasks['app1'],
                old_app_live_unhappy_tasks['app2'],
            ),
        }
Пример #4
0
    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_non_draining_tasks=[],
        ) == {"create_app": True, "tasks_to_drain": set()}
Пример #5
0
    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 range(5)]

        assert bounce_lib.brutal_bounce(
            new_config=new_config,
            new_app_running=True,
            happy_new_tasks=happy_tasks,
            old_non_draining_tasks=[],
        ) == {"create_app": False, "tasks_to_drain": set()}
Пример #6
0
    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(),
        }
Пример #7
0
    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(),
        }
Пример #8
0
    def test_brutal_bounce_mid_bounce(self):
        """When marathon has the desired app, but there are other copies of
        the service running, brutal 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.brutal_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'],
        }
Пример #9
0
    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_happy_tasks = [mock.Mock() for _ in range(5)]
        old_app_live_unhappy_tasks = [mock.Mock() for _ in range(5)]

        assert bounce_lib.brutal_bounce(
            new_config=new_config,
            new_app_running=False,
            happy_new_tasks=[],
            old_non_draining_tasks=old_app_live_happy_tasks +
            old_app_live_unhappy_tasks,
        ) == {
            "create_app":
            True,
            "tasks_to_drain":
            set(old_app_live_happy_tasks + old_app_live_unhappy_tasks),
        }