diff --git a/bentoml/tests/test_unit.py b/bentoml/tests/test_unit.py index 3ec90e358d026..0843e4ab750ba 100644 --- a/bentoml/tests/test_unit.py +++ b/bentoml/tests/test_unit.py @@ -1,7 +1,7 @@ # (C) Datadog, Inc. 2025-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from unittest.mock import Mock, patch +from unittest.mock import Mock import pytest import requests @@ -21,26 +21,20 @@ def test_bentoml_mock_metrics(dd_run_check, aggregator, mock_http_response): mock_http_response(file_path=get_fixture_path('metrics.txt')) - with patch('datadog_checks.bentoml.check.BentomlCheck.http') as mock_http: - mock_response = type('MockResponse', (), {'status_code': 200})() - mock_http.get.return_value = mock_response - mock_http.get.return_value.raise_for_status = lambda: None - - check = BentomlCheck('bentoml', {}, [OM_MOCKED_INSTANCE]) - dd_run_check(check) + check = BentomlCheck('bentoml', {}, [OM_MOCKED_INSTANCE]) + dd_run_check(check) - for metric in METRICS: - aggregator.assert_metric(metric) + for metric in METRICS: + aggregator.assert_metric(metric) - for metric in ENDPOINT_METRICS: - aggregator.assert_metric(metric, value=1, tags=['test:tag', 'status_code:200']) + for metric in ENDPOINT_METRICS: + aggregator.assert_metric(metric, value=1, tags=['test:tag', 'status_code:200']) - aggregator.assert_all_metrics_covered() - assert mock_http.get.call_count == 2 - aggregator.assert_metrics_using_metadata(get_metadata_metrics()) - aggregator.assert_all_metrics_covered() - aggregator.assert_metric_has_tag('bentoml.service.request.count', 'bentoml_endpoint:/summarize') - aggregator.assert_service_check('bentoml.openmetrics.health', ServiceCheck.OK) + aggregator.assert_all_metrics_covered() + aggregator.assert_metrics_using_metadata(get_metadata_metrics()) + aggregator.assert_all_metrics_covered() + aggregator.assert_metric_has_tag('bentoml.service.request.count', 'bentoml_endpoint:/summarize') + aggregator.assert_service_check('bentoml.openmetrics.health', ServiceCheck.OK) def test_bentoml_mock_invalid_endpoint(dd_run_check, aggregator, mock_http_response): @@ -53,7 +47,8 @@ def test_bentoml_mock_invalid_endpoint(dd_run_check, aggregator, mock_http_respo def test_bentoml_mock_valid_endpoint_invalid_health(dd_run_check, aggregator, mock_http_response): - mock_http_response(file_path=get_fixture_path('metrics.txt')) + session_get_mock = mock_http_response(file_path=get_fixture_path('metrics.txt')) + metrics_response = session_get_mock.return_value _err = Mock() _err.status_code = 500 @@ -61,13 +56,17 @@ def test_bentoml_mock_valid_endpoint_invalid_health(dd_run_check, aggregator, mo _http_err.response = _err _err.raise_for_status.side_effect = _http_err - with patch('datadog_checks.bentoml.check.BentomlCheck.http') as mock_http: - mock_http.get.return_value = _err + def dispatch(url, **_): + if '/livez' in url or '/readyz' in url: + return _err + return metrics_response - check = BentomlCheck('bentoml', {}, [OM_MOCKED_INSTANCE]) - dd_run_check(check) + session_get_mock.side_effect = dispatch + + check = BentomlCheck('bentoml', {}, [OM_MOCKED_INSTANCE]) + dd_run_check(check) - for metric in ENDPOINT_METRICS: - aggregator.assert_metric(metric, value=0, tags=['test:tag', 'status_code:500']) + for metric in ENDPOINT_METRICS: + aggregator.assert_metric(metric, value=0, tags=['test:tag', 'status_code:500']) - aggregator.assert_service_check('bentoml.openmetrics.health', ServiceCheck.OK) + aggregator.assert_service_check('bentoml.openmetrics.health', ServiceCheck.OK) diff --git a/couchbase/tests/conftest.py b/couchbase/tests/conftest.py index 5d5136982e14c..dfda5ee73fbb5 100644 --- a/couchbase/tests/conftest.py +++ b/couchbase/tests/conftest.py @@ -10,10 +10,10 @@ import pytest import requests +from datadog_checks.base.utils.http_testing import MockHTTPResponse # noqa: F401 from datadog_checks.couchbase import Couchbase from datadog_checks.dev import WaitFor, docker_run from datadog_checks.dev.docker import get_container_ip -from datadog_checks.dev.http import MockResponse from .common import ( BUCKET_NAME, @@ -301,4 +301,4 @@ def mock_http_responses(url, **_params): pytest.fail("url `{url}` not registered".format(url=url)) with open(os.path.join(HERE, 'fixtures', metrics_file)) as f: - return MockResponse(content=f.read()) + return MockHTTPResponse(content=f.read()) diff --git a/couchbase/tests/test_unit.py b/couchbase/tests/test_unit.py index 25a437c02f842..1836ea77f1e6e 100644 --- a/couchbase/tests/test_unit.py +++ b/couchbase/tests/test_unit.py @@ -124,8 +124,8 @@ def test_extract_index_tags(instance, test_input, expected_tags): assert eval(str(test_output)) == expected_tags -def test_unit(dd_run_check, check, instance, mocker, aggregator): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_unit(dd_run_check, check, instance, mock_http, aggregator): + mock_http.get.side_effect = mock_http_responses dd_run_check(check(instance)) @@ -140,8 +140,8 @@ def test_unit(dd_run_check, check, instance, mocker, aggregator): aggregator.assert_metrics_using_metadata(get_metadata_metrics()) -def test_unit_query_metrics(dd_run_check, check, instance_query, mocker, aggregator): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_unit_query_metrics(dd_run_check, check, instance_query, mock_http, aggregator): + mock_http.get.side_effect = mock_http_responses dd_run_check(check(instance_query)) diff --git a/datadog_checks_base/datadog_checks/base/checks/base.py b/datadog_checks_base/datadog_checks/base/checks/base.py index c059586cd2e40..67ca4e97f8dd4 100644 --- a/datadog_checks_base/datadog_checks/base/checks/base.py +++ b/datadog_checks_base/datadog_checks/base/checks/base.py @@ -63,7 +63,7 @@ import unicodedata as _module_unicodedata from datadog_checks.base.utils.diagnose import Diagnosis - from datadog_checks.base.utils.http import RequestsWrapper + from datadog_checks.base.utils.http_protocol import HTTPClientProtocol from datadog_checks.base.utils.metadata import MetadataManager inspect: _module_inspect = lazy_loader.load('inspect') @@ -376,7 +376,7 @@ def _get_metric_limit(self, instance=None): return limit @property - def http(self) -> RequestsWrapper: + def http(self) -> HTTPClientProtocol: """ Provides logic to yield consistent network behavior based on user configuration. diff --git a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper/base_scraper.py b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper/base_scraper.py index 65be700d603b6..a290beba400ab 100644 --- a/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper/base_scraper.py +++ b/datadog_checks_base/datadog_checks/base/checks/openmetrics/v2/scraper/base_scraper.py @@ -23,7 +23,6 @@ from datadog_checks.base.constants import ServiceCheck from datadog_checks.base.errors import ConfigurationError from datadog_checks.base.utils.functions import no_op, return_true -from datadog_checks.base.utils.http import RequestsWrapper class OpenMetricsScraper: @@ -215,18 +214,16 @@ def __init__(self, check, config): self.raw_line_filter = re.compile('|'.join(raw_line_filters)) - self.http = RequestsWrapper(config, self.check.init_config, self.check.HTTP_CONFIG_REMAPPER, self.check.log) + self.http = check.http self._content_type = '' self._use_latest_spec = is_affirmative(config.get('use_latest_spec', False)) if self._use_latest_spec: - accept_header = 'application/openmetrics-text;version=1.0.0,application/openmetrics-text;version=0.0.1' + self._accept_header = ( + 'application/openmetrics-text;version=1.0.0,application/openmetrics-text;version=0.0.1' + ) else: - accept_header = 'text/plain' - - # Request the appropriate exposition format - if self.http.options['headers'].get('Accept') == '*/*': - self.http.options['headers']['Accept'] = accept_header + self._accept_header = 'text/plain' self.use_process_start_time = is_affirmative(config.get('use_process_start_time')) @@ -463,6 +460,9 @@ def send_request(self, **kwargs): """ kwargs['stream'] = True + extra_headers = kwargs.get('extra_headers', {}) + extra_headers['Accept'] = self._accept_header + kwargs['extra_headers'] = extra_headers return self.http.get(self.endpoint, **kwargs) def set_dynamic_tags(self, *tags): diff --git a/datadog_checks_base/datadog_checks/base/utils/http_testing.py b/datadog_checks_base/datadog_checks/base/utils/http_testing.py index c5419c46bff37..8930187a49856 100644 --- a/datadog_checks_base/datadog_checks/base/utils/http_testing.py +++ b/datadog_checks_base/datadog_checks/base/utils/http_testing.py @@ -17,7 +17,7 @@ def __init__( content: str | bytes = '', status_code: int = 200, headers: dict[str, str] | None = None, - json_data: dict[str, Any] | None = None, + json_data: Any = None, file_path: str | None = None, cookies: dict[str, str] | None = None, elapsed_seconds: float = 0.1, diff --git a/datadog_checks_base/tests/base/checks/openmetrics/test_v2/test_config.py b/datadog_checks_base/tests/base/checks/openmetrics/test_v2/test_config.py index 0f3f6b7812e68..6ac0c5fe15880 100644 --- a/datadog_checks_base/tests/base/checks/openmetrics/test_v2/test_config.py +++ b/datadog_checks_base/tests/base/checks/openmetrics/test_v2/test_config.py @@ -417,7 +417,7 @@ def test_strict_latest_spec(self, dd_run_check): check = get_check({'use_latest_spec': True}) check.configure_scrapers() scraper = check.scrapers['test'] - assert scraper.http.options['headers']['Accept'] == ( + assert scraper._accept_header == ( 'application/openmetrics-text;version=1.0.0,application/openmetrics-text;version=0.0.1' ) @@ -425,4 +425,4 @@ def test_dynamic_spec(self, dd_run_check): check = get_check({'use_latest_spec': False}) check.configure_scrapers() scraper = check.scrapers['test'] - assert scraper.http.options['headers']['Accept'] == 'text/plain' + assert scraper._accept_header == 'text/plain' diff --git a/datadog_checks_dev/datadog_checks/dev/plugin/pytest.py b/datadog_checks_dev/datadog_checks/dev/plugin/pytest.py index e9f9c80a513f0..16317857ad87c 100644 --- a/datadog_checks_dev/datadog_checks/dev/plugin/pytest.py +++ b/datadog_checks_dev/datadog_checks/dev/plugin/pytest.py @@ -301,6 +301,19 @@ def mock_http_response(mocker, mock_response): ) +@pytest.fixture +def mock_http(mocker): + from unittest.mock import PropertyMock, create_autospec + + from datadog_checks.base.checks.base import AgentCheck + from datadog_checks.base.utils.http_protocol import HTTPClientProtocol + + client = create_autospec(HTTPClientProtocol) + client.options_method.side_effect = NotImplementedError('HTTP OPTIONS not yet supported in mock_http') + mocker.patch.object(AgentCheck, 'http', new_callable=PropertyMock, return_value=client) + return client + + @pytest.fixture def mock_http_response_per_endpoint(mocker, mock_response): @overload diff --git a/falco/tests/test_unit.py b/falco/tests/test_unit.py index c2a544b1f780a..fdb03f05bbc30 100644 --- a/falco/tests/test_unit.py +++ b/falco/tests/test_unit.py @@ -1,12 +1,10 @@ # (C) Datadog, Inc. 2025-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from unittest import mock - import pytest from datadog_checks.base.constants import ServiceCheck -from datadog_checks.dev.http import MockResponse +from datadog_checks.base.utils.http_testing import MockHTTPResponse from datadog_checks.dev.utils import get_metadata_metrics from datadog_checks.falco import FalcoCheck @@ -22,13 +20,11 @@ def test_empty_instance(dd_run_check): dd_run_check(check) -def test_check_falco(dd_run_check, aggregator, instance): - mock_responses = [ - MockResponse(file_path=get_fixture_path("falco_metrics.txt")), +def test_check_falco(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = [ + MockHTTPResponse(file_path=get_fixture_path("falco_metrics.txt")), ] - - with mock.patch('requests.Session.get', side_effect=mock_responses): - dd_run_check(FalcoCheck('falco', {}, [instance])) + dd_run_check(FalcoCheck('falco', {}, [instance])) for metric in METRICS: aggregator.assert_metric(metric) diff --git a/kubevirt_api/tests/conftest.py b/kubevirt_api/tests/conftest.py index 8556cf4d3956d..81af61164d28d 100644 --- a/kubevirt_api/tests/conftest.py +++ b/kubevirt_api/tests/conftest.py @@ -7,8 +7,8 @@ import pytest import yaml +from datadog_checks.base.utils.http_testing import MockHTTPResponse # noqa: F401 from datadog_checks.dev import get_here, run_command -from datadog_checks.dev.http import MockResponse from datadog_checks.dev.kind import kind_run from datadog_checks.dev.kube_port_forward import port_forward @@ -105,4 +105,4 @@ def mock_http_responses(url, **_params): raise Exception(f"url `{url}` not registered") with open(os.path.join(HERE, "fixtures", fixtures_file)) as f: - return MockResponse(content=f.read()) + return MockHTTPResponse(content=f.read()) diff --git a/kubevirt_api/tests/test_unit.py b/kubevirt_api/tests/test_unit.py index 1a4b040e86d05..0179b6c93586b 100644 --- a/kubevirt_api/tests/test_unit.py +++ b/kubevirt_api/tests/test_unit.py @@ -17,8 +17,8 @@ pytestmark = [pytest.mark.unit] -def test_check_collects_all_metrics(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check_collects_all_metrics(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtApiCheck("kubevirt_api", {}, [instance]) @@ -94,8 +94,8 @@ def test_check_collects_all_metrics(dd_run_check, aggregator, instance, mocker): aggregator.assert_metrics_using_metadata(get_metadata_metrics()) -def test_check_sends_zero_count_for_vms(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check_sends_zero_count_for_vms(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtApiCheck("kubevirt_api", {}, [instance]) @@ -115,8 +115,8 @@ def test_check_sends_zero_count_for_vms(dd_run_check, aggregator, instance, mock aggregator.assert_metric("kubevirt_api.vm.count", value=0) -def test_check_sends_zero_count_for_vmis(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check_sends_zero_count_for_vmis(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtApiCheck("kubevirt_api", {}, [instance]) @@ -153,8 +153,8 @@ def test_emits_zero_can_connect_when_service_is_down(dd_run_check, aggregator, i ) -def test_emits_one_can_connect_when_service_is_up(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_emits_one_can_connect_when_service_is_up(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtApiCheck("kubevirt_api", {}, [instance]) check._setup_kube_client = lambda: None @@ -170,8 +170,8 @@ def test_emits_one_can_connect_when_service_is_up(dd_run_check, aggregator, inst ) -def test_raise_exception_when_metrics_endpoint_is_bad(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_raise_exception_when_metrics_endpoint_is_bad(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtApiCheck("kubevirt_api", {}, [BAD_METRICS_HOSTNAME_INSTANCE]) check._setup_kube_client = lambda: None @@ -189,8 +189,8 @@ def test_raise_exception_when_metrics_endpoint_is_bad(dd_run_check, aggregator, ) -def test_raise_exception_cannot_connect_to_kubernetes_api(dd_run_check, aggregator, instance, mocker, caplog): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_raise_exception_cannot_connect_to_kubernetes_api(dd_run_check, aggregator, instance, mock_http, caplog): + mock_http.get.side_effect = mock_http_responses check = KubeVirtApiCheck("kubevirt_api", {}, [instance]) with pytest.raises( @@ -201,8 +201,8 @@ def test_raise_exception_cannot_connect_to_kubernetes_api(dd_run_check, aggregat assert "Cannot connect to Kubernetes API:" in caplog.text -def test_log_warning_healthz_endpoint_not_provided(dd_run_check, aggregator, instance, mocker, caplog): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_log_warning_healthz_endpoint_not_provided(dd_run_check, aggregator, instance, mock_http, caplog): + mock_http.get.side_effect = mock_http_responses new_instance = deepcopy(instance) new_instance.pop("kubevirt_api_healthz_endpoint") diff --git a/kubevirt_controller/tests/conftest.py b/kubevirt_controller/tests/conftest.py index e0e0174775b60..b2512fba1a7b4 100644 --- a/kubevirt_controller/tests/conftest.py +++ b/kubevirt_controller/tests/conftest.py @@ -7,8 +7,8 @@ import pytest import yaml +from datadog_checks.base.utils.http_testing import MockHTTPResponse # noqa: F401 from datadog_checks.dev import get_here, run_command -from datadog_checks.dev.http import MockResponse from datadog_checks.dev.kind import kind_run from datadog_checks.dev.kube_port_forward import port_forward @@ -101,4 +101,4 @@ def mock_http_responses(url, **_params): raise Exception(f"url `{url}` not registered") with open(os.path.join(HERE, "fixtures", fixtures_file)) as f: - return MockResponse(content=f.read()) + return MockHTTPResponse(content=f.read()) diff --git a/kubevirt_controller/tests/test_unit.py b/kubevirt_controller/tests/test_unit.py index 0a6bcb988a40c..1b4aa53fe488a 100644 --- a/kubevirt_controller/tests/test_unit.py +++ b/kubevirt_controller/tests/test_unit.py @@ -15,8 +15,8 @@ ] -def test_emits_can_connect_one_when_service_is_up(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_emits_can_connect_one_when_service_is_up(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtControllerCheck("kubevirt_controller", {}, [instance]) dd_run_check(check) aggregator.assert_metric( @@ -35,8 +35,8 @@ def test_emits_can_connect_zero_when_service_is_down(dd_run_check, aggregator, i ) -def test_check_collects_all_metrics(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check_collects_all_metrics(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtControllerCheck("kubevirt_controller", {}, [instance]) diff --git a/kubevirt_handler/tests/conftest.py b/kubevirt_handler/tests/conftest.py index 7bc0bc1bad6d3..294abc17ab1e9 100644 --- a/kubevirt_handler/tests/conftest.py +++ b/kubevirt_handler/tests/conftest.py @@ -6,8 +6,8 @@ import pytest +from datadog_checks.base.utils.http_testing import MockHTTPResponse # noqa: F401 from datadog_checks.dev import get_here, run_command -from datadog_checks.dev.http import MockResponse from datadog_checks.dev.kind import kind_run from datadog_checks.dev.kube_port_forward import port_forward @@ -89,4 +89,4 @@ def mock_http_responses(url, **_params): raise Exception(f"url `{url}` not registered") with open(os.path.join(HERE, "fixtures", fixtures_file)) as f: - return MockResponse(content=f.read()) + return MockHTTPResponse(content=f.read()) diff --git a/kubevirt_handler/tests/test_unit.py b/kubevirt_handler/tests/test_unit.py index 01e8e42c4a9ba..28561e3e5a327 100644 --- a/kubevirt_handler/tests/test_unit.py +++ b/kubevirt_handler/tests/test_unit.py @@ -16,8 +16,8 @@ ] -def test_check_collects_metrics(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check_collects_metrics(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtHandlerCheck("kubevirt_handler", {}, [instance]) dd_run_check(check) @@ -121,8 +121,8 @@ def test_check_collects_metrics(dd_run_check, aggregator, instance, mocker): aggregator.assert_metrics_using_metadata(get_metadata_metrics()) -def test_logs_warning_when_healthz_endpoint_is_missing(dd_run_check, aggregator, instance, mocker, caplog): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_logs_warning_when_healthz_endpoint_is_missing(dd_run_check, aggregator, instance, mock_http, caplog): + mock_http.get.side_effect = mock_http_responses del instance["kubevirt_handler_healthz_endpoint"] check = KubeVirtHandlerCheck("kubevirt_handler", {}, [instance]) dd_run_check(check) @@ -133,8 +133,8 @@ def test_logs_warning_when_healthz_endpoint_is_missing(dd_run_check, aggregator, ) -def test_emits_can_connect_one_when_service_is_up(dd_run_check, aggregator, instance, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_emits_can_connect_one_when_service_is_up(dd_run_check, aggregator, instance, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtHandlerCheck("kubevirt_handler", {}, [instance]) dd_run_check(check) aggregator.assert_metric( @@ -156,8 +156,8 @@ def test_emits_can_connect_zero_when_service_is_down(dd_run_check, aggregator, i ) -def test_version_metadata(instance, dd_run_check, datadog_agent, aggregator, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_version_metadata(instance, dd_run_check, datadog_agent, aggregator, mock_http): + mock_http.get.side_effect = mock_http_responses check = KubeVirtHandlerCheck("kubevirt_handler", {}, [instance]) check.check_id = "test:123" dd_run_check(check) diff --git a/openmetrics/tests/test_openmetrics.py b/openmetrics/tests/test_openmetrics.py index f0212951b1bde..39e7da3383ba3 100644 --- a/openmetrics/tests/test_openmetrics.py +++ b/openmetrics/tests/test_openmetrics.py @@ -64,7 +64,7 @@ def test_openmetrics(aggregator, dd_run_check, request, poll_mock_fixture): aggregator.assert_all_metrics_covered() assert check.http.options['headers']['Accept'] == '*/*' - assert scraper.http.options['headers']['Accept'] == 'text/plain' + assert scraper._accept_header == 'text/plain' def test_openmetrics_use_latest_spec(aggregator, dd_run_check, mock_http_response, openmetrics_payload, caplog): @@ -97,7 +97,7 @@ def test_openmetrics_use_latest_spec(aggregator, dd_run_check, mock_http_respons assert check.http.options['headers']['Accept'] == '*/*' assert caplog.text == '' - assert scraper.http.options['headers']['Accept'] == ( + assert scraper._accept_header == ( 'application/openmetrics-text;version=1.0.0,application/openmetrics-text;version=0.0.1' ) diff --git a/ray/tests/common.py b/ray/tests/common.py index 19b0c9f911678..d51a4faaf0061 100644 --- a/ray/tests/common.py +++ b/ray/tests/common.py @@ -4,8 +4,8 @@ import os +from datadog_checks.base.utils.http_testing import MockHTTPResponse from datadog_checks.dev import get_docker_hostname, get_here -from datadog_checks.dev.http import MockResponse HERE = get_here() @@ -333,4 +333,4 @@ def mock_http_responses(url, **_params): raise Exception(f"url `{url}` not registered") with open(os.path.join(HERE, 'fixtures', metrics_file)) as f: - return MockResponse(content=f.read()) + return MockHTTPResponse(content=f.read()) diff --git a/ray/tests/test_unit.py b/ray/tests/test_unit.py index f2e7725b5287f..4be5c8aa13ba9 100644 --- a/ray/tests/test_unit.py +++ b/ray/tests/test_unit.py @@ -16,8 +16,8 @@ pytest.param(MOCKED_WORKER_INSTANCE, WORKER_METRICS, id='worker'), ], ) -def test_check(dd_run_check, aggregator, mocker, check, instance, metrics): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check(dd_run_check, aggregator, mock_http, check, instance, metrics): + mock_http.get.side_effect = mock_http_responses dd_run_check(check(instance)) for expected_metric in metrics: @@ -30,10 +30,10 @@ def test_check(dd_run_check, aggregator, mocker, check, instance, metrics): assert len(aggregator.service_check_names) == 1 -def test_invalid_url(dd_run_check, aggregator, check, mocked_head_instance, mocker): +def test_invalid_url(dd_run_check, aggregator, check, mocked_head_instance, mock_http): mocked_head_instance["openmetrics_endpoint"] = "http://unknowwn" - mocker.patch("requests.Session.get", wraps=mock_http_responses) + mock_http.get.side_effect = mock_http_responses with pytest.raises(Exception): dd_run_check(check(mocked_head_instance)) diff --git a/strimzi/tests/conftest.py b/strimzi/tests/conftest.py index 0499c622ed9bb..16ce3da9f2b10 100644 --- a/strimzi/tests/conftest.py +++ b/strimzi/tests/conftest.py @@ -8,8 +8,8 @@ import pytest +from datadog_checks.base.utils.http_testing import MockHTTPResponse # noqa: F401 from datadog_checks.dev import run_command -from datadog_checks.dev.http import MockResponse from datadog_checks.dev.kind import kind_run from datadog_checks.dev.kube_port_forward import port_forward from datadog_checks.strimzi import StrimziCheck @@ -103,4 +103,4 @@ def mock_http_responses(url, **_params): pytest.fail(f"url `{url}` not registered") with open(os.path.join(HERE, 'fixtures', STRIMZI_VERSION, metrics_file)) as f: - return MockResponse(content=f.read()) + return MockHTTPResponse(content=f.read()) diff --git a/strimzi/tests/test_unit.py b/strimzi/tests/test_unit.py index 0c9475cefab1a..1cfb28a5478c1 100644 --- a/strimzi/tests/test_unit.py +++ b/strimzi/tests/test_unit.py @@ -54,9 +54,9 @@ def test_check_unique_operator( instance, metrics, tag, - mocker, + mock_http, ): - mocker.patch("requests.Session.get", wraps=mock_http_responses) + mock_http.get.side_effect = mock_http_responses dd_run_check(check(instance)) for expected_metric in metrics: @@ -75,8 +75,8 @@ def test_check_unique_operator( assert len(aggregator.service_check_names) == 1 -def test_check_all_operators(dd_run_check, aggregator, check, mocker): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check_all_operators(dd_run_check, aggregator, check, mock_http): + mock_http.get.side_effect = mock_http_responses dd_run_check( check( { diff --git a/tekton/tests/common.py b/tekton/tests/common.py index 0203124213c86..a1d36404d371a 100644 --- a/tekton/tests/common.py +++ b/tekton/tests/common.py @@ -3,8 +3,8 @@ # Licensed under a 3-clause BSD style license (see LICENSE) import os +from datadog_checks.base.utils.http_testing import MockHTTPResponse from datadog_checks.dev import get_here -from datadog_checks.dev.http import MockResponse from datadog_checks.tekton import TektonCheck HERE = get_here() @@ -152,4 +152,4 @@ def mock_http_responses(url, **_params): raise Exception(f"url `{url}` not registered") with open(os.path.join(HERE, 'fixtures', metrics_file)) as f: - return MockResponse(content=f.read()) + return MockHTTPResponse(content=f.read()) diff --git a/tekton/tests/test_unit.py b/tekton/tests/test_unit.py index 0010a2eae466d..de85f1b0857fb 100644 --- a/tekton/tests/test_unit.py +++ b/tekton/tests/test_unit.py @@ -16,8 +16,8 @@ pytest.param('triggers_instance', TRIGGERS_METRICS, 'triggers_controller', id='triggers'), ], ) -def test_check(dd_run_check, aggregator, mocker, instance, metrics, request, namespace): - mocker.patch("requests.Session.get", wraps=mock_http_responses) +def test_check(dd_run_check, aggregator, mock_http, instance, metrics, request, namespace): + mock_http.get.side_effect = mock_http_responses dd_run_check(check(request.getfixturevalue(instance))) for expected_metric in metrics: @@ -30,10 +30,10 @@ def test_check(dd_run_check, aggregator, mocker, instance, metrics, request, nam assert len(aggregator.service_check_names) == 1 -def test_invalid_url(dd_run_check, aggregator, pipelines_instance, mocker): +def test_invalid_url(dd_run_check, aggregator, pipelines_instance, mock_http): pipelines_instance["pipelines_controller_endpoint"] = "http://unknowwn" - mocker.patch("requests.Session.get", wraps=mock_http_responses) + mock_http.get.side_effect = mock_http_responses with pytest.raises(Exception): dd_run_check(check(pipelines_instance)) diff --git a/vault/datadog_checks/vault/check.py b/vault/datadog_checks/vault/check.py index 5726d1eb4bc35..3661256185999 100644 --- a/vault/datadog_checks/vault/check.py +++ b/vault/datadog_checks/vault/check.py @@ -238,8 +238,12 @@ def configure_scrapers(self): }, } } + if hasattr(self, '_http'): + del self._http + self.http.options['headers']['X-Vault-Request'] = 'true' if self.config.client_token: config['headers']['X-Vault-Token'] = self.config.client_token + self.http.options['headers']['X-Vault-Token'] = self.config.client_token self.scraper_configs.clear() self.scraper_configs.append(config)