def test_get_old_live_draining_tasks_not_empty(self):
        fake_name = 'whoa'
        fake_instance = 'the_earth_is_tiny'
        fake_id = marathon_tools.format_job_id(fake_name, fake_instance)

        def fake_task(state):
            return mock.Mock(_drain_state=state)

        fake_apps = [
            mock.Mock(id=fake_id, tasks=[fake_task('up'), fake_task('down')]),
            mock.Mock(id=('%s2' % fake_id), tasks=[fake_task('up'), fake_task('down')])
        ]
        expected_live_tasks = {
            fake_apps[0].id: set([fake_apps[0].tasks[0]]),
            fake_apps[1].id: set([fake_apps[1].tasks[0]]),
        }
        expected_draining_tasks = {
            fake_apps[0].id: set([fake_apps[0].tasks[1]]),
            fake_apps[1].id: set([fake_apps[1].tasks[1]]),
        }

        fake_drain_method = mock.Mock(is_draining=lambda t: t._drain_state == 'down')

        actual = setup_marathon_job.get_old_live_draining_tasks(fake_apps, fake_drain_method)
        actual_live_tasks, actual_draining_tasks = actual
        assert actual_live_tasks == expected_live_tasks
        assert actual_draining_tasks == expected_draining_tasks
    def test_get_old_live_draining_tasks_empty(self):
        fake_name = 'whoa'
        fake_instance = 'the_earth_is_tiny'
        fake_id = marathon_tools.format_job_id(fake_name, fake_instance)

        fake_apps = [
            mock.Mock(id=fake_id, tasks=[]),
            mock.Mock(id=('%s2' % fake_id), tasks=[])
        ]

        expected_live_tasks = {
            fake_apps[0].id: set(),
            fake_apps[1].id: set(),
        }
        expected_draining_tasks = {
            fake_apps[0].id: set(),
            fake_apps[1].id: set(),
        }

        fake_drain_method = mock.Mock(is_draining=lambda _: True)

        actual = setup_marathon_job.get_old_live_draining_tasks(fake_apps, fake_drain_method)
        actual_live_tasks, actual_draining_tasks = actual
        assert actual_live_tasks == expected_live_tasks
        assert actual_draining_tasks == expected_draining_tasks