def test_get_healthy_marathon_instances_for_short_app_id_considers_none_start_time_unhealthy(): fake_task = _make_fake_task("/service.instance.foo.bar", started_at=None) mock_result = mock.Mock(alive=True) fake_task.health_check_results = [mock_result] fakes = [fake_task] actual = check_marathon_services_replication.filter_healthy_marathon_instances_for_short_app_id( all_tasks=fakes, app_id="service.instance" ) assert actual == 0
def test_filter_healthy_marathon_instances_for_short_app_id_correctly_counts_alive_tasks(): fakes = [] for i in range(0, 4): fake_task = _make_fake_task(f"/service.instance.foo{i}.bar{i}") mock_result = mock.Mock(alive=i % 2 == 0) fake_task.health_check_results = [mock_result] fakes.append(fake_task) actual = check_marathon_services_replication.filter_healthy_marathon_instances_for_short_app_id( app_id="service.instance", all_tasks=fakes ) assert actual == 2
def test_filter_healthy_marathon_instances_for_short_app_id_considers_new_tasks_not_healthy_yet(): one_minute = timedelta(minutes=1) fakes = [] for i in range(0, 4): fake_task = _make_fake_task( f"/service.instance.foo{i}.bar{i}", # when i == 0, produces a task that has just started (not healthy yet) # otherwise produces a task that was started over a minute ago (healthy) started_at=datetime.now(timezone.utc) - one_minute * i, ) mock_result = mock.Mock(alive=True) fake_task.health_check_results = [mock_result] fakes.append(fake_task) actual = check_marathon_services_replication.filter_healthy_marathon_instances_for_short_app_id( all_tasks=fakes, app_id="service.instance" ) assert actual == 3