def test_simulate_healthcheck_on_service_disabled(mock_sleep): mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = mock.MagicMock(spec_set=MarathonServiceConfig) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service( mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, False)
def test_simulate_healthcheck_on_service_disabled(mock_sleep): mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = mock.MagicMock(spec_set=MarathonServiceConfig) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service(mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, False)
def test_simulate_healthcheck_on_service_enabled_success(mock_run_healthcheck_on_container, mock_sleep): mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig('fake_name', 'fake_instance', { 'healthcheck_grace_period_seconds': 0, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' mock_run_healthcheck_on_container.return_value = True assert simulate_healthcheck_on_service( mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True)
def test_simulate_healthcheck_on_service_enabled_partial_failure(mock_run_healthcheck_on_container, mock_sleep): mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig('fake_name', 'fake_instance', { 'healthcheck_grace_period_seconds': 0, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service( mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True) # First run_healthcheck_on_container call happens silently assert mock_run_healthcheck_on_container.call_count == 5 assert mock_sleep.call_count == 3
def test_simulate_healthcheck_on_service_enabled_success( mock_run_healthcheck_on_container, mock_sleep): mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig( 'fake_name', 'fake_instance', { 'healthcheck_grace_period_seconds': 0, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' mock_run_healthcheck_on_container.return_value = True assert simulate_healthcheck_on_service(mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True)
def test_simulate_healthcheck_on_service_enabled_partial_failure( mock_run_healthcheck_on_container, mock_sleep): mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig( 'fake_name', 'fake_instance', { 'healthcheck_grace_period_seconds': 0, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service(mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True) # First run_healthcheck_on_container call happens silently assert mock_run_healthcheck_on_container.call_count == 5 assert mock_sleep.call_count == 3
def test_simulate_healthcheck_on_service_enabled_honors_grace_period( mock_run_healthcheck_on_container, mock_time, mock_sleep ): # change time to make sure we are sufficiently past grace period mock_time.side_effect = [0, 2] mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig('fake_name', 'fake_instance', { # only one healthcheck will be performed silently 'healthcheck_grace_period_seconds': 1, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service( mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True) assert mock_sleep.call_count == 0 assert mock_run_healthcheck_on_container.call_count == 2
def test_simulate_healthcheck_on_service_enabled_during_grace_period( mock_run_healthcheck_on_container, mock_time, mock_sleep ): # prevent grace period from ending mock_time.side_effect = [0, 0] mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig('fake_name', 'fake_instance', { 'healthcheck_grace_period_seconds': 1, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service( mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True) assert mock_sleep.call_count == 0 # First run_healthcheck_on_container call happens silently assert mock_run_healthcheck_on_container.call_count == 2
def test_simulate_healthcheck_on_service_enabled_during_grace_period( mock_run_healthcheck_on_container, mock_time, mock_sleep): # prevent grace period from ending mock_time.side_effect = [0, 0] mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig( 'fake_name', 'fake_instance', { 'healthcheck_grace_period_seconds': 1, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service(mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True) assert mock_sleep.call_count == 0 # First run_healthcheck_on_container call happens silently assert mock_run_healthcheck_on_container.call_count == 2
def test_simulate_healthcheck_on_service_enabled_honors_grace_period( mock_run_healthcheck_on_container, mock_time, mock_sleep): # change time to make sure we are sufficiently past grace period mock_time.side_effect = [0, 2] mock_docker_client = mock.MagicMock(spec_set=docker.Client) mock_service_manifest = MarathonServiceConfig( 'fake_name', 'fake_instance', { # only one healthcheck will be performed silently 'healthcheck_grace_period_seconds': 1, }, {}) fake_container_id = 'fake_container_id' fake_mode = 'http' fake_url = 'http://fake_host/fake_status_path' assert simulate_healthcheck_on_service(mock_service_manifest, mock_docker_client, fake_container_id, fake_mode, fake_url, True) assert mock_sleep.call_count == 0 assert mock_run_healthcheck_on_container.call_count == 2