def test_dcos_task_metrics_agent_details(mocked_get_config_val, mocked_get_master, mocked_http_get): mocked_get_config_val.return_value = 'http://127.0.0.1' mock_http_response = MagicMock() mock_http_response.status_code = 200 mocked_http_get.return_value = mock_http_response mock_master = MagicMock() mock_master.task = lambda _: {'slave_id': 'slave_id'} mock_master.get_container_id = lambda _: { 'parent': {}, 'value': 'container_id' } mocked_get_master.return_value = mock_master _metrics(True, 'task_id', False) # Metrics should query both endpoints mocked_http_get.assert_any_call('http://127.0.0.1/system/v1/agent/' 'slave_id/metrics/v0/containers/' 'container_id/app') mocked_http_get.assert_any_call('http://127.0.0.1/system/v1/agent/' 'slave_id/metrics/v0/containers/' 'container_id')
def test_dcos_task_metrics_agent_missing_slave(mocked_get_config_val, mocked_get_master, mocked_http_get): mocked_get_config_val.return_value = 'http://127.0.0.1' mock_http_response = MagicMock() mock_http_response.status_code = 200 mocked_http_get.return_value = mock_http_response mock_master = MagicMock() mock_master.task = lambda _: {} mocked_get_master.return_value = mock_master # Should a task not have a slave ID, expect an error with pytest.raises(DCOSException): _metrics(True, 'task_id', False)
def test_dcos_task_metrics_agent_missing_both(mocked_get_config_val, mocked_get_master, mocked_http_get): mocked_get_config_val.return_value = 'http://127.0.0.1' mock_response = MagicMock() mock_response.status_code = 204 mocked_http_get.return_value = mock_response mock_master = MagicMock() mock_master.task = lambda _: {'slave_id': 'slave_id'} mock_master.get_container_id = lambda _: { 'parent': {}, 'value': 'container_id' } mocked_get_master.return_value = mock_master with pytest.raises(EmptyMetricsException): _metrics(True, 'task_id', False)
def test_dcos_task_metrics_agent_missing_container(mocked_get_config_val, mocked_get_master, mocked_http_get): mocked_get_config_val.return_value = 'http://127.0.0.1' mock_container_response = MagicMock() mock_container_response.status_code = 204 mock_app_response = MagicMock() mock_app_response.status_code = 200 mocked_http_get.side_effect = [mock_container_response, mock_app_response] mock_master = MagicMock() mock_master.task = lambda _: {'slave_id': 'slave_id'} mock_master.get_container_id = lambda _: { 'parent': {}, 'value': 'container_id' } mocked_get_master.return_value = mock_master _metrics(True, 'task_id', False)
def test_dcos_task_metrics_agent_details(mocked_get_config_val, mocked_get_master, mocked_http_get): mocked_get_config_val.return_value = 'http://127.0.0.1' mock_http_response = MagicMock() mock_http_response.status_code = 200 mocked_http_get.return_value = mock_http_response mock_master = MagicMock() mock_master.task = lambda _: {'slave_id': 'slave_id'} mock_master.get_container_id = lambda _: 'container_id' mocked_get_master.return_value = mock_master _metrics(True, 'task_id', False) # Metrics should query both endpoints mocked_http_get.assert_any_call('http://127.0.0.1/system/v1/agent/' 'slave_id/metrics/v0/containers/' 'container_id/app') mocked_http_get.assert_any_call('http://127.0.0.1/system/v1/agent/' 'slave_id/metrics/v0/containers/' 'container_id')