datadog-checks-base 37.8.0__tar.gz → 37.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/PKG-INFO +10 -9
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/__about__.py +1 -1
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/base.py +25 -16
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/scraper.py +17 -6
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/aggregator.py +2 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/datadog_agent.py +1 -1
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/statement_metrics.py +23 -3
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/pyproject.toml +11 -8
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_first_scrape_handler.py +45 -38
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/test_agent_check.py +6 -1
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_db_statements.py +121 -0
- datadog_checks_base-37.10.0/tests/stubs/test_assert_metric.py +17 -0
- datadog_checks_base-37.8.0/datadog_checks/base/ddyaml.py +0 -171
- datadog_checks_base-37.8.0/tests/base/test_ddyaml.py +0 -103
- datadog_checks_base-37.8.0/tests/fixtures/ddyaml/valid_conf.yaml +0 -4
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/.gitignore +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/README.md +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/agent.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kube_leader/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kube_leader/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kube_leader/base_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kube_leader/mixins.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kube_leader/record.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kubelet_base/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kubelet_base/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/kubelet_base/base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/libs/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/libs/prometheus.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/libs/thread_pool.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/libs/timer.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/libs/vmware/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/libs/vmware/all_metrics.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/libs/vmware/basic_metrics.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/logs/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/logs/crawler/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/logs/crawler/base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/logs/crawler/stream.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/network.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/base_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/mixins.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/first_scrape_handler.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/labels.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/metrics.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transform.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/counter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/counter_gauge.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/gauge.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/histogram.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/metadata.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/rate.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/service_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/summary.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/temporal_percent.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/transformers/time_elapsed.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/openmetrics/v2/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/prometheus/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/prometheus/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/prometheus/base_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/prometheus/mixins.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/prometheus/prometheus_base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/winpdh.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/winpdh_base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/winpdh_stub.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/wmi/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/wmi/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/wmi/base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/wmi/counter_type.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/wmi/sampler.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/win/wmi/types.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/connection.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/constants.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/counter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transform.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/count.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/gauge.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/monotonic_count.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/rate.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/service_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/temporal_percent.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/transformers/time_elapsed.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/windows/perf_counters/utils_win32pdh_fix.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/config.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/constants.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/errors.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/log.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/_util.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/common.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/log.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/similar.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/tagging.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/types.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/_http_utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/agent/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/agent/common.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/agent/debug.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/agent/memory.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/agent/packages.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/agent/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/aws.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/common.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/concurrency/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/concurrency/limiter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/constants.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/containers.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/date.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/core.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/query.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/sql.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/sql_commenter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/timed_cache.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/transform.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/types.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/db/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/diagnose.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/discovery/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/discovery/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/discovery/cache.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/discovery/discovery.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/discovery/filter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/fips.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/format/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/format/_json.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/format/json.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/functions.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/headers.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/http.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/limiter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/metadata/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/metadata/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/metadata/constants.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/metadata/core.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/metadata/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/metadata/version.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/models/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/models/types.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/models/validation/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/models/validation/core.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/models/validation/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/network.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/platform.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/prometheus/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/prometheus/__init__.pyi +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/prometheus/functions.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/prometheus/metrics_pb2.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/replay/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/replay/constants.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/replay/execute.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/replay/redirect.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/secrets.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/serialization.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/subprocess_output.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/tagging.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/tailfile.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/time.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/timeout.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/tls.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/tracing.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/utils/tracking.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/thread_pool.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/timer.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/vmware/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/vmware/all_metrics.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/vmware/basic_metrics.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/wmi/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/libs/wmi/sampler.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/network.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/network_checks.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/openmetrics/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/openmetrics/base_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/openmetrics/mixins.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/prometheus/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/prometheus/base_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/prometheus/mixins.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/prometheus/prometheus_base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/prometheus_check/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/win/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/win/winpdh.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/win/winpdh_base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/win/winpdh_stub.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/win/wmi/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/win/wmi/counter_type.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/win/wmi/sampler.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/checks/winwmi_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/config.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/errors.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/log.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/py.typed +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/stubs/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/stubs/_util.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/stubs/aggregator.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/stubs/datadog_agent.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/common.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/containers.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/headers.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/limiter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/platform.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/prometheus/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/prometheus/functions.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/prometheus/metrics_pb2.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/proxy.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/subprocess_output.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/tailfile.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/timeout.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/utils/tracing.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/hatch.toml +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/logs/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/logs/crawler/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/logs/crawler/test_base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/bench_utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_legacy/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_legacy/test_bench.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_legacy/test_compat_scraper.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_legacy/test_openmetrics.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_legacy/test_openmetrics_base_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_legacy/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_bench.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_config.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_interface.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_options.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_counter_gauge.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_gauge.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_histogram.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_metadata.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_native_dynamic.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_rate.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_service_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_summary.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_temporal_percent.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_time_elapsed.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/test_transformers/test_type_override.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/openmetrics/test_v2/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/prometheus/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/prometheus/test_prometheus.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/prometheus/test_prometheus_base_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/test_kube_leader.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/test_kubelet_base.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/win/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/win/test_pdhbasecheck.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/win/test_winpdh.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/win/test_wmicheck.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/win/test_wmisampler.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/conftest.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_aggregation.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_config.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_filter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_health.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_integration.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_legacy_support.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_localization.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_refresh.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/test_subclass.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/test_count.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/test_gauge.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/test_monotonic_count.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/test_rate.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/test_service_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/test_temporal_percent.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/transformers/test_time_elapsed.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/windows/perf_counters/utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/test_constants.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/concurrency/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/concurrency/test_limiter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/common.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_custom_queries.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_db_sql.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_query_executor.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_query_manager.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_query_result.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_sql_commenter.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_timed_cache.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_transformers.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_util.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/discovery/test_discovery.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/format/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/format/test_json.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/common.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_api.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_auth.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_authtoken.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_config.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_headers.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_http.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_kerberos_int.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_kerberos_unit.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_proxy.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_socks5_proxy_integration.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/http/test_tls_and_certs.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/replay/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/replay/test_check.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_agent_packages.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_agent_utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_aws.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_diagnose.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_fips.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_time.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_tls.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_tracing.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_tracking.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/test_utils.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-agent/Dockerfile +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-agent/configurekerberos.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-agent/configurenginx.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-agent/entrypoint.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-agent/nginx.yaml +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-agent.yaml +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-kdc/Dockerfile +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-kdc/init.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-kdc/kdc.conf +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-kdc/krb5.conf +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-nginx/Dockerfile +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-nginx/configurekerberos.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-nginx/configurenginx.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-nginx/entrypoint.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-nginx/nginx.conf +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos-nginx/setupkeytab.sh +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/kerberos/kerberos.yaml +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/socks5-proxy.yaml +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/uds/uds-nginx/nginx.conf +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/uds/uds-nginx/templates/default.conf.template +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/compose/uds/uds.yaml +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/conftest.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/bearer_tokens/custom_token +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/bearer_tokens/default_token +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/dcos/private-key.pem +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/dcos/public-key.pem +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/kerberos/krb5.conf +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/kubelet_base/pod_list_raw.dat +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/kubelet_base/pod_list_raw.json +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/prometheus/amazon_msk_jmx_metrics.txt +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/prometheus/deprecated.txt +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/prometheus/ksm.txt +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/prometheus/metrics.txt +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/fixtures/prometheus/protobuf.bin +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/config_models/__init__.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/config_models/defaults.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/config_models/deprecations.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/config_models/instance.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/config_models/shared.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/config_models/validators.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/data/spec.yaml +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/test_interface.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/models/test_types.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/stubs/test_aggregator_metric_has_tag.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/stubs/test_aggregator_no_duplicate.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/stubs/test_aggregator_service_checks.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/stubs/test_aggregator_similar.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/stubs/test_datadog_agent.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/test_config.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/test_log.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/test_metadata.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/test_serialization.py +0 -0
- {datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/test_zzz_run_last.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datadog-checks-base
|
|
3
|
-
Version: 37.
|
|
3
|
+
Version: 37.10.0
|
|
4
4
|
Summary: The Datadog Check Toolkit
|
|
5
5
|
Project-URL: Source, https://github.com/DataDog/integrations-core
|
|
6
6
|
Author-email: Datadog <packages@datadoghq.com>
|
|
@@ -17,33 +17,34 @@ Requires-Dist: mmh3==5.1.0; extra == 'db'
|
|
|
17
17
|
Provides-Extra: deps
|
|
18
18
|
Requires-Dist: binary==1.0.1; extra == 'deps'
|
|
19
19
|
Requires-Dist: cachetools==5.5.2; extra == 'deps'
|
|
20
|
-
Requires-Dist: cryptography==44.0.
|
|
21
|
-
Requires-Dist: ddtrace==2.
|
|
20
|
+
Requires-Dist: cryptography==44.0.2; extra == 'deps'
|
|
21
|
+
Requires-Dist: ddtrace==2.21.4; extra == 'deps'
|
|
22
22
|
Requires-Dist: jellyfish==1.1.3; extra == 'deps'
|
|
23
23
|
Requires-Dist: lazy-loader==0.4; extra == 'deps'
|
|
24
24
|
Requires-Dist: prometheus-client==0.21.1; extra == 'deps'
|
|
25
|
-
Requires-Dist: protobuf==
|
|
26
|
-
Requires-Dist: pydantic==2.
|
|
25
|
+
Requires-Dist: protobuf==6.30.2; extra == 'deps'
|
|
26
|
+
Requires-Dist: pydantic==2.11.1; extra == 'deps'
|
|
27
27
|
Requires-Dist: python-dateutil==2.9.0.post0; extra == 'deps'
|
|
28
|
-
Requires-Dist: pywin32==
|
|
28
|
+
Requires-Dist: pywin32==310; (sys_platform == 'win32') and extra == 'deps'
|
|
29
29
|
Requires-Dist: pyyaml==6.0.2; extra == 'deps'
|
|
30
30
|
Requires-Dist: requests-toolbelt==1.0.0; extra == 'deps'
|
|
31
31
|
Requires-Dist: requests-unixsocket2==0.4.2; extra == 'deps'
|
|
32
32
|
Requires-Dist: requests==2.32.3; extra == 'deps'
|
|
33
33
|
Requires-Dist: simplejson==3.20.1; extra == 'deps'
|
|
34
|
+
Requires-Dist: urllib3==2.3.0; extra == 'deps'
|
|
34
35
|
Requires-Dist: wrapt==1.17.2; extra == 'deps'
|
|
35
36
|
Provides-Extra: http
|
|
36
37
|
Requires-Dist: aws-requests-auth==0.4.3; extra == 'http'
|
|
37
|
-
Requires-Dist: botocore==1.
|
|
38
|
+
Requires-Dist: botocore==1.37.23; extra == 'http'
|
|
38
39
|
Requires-Dist: oauthlib==3.2.2; extra == 'http'
|
|
39
40
|
Requires-Dist: pyjwt==2.10.1; extra == 'http'
|
|
40
|
-
Requires-Dist: pyopenssl==
|
|
41
|
+
Requires-Dist: pyopenssl==25.0.0; extra == 'http'
|
|
41
42
|
Requires-Dist: pysocks==1.7.1; extra == 'http'
|
|
42
43
|
Requires-Dist: requests-kerberos==0.15.0; extra == 'http'
|
|
43
44
|
Requires-Dist: requests-ntlm==1.3.0; extra == 'http'
|
|
44
45
|
Requires-Dist: requests-oauthlib==2.0.0; extra == 'http'
|
|
45
46
|
Provides-Extra: json
|
|
46
|
-
Requires-Dist: orjson==3.10.
|
|
47
|
+
Requires-Dist: orjson==3.10.16; extra == 'json'
|
|
47
48
|
Provides-Extra: kube
|
|
48
49
|
Requires-Dist: kubernetes==32.0.1; extra == 'kube'
|
|
49
50
|
Requires-Dist: requests-oauthlib==2.0.0; extra == 'kube'
|
{datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/checks/base.py
RENAMED
|
@@ -57,11 +57,6 @@ else:
|
|
|
57
57
|
|
|
58
58
|
init_logging()
|
|
59
59
|
|
|
60
|
-
if datadog_agent.get_config('disable_unsafe_yaml'):
|
|
61
|
-
from ..ddyaml import monkey_patch_pyyaml
|
|
62
|
-
|
|
63
|
-
monkey_patch_pyyaml()
|
|
64
|
-
|
|
65
60
|
if datadog_agent.get_config('integration_tracing'):
|
|
66
61
|
from ddtrace import patch
|
|
67
62
|
|
|
@@ -386,17 +381,6 @@ class AgentCheck(object):
|
|
|
386
381
|
|
|
387
382
|
return limit
|
|
388
383
|
|
|
389
|
-
@staticmethod
|
|
390
|
-
def load_config(yaml_str):
|
|
391
|
-
# type: (str) -> Any
|
|
392
|
-
"""
|
|
393
|
-
Convenience wrapper to ease programmatic use of this class from the C API.
|
|
394
|
-
"""
|
|
395
|
-
# See Performance Optimizations in this package's README.md.
|
|
396
|
-
import yaml
|
|
397
|
-
|
|
398
|
-
return yaml.safe_load(yaml_str)
|
|
399
|
-
|
|
400
384
|
@property
|
|
401
385
|
def http(self) -> RequestsWrapper:
|
|
402
386
|
"""
|
|
@@ -1485,3 +1469,28 @@ class AgentCheck(object):
|
|
|
1485
1469
|
|
|
1486
1470
|
for m in metrics:
|
|
1487
1471
|
self.gauge(m.name, m.value, tags=tags, raw=True)
|
|
1472
|
+
|
|
1473
|
+
@staticmethod
|
|
1474
|
+
def load_config(yaml_str: str) -> Any:
|
|
1475
|
+
"""
|
|
1476
|
+
Convenience wrapper to ease programmatic use of this class from the C API.
|
|
1477
|
+
"""
|
|
1478
|
+
import subprocess
|
|
1479
|
+
import sys
|
|
1480
|
+
|
|
1481
|
+
process = subprocess.Popen(
|
|
1482
|
+
[sys.executable, '-c', 'import sys, yaml; print(yaml.safe_load(sys.stdin.read()))'],
|
|
1483
|
+
stdin=subprocess.PIPE,
|
|
1484
|
+
stdout=subprocess.PIPE,
|
|
1485
|
+
stderr=subprocess.PIPE,
|
|
1486
|
+
)
|
|
1487
|
+
stdout, stderr = process.communicate(yaml_str.encode())
|
|
1488
|
+
if process.returncode != 0:
|
|
1489
|
+
raise ValueError(f'Failed to load config: {stderr.decode()}')
|
|
1490
|
+
|
|
1491
|
+
decoded = stdout.strip().decode()
|
|
1492
|
+
try:
|
|
1493
|
+
return eval(decoded)
|
|
1494
|
+
# a single, literal unquoted string
|
|
1495
|
+
except Exception:
|
|
1496
|
+
return decoded
|
|
@@ -230,13 +230,13 @@ class OpenMetricsScraper:
|
|
|
230
230
|
self.use_process_start_time = is_affirmative(config.get('use_process_start_time'))
|
|
231
231
|
|
|
232
232
|
# Used for monotonic counts
|
|
233
|
-
self.flush_first_value =
|
|
233
|
+
self.flush_first_value = None
|
|
234
234
|
|
|
235
|
-
def
|
|
235
|
+
def _scrape(self):
|
|
236
236
|
"""
|
|
237
237
|
Execute a scrape, and for each metric collected, transform the metric.
|
|
238
238
|
"""
|
|
239
|
-
runtime_data = {'flush_first_value': self.flush_first_value, 'static_tags': self.static_tags}
|
|
239
|
+
runtime_data = {'flush_first_value': bool(self.flush_first_value), 'static_tags': self.static_tags}
|
|
240
240
|
|
|
241
241
|
# Determine which consume method to use based on target_info config
|
|
242
242
|
if self.target_info:
|
|
@@ -251,7 +251,18 @@ class OpenMetricsScraper:
|
|
|
251
251
|
|
|
252
252
|
transformer(metric, self.generate_sample_data(metric), runtime_data)
|
|
253
253
|
|
|
254
|
-
|
|
254
|
+
def scrape(self):
|
|
255
|
+
try:
|
|
256
|
+
self._scrape()
|
|
257
|
+
self.flush_first_value = True
|
|
258
|
+
except:
|
|
259
|
+
# Don't flush new monotonic counts on next scrape:
|
|
260
|
+
# 1. Previous value may have expired in the aggregator, causing a spike
|
|
261
|
+
# 2. New counter itself may be too old and large when we discover it next time.
|
|
262
|
+
# If we didn't have a successful scrape yet, keep the initial value (use process_start_time to decide).
|
|
263
|
+
if self.flush_first_value:
|
|
264
|
+
self.flush_first_value = False
|
|
265
|
+
raise
|
|
255
266
|
|
|
256
267
|
def consume_metrics(self, runtime_data):
|
|
257
268
|
"""
|
|
@@ -260,7 +271,7 @@ class OpenMetricsScraper:
|
|
|
260
271
|
|
|
261
272
|
metric_parser = self.parse_metrics()
|
|
262
273
|
|
|
263
|
-
if
|
|
274
|
+
if self.flush_first_value is None and self.use_process_start_time:
|
|
264
275
|
metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
|
|
265
276
|
if self.label_aggregator.configured:
|
|
266
277
|
metric_parser = self.label_aggregator(metric_parser)
|
|
@@ -283,7 +294,7 @@ class OpenMetricsScraper:
|
|
|
283
294
|
|
|
284
295
|
metric_parser = self.parse_metrics()
|
|
285
296
|
|
|
286
|
-
if
|
|
297
|
+
if self.flush_first_value is None and self.use_process_start_time:
|
|
287
298
|
metric_parser = first_scrape_handler(metric_parser, runtime_data, datadog_agent.get_process_start_time())
|
|
288
299
|
if self.label_aggregator.configured:
|
|
289
300
|
metric_parser = self.label_aggregator(metric_parser)
|
{datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/datadog_checks/base/stubs/aggregator.py
RENAMED
|
@@ -341,6 +341,8 @@ class AggregatorStub(object):
|
|
|
341
341
|
if expected_tags and expected_tags != sorted(metric.tags):
|
|
342
342
|
continue
|
|
343
343
|
|
|
344
|
+
# to assert hostname is None, pass in hostname as '':
|
|
345
|
+
# https://github.com/DataDog/integrations-core/blob/7.65.x/datadog_checks_base/datadog_checks/base/checks/base.py#L760
|
|
344
346
|
if hostname is not None and hostname != metric.hostname:
|
|
345
347
|
continue
|
|
346
348
|
|
|
@@ -29,7 +29,7 @@ class DatadogAgentStub(object):
|
|
|
29
29
|
self._sent_telemetry = defaultdict(list)
|
|
30
30
|
|
|
31
31
|
def get_default_config(self):
|
|
32
|
-
return {'enable_metadata_collection': True
|
|
32
|
+
return {'enable_metadata_collection': True}
|
|
33
33
|
|
|
34
34
|
def reset(self):
|
|
35
35
|
self._sent_logs.clear()
|
|
@@ -13,9 +13,7 @@ class StatementMetrics:
|
|
|
13
13
|
|
|
14
14
|
- Postgres: pg_stat_statements
|
|
15
15
|
- MySQL: performance_schema.events_statements_summary_by_digest
|
|
16
|
-
- Oracle: V$SQLAREA
|
|
17
16
|
- SQL Server: sys.dm_exec_query_stats
|
|
18
|
-
- DB2: mon_db_summary
|
|
19
17
|
|
|
20
18
|
These tables are monotonically increasing, so the metrics are computed from the difference
|
|
21
19
|
in values between check runs.
|
|
@@ -24,7 +22,7 @@ class StatementMetrics:
|
|
|
24
22
|
def __init__(self):
|
|
25
23
|
self._previous_statements = {}
|
|
26
24
|
|
|
27
|
-
def compute_derivative_rows(self, rows, metrics, key):
|
|
25
|
+
def compute_derivative_rows(self, rows, metrics, key, execution_indicators=None):
|
|
28
26
|
"""
|
|
29
27
|
Compute the first derivative of column-based metrics for a given set of rows. This function
|
|
30
28
|
takes the difference of the previous check run's values and the current check run's values
|
|
@@ -41,10 +39,20 @@ class StatementMetrics:
|
|
|
41
39
|
:params rows (_List[dict]_): rows from current check run
|
|
42
40
|
:params metrics (_List[str]_): the metrics to compute for each row
|
|
43
41
|
:params key (_callable_): function for an ID which uniquely identifies a row across runs
|
|
42
|
+
:params execution_indicators (_List[str]_): list of metrics that must change to consider a query as executed.
|
|
43
|
+
These are typically metrics that increment only when a query actually executes, such as:
|
|
44
|
+
- PostgreSQL: 'calls' from pg_stat_statements
|
|
45
|
+
- MySQL: 'exec_count' from performance_schema.events_statements_summary_by_digest
|
|
46
|
+
- SQL Server: 'execution_count' from sys.dm_exec_query_stats
|
|
47
|
+
This helps filter out cases where a normalized query was evicted then re-inserted with same call count
|
|
48
|
+
(usually 1) and slight duration change. In this case, the new normalized query entry should be treated
|
|
49
|
+
as the baseline for future diffs.
|
|
44
50
|
:return (_List[dict]_): a list of rows with the first derivative of the metrics
|
|
45
51
|
"""
|
|
46
52
|
result = []
|
|
47
53
|
metrics = set(metrics)
|
|
54
|
+
if execution_indicators:
|
|
55
|
+
execution_indicators = set(execution_indicators)
|
|
48
56
|
|
|
49
57
|
merged_rows, dropped_metrics = _merge_duplicate_rows(rows, metrics, key)
|
|
50
58
|
if dropped_metrics:
|
|
@@ -69,6 +77,12 @@ class StatementMetrics:
|
|
|
69
77
|
# 2. No changes since the previous run: There is no need to store metrics of 0, since that is implied by
|
|
70
78
|
# the absence of metrics. On any given check run, most rows will have no difference so this optimization
|
|
71
79
|
# avoids having to send a lot of unnecessary metrics.
|
|
80
|
+
#
|
|
81
|
+
# 3. Execution indicators: If execution_indicators is specified, only consider a query as changed if at
|
|
82
|
+
# least one of the execution indicator metrics has changed. This helps filter out cases where an old or
|
|
83
|
+
# less frequently executed normalized query was evicted due to the stats table being full, and then
|
|
84
|
+
# re-inserted to the stats table with a small call count and slight duration change. In this case,
|
|
85
|
+
# the new normalized query entry should be treated as the baseline for future diffs.
|
|
72
86
|
|
|
73
87
|
diffed_row = {k: row[k] - prev[k] if k in metric_columns else row[k] for k in row.keys()}
|
|
74
88
|
|
|
@@ -79,6 +93,12 @@ class StatementMetrics:
|
|
|
79
93
|
# of potentially including truncated rows that exceed previous run counts.
|
|
80
94
|
continue
|
|
81
95
|
|
|
96
|
+
# If execution_indicators is specified, check if any of the execution indicator metrics have changed
|
|
97
|
+
if execution_indicators:
|
|
98
|
+
indicator_columns = execution_indicators & metric_columns
|
|
99
|
+
if not any(diffed_row[k] > 0 for k in indicator_columns):
|
|
100
|
+
continue
|
|
101
|
+
|
|
82
102
|
# No changes to the query; no metric needed
|
|
83
103
|
if all(diffed_row[k] == 0 for k in metric_columns):
|
|
84
104
|
continue
|
|
@@ -36,35 +36,38 @@ db = [
|
|
|
36
36
|
deps = [
|
|
37
37
|
"binary==1.0.1",
|
|
38
38
|
"cachetools==5.5.2",
|
|
39
|
-
"cryptography==44.0.
|
|
40
|
-
"ddtrace==2.
|
|
39
|
+
"cryptography==44.0.2",
|
|
40
|
+
"ddtrace==2.21.4",
|
|
41
41
|
"jellyfish==1.1.3",
|
|
42
42
|
"lazy-loader==0.4",
|
|
43
43
|
"prometheus-client==0.21.1",
|
|
44
|
-
"protobuf==
|
|
45
|
-
"pydantic==2.
|
|
44
|
+
"protobuf==6.30.2",
|
|
45
|
+
"pydantic==2.11.1",
|
|
46
46
|
"python-dateutil==2.9.0.post0",
|
|
47
|
-
"pywin32==
|
|
47
|
+
"pywin32==310; sys_platform == 'win32'",
|
|
48
48
|
"pyyaml==6.0.2",
|
|
49
49
|
"requests-toolbelt==1.0.0",
|
|
50
50
|
"requests-unixsocket2==0.4.2",
|
|
51
51
|
"requests==2.32.3",
|
|
52
52
|
"simplejson==3.20.1",
|
|
53
|
+
# urllib3 is a dependency of requests that we explicitly
|
|
54
|
+
# make use of in a few places
|
|
55
|
+
"urllib3==2.3.0",
|
|
53
56
|
"wrapt==1.17.2",
|
|
54
57
|
]
|
|
55
58
|
http = [
|
|
56
59
|
"aws-requests-auth==0.4.3",
|
|
57
|
-
"botocore==1.
|
|
60
|
+
"botocore==1.37.23",
|
|
58
61
|
"oauthlib==3.2.2",
|
|
59
62
|
"pyjwt==2.10.1",
|
|
60
|
-
"pyopenssl==
|
|
63
|
+
"pyopenssl==25.0.0",
|
|
61
64
|
"pysocks==1.7.1",
|
|
62
65
|
"requests-kerberos==0.15.0",
|
|
63
66
|
"requests-ntlm==1.3.0",
|
|
64
67
|
"requests-oauthlib==2.0.0",
|
|
65
68
|
]
|
|
66
69
|
json = [
|
|
67
|
-
"orjson==3.10.
|
|
70
|
+
"orjson==3.10.16",
|
|
68
71
|
]
|
|
69
72
|
kube = [
|
|
70
73
|
"kubernetes==32.0.1",
|
|
@@ -86,8 +86,6 @@ def test_first_scrape_handler(
|
|
|
86
86
|
agent_start_time,
|
|
87
87
|
process_start_time,
|
|
88
88
|
):
|
|
89
|
-
mock_http_response(_make_test_data(process_start_time))
|
|
90
|
-
|
|
91
89
|
check = get_check(
|
|
92
90
|
{
|
|
93
91
|
'metrics': ['.*'],
|
|
@@ -98,53 +96,62 @@ def test_first_scrape_handler(
|
|
|
98
96
|
|
|
99
97
|
datadog_agent.set_process_start_time(agent_start_time)
|
|
100
98
|
|
|
101
|
-
for
|
|
99
|
+
for idx in range(0, 10):
|
|
102
100
|
aggregator.reset()
|
|
103
|
-
dd_run_check(check)
|
|
104
101
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
count=1,
|
|
109
|
-
flush_first_value=expect_first_flush,
|
|
110
|
-
)
|
|
111
|
-
aggregator.assert_metric(
|
|
112
|
-
'test.go_gc_duration_seconds.count',
|
|
113
|
-
metric_type=aggregator.MONOTONIC_COUNT,
|
|
114
|
-
count=1,
|
|
115
|
-
flush_first_value=expect_first_flush,
|
|
116
|
-
)
|
|
102
|
+
if idx != 5:
|
|
103
|
+
mock_http_response(_make_test_data(process_start_time))
|
|
104
|
+
dd_run_check(check)
|
|
117
105
|
|
|
118
|
-
if with_buckets:
|
|
119
|
-
aggregator.assert_histogram_bucket(
|
|
120
|
-
'test.skydns_skydns_dns_request_duration_seconds',
|
|
121
|
-
None,
|
|
122
|
-
None,
|
|
123
|
-
None,
|
|
124
|
-
True,
|
|
125
|
-
None,
|
|
126
|
-
None,
|
|
127
|
-
count=2,
|
|
128
|
-
flush_first_value=expect_first_flush,
|
|
129
|
-
)
|
|
130
|
-
else:
|
|
131
|
-
aggregator.assert_metric(
|
|
132
|
-
'test.skydns_skydns_dns_request_duration_seconds.count',
|
|
133
|
-
metric_type=aggregator.MONOTONIC_COUNT,
|
|
134
|
-
count=1,
|
|
135
|
-
flush_first_value=expect_first_flush,
|
|
136
|
-
)
|
|
137
106
|
aggregator.assert_metric(
|
|
138
|
-
'test.
|
|
107
|
+
'test.go_memstats_alloc_bytes.count',
|
|
139
108
|
metric_type=aggregator.MONOTONIC_COUNT,
|
|
140
109
|
count=1,
|
|
141
110
|
flush_first_value=expect_first_flush,
|
|
142
111
|
)
|
|
143
112
|
aggregator.assert_metric(
|
|
144
|
-
'test.
|
|
113
|
+
'test.go_gc_duration_seconds.count',
|
|
145
114
|
metric_type=aggregator.MONOTONIC_COUNT,
|
|
146
115
|
count=1,
|
|
147
116
|
flush_first_value=expect_first_flush,
|
|
148
117
|
)
|
|
149
118
|
|
|
150
|
-
|
|
119
|
+
if with_buckets:
|
|
120
|
+
aggregator.assert_histogram_bucket(
|
|
121
|
+
'test.skydns_skydns_dns_request_duration_seconds',
|
|
122
|
+
None,
|
|
123
|
+
None,
|
|
124
|
+
None,
|
|
125
|
+
True,
|
|
126
|
+
None,
|
|
127
|
+
None,
|
|
128
|
+
count=2,
|
|
129
|
+
flush_first_value=expect_first_flush,
|
|
130
|
+
)
|
|
131
|
+
else:
|
|
132
|
+
aggregator.assert_metric(
|
|
133
|
+
'test.skydns_skydns_dns_request_duration_seconds.count',
|
|
134
|
+
metric_type=aggregator.MONOTONIC_COUNT,
|
|
135
|
+
count=1,
|
|
136
|
+
flush_first_value=expect_first_flush,
|
|
137
|
+
)
|
|
138
|
+
aggregator.assert_metric(
|
|
139
|
+
'test.skydns_skydns_dns_request_duration_seconds.sum',
|
|
140
|
+
metric_type=aggregator.MONOTONIC_COUNT,
|
|
141
|
+
count=1,
|
|
142
|
+
flush_first_value=expect_first_flush,
|
|
143
|
+
)
|
|
144
|
+
aggregator.assert_metric(
|
|
145
|
+
'test.skydns_skydns_dns_request_duration_seconds.bucket',
|
|
146
|
+
metric_type=aggregator.MONOTONIC_COUNT,
|
|
147
|
+
count=1,
|
|
148
|
+
flush_first_value=expect_first_flush,
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
expect_first_flush = True
|
|
152
|
+
else:
|
|
153
|
+
mock_http_response("", status_code=500)
|
|
154
|
+
with pytest.raises(Exception):
|
|
155
|
+
dd_run_check(check)
|
|
156
|
+
|
|
157
|
+
expect_first_flush = False
|
{datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/checks/test_agent_check.py
RENAMED
|
@@ -42,7 +42,12 @@ def test_check_version():
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
def test_load_config():
|
|
45
|
-
assert AgentCheck.load_config(
|
|
45
|
+
assert AgentCheck.load_config('raw_foo: bar') == {'raw_foo': 'bar'}
|
|
46
|
+
assert AgentCheck.load_config('invalid:mapping') == 'invalid:mapping'
|
|
47
|
+
assert AgentCheck.load_config('') is None
|
|
48
|
+
|
|
49
|
+
with pytest.raises(ValueError, match='Failed to load config: '):
|
|
50
|
+
AgentCheck.load_config(':')
|
|
46
51
|
|
|
47
52
|
|
|
48
53
|
def test_persistent_cache(datadog_agent):
|
{datadog_checks_base-37.8.0 → datadog_checks_base-37.10.0}/tests/base/utils/db/test_db_statements.py
RENAMED
|
@@ -303,3 +303,124 @@ class TestStatementMetrics:
|
|
|
303
303
|
def test_compute_derivative_rows_benchmark(self, benchmark):
|
|
304
304
|
sm = StatementMetrics()
|
|
305
305
|
benchmark(self.__run_compute_derivative_rows, sm)
|
|
306
|
+
|
|
307
|
+
def test_compute_derivative_rows_with_execution_indicators(self):
|
|
308
|
+
sm = StatementMetrics()
|
|
309
|
+
|
|
310
|
+
def key(row):
|
|
311
|
+
return (row['query'], row['db'], row['user'])
|
|
312
|
+
|
|
313
|
+
metrics = ['calls', 'total_time', 'rows']
|
|
314
|
+
execution_indicators = ['calls']
|
|
315
|
+
|
|
316
|
+
# Initial state
|
|
317
|
+
rows1 = [
|
|
318
|
+
{'calls': 10, 'total_time': 1000, 'rows': 50, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
|
|
319
|
+
{'calls': 5, 'total_time': 500, 'rows': 25, 'query': 'SELECT 2', 'db': 'test', 'user': 'user1'},
|
|
320
|
+
]
|
|
321
|
+
|
|
322
|
+
sm.compute_derivative_rows(rows1, metrics, key=key, execution_indicators=execution_indicators)
|
|
323
|
+
|
|
324
|
+
# Second run - only duration changes (should be ignored)
|
|
325
|
+
rows2 = [
|
|
326
|
+
{'calls': 10, 'total_time': 1001, 'rows': 50, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
|
|
327
|
+
{'calls': 5, 'total_time': 501, 'rows': 25, 'query': 'SELECT 2', 'db': 'test', 'user': 'user1'},
|
|
328
|
+
]
|
|
329
|
+
assert [] == sm.compute_derivative_rows(rows2, metrics, key=key, execution_indicators=execution_indicators)
|
|
330
|
+
|
|
331
|
+
# Third run - calls change (should be included)
|
|
332
|
+
rows3 = [
|
|
333
|
+
{'calls': 11, 'total_time': 1002, 'rows': 51, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
|
|
334
|
+
{'calls': 5, 'total_time': 502, 'rows': 25, 'query': 'SELECT 2', 'db': 'test', 'user': 'user1'},
|
|
335
|
+
]
|
|
336
|
+
result = sm.compute_derivative_rows(rows3, metrics, key=key, execution_indicators=execution_indicators)
|
|
337
|
+
assert len(result) == 1
|
|
338
|
+
assert result[0]['calls'] == 1
|
|
339
|
+
assert result[0]['total_time'] == 1
|
|
340
|
+
assert result[0]['rows'] == 1
|
|
341
|
+
|
|
342
|
+
def test_compute_derivative_rows_with_multiple_execution_indicators(self):
|
|
343
|
+
sm = StatementMetrics()
|
|
344
|
+
|
|
345
|
+
def key(row):
|
|
346
|
+
return (row['query'], row['db'], row['user'])
|
|
347
|
+
|
|
348
|
+
metrics = ['calls', 'executions', 'total_time', 'rows']
|
|
349
|
+
execution_indicators = ['calls', 'executions']
|
|
350
|
+
|
|
351
|
+
# Initial state
|
|
352
|
+
rows1 = [
|
|
353
|
+
{
|
|
354
|
+
'calls': 10,
|
|
355
|
+
'executions': 10,
|
|
356
|
+
'total_time': 1000,
|
|
357
|
+
'rows': 50,
|
|
358
|
+
'query': 'SELECT 1',
|
|
359
|
+
'db': 'test',
|
|
360
|
+
'user': 'user1',
|
|
361
|
+
},
|
|
362
|
+
]
|
|
363
|
+
|
|
364
|
+
sm.compute_derivative_rows(rows1, metrics, key=key, execution_indicators=execution_indicators)
|
|
365
|
+
|
|
366
|
+
# Second run - only one execution indicator changes
|
|
367
|
+
rows2 = [
|
|
368
|
+
{
|
|
369
|
+
'calls': 11,
|
|
370
|
+
'executions': 10,
|
|
371
|
+
'total_time': 1001,
|
|
372
|
+
'rows': 50,
|
|
373
|
+
'query': 'SELECT 1',
|
|
374
|
+
'db': 'test',
|
|
375
|
+
'user': 'user1',
|
|
376
|
+
},
|
|
377
|
+
]
|
|
378
|
+
result = sm.compute_derivative_rows(rows2, metrics, key=key, execution_indicators=execution_indicators)
|
|
379
|
+
assert len(result) == 1
|
|
380
|
+
assert result[0]['calls'] == 1
|
|
381
|
+
assert result[0]['executions'] == 0
|
|
382
|
+
assert result[0]['total_time'] == 1
|
|
383
|
+
assert result[0]['rows'] == 0
|
|
384
|
+
|
|
385
|
+
# Third run - both execution indicators change
|
|
386
|
+
rows3 = [
|
|
387
|
+
{
|
|
388
|
+
'calls': 12,
|
|
389
|
+
'executions': 11,
|
|
390
|
+
'total_time': 1002,
|
|
391
|
+
'rows': 51,
|
|
392
|
+
'query': 'SELECT 1',
|
|
393
|
+
'db': 'test',
|
|
394
|
+
'user': 'user1',
|
|
395
|
+
},
|
|
396
|
+
]
|
|
397
|
+
result = sm.compute_derivative_rows(rows3, metrics, key=key, execution_indicators=execution_indicators)
|
|
398
|
+
assert len(result) == 1
|
|
399
|
+
assert result[0]['calls'] == 1
|
|
400
|
+
assert result[0]['executions'] == 1
|
|
401
|
+
assert result[0]['total_time'] == 1
|
|
402
|
+
assert result[0]['rows'] == 1
|
|
403
|
+
|
|
404
|
+
def test_compute_derivative_rows_with_invalid_execution_indicators(self):
|
|
405
|
+
sm = StatementMetrics()
|
|
406
|
+
|
|
407
|
+
def key(row):
|
|
408
|
+
return (row['query'], row['db'], row['user'])
|
|
409
|
+
|
|
410
|
+
metrics = ['calls', 'total_time', 'rows']
|
|
411
|
+
|
|
412
|
+
# Test with empty execution indicators
|
|
413
|
+
rows1 = [
|
|
414
|
+
{'calls': 10, 'total_time': 1000, 'rows': 50, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
|
|
415
|
+
]
|
|
416
|
+
rows2 = [
|
|
417
|
+
{'calls': 11, 'total_time': 1001, 'rows': 51, 'query': 'SELECT 1', 'db': 'test', 'user': 'user1'},
|
|
418
|
+
]
|
|
419
|
+
|
|
420
|
+
# Empty execution indicators should behave like no execution indicators specified
|
|
421
|
+
_ = sm.compute_derivative_rows(rows1, metrics, key=key, execution_indicators=[])
|
|
422
|
+
result = sm.compute_derivative_rows(rows2, metrics, key=key, execution_indicators=[])
|
|
423
|
+
assert len(result) == 1
|
|
424
|
+
assert result[0]['calls'] == 1
|
|
425
|
+
assert result[0]['total_time'] == 1
|
|
426
|
+
assert result[0]['rows'] == 1
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# (C) Datadog, Inc. 2025-present
|
|
2
|
+
# All rights reserved
|
|
3
|
+
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
|
+
|
|
5
|
+
from datadog_checks.base import AgentCheck
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TestAssertMetric:
|
|
9
|
+
|
|
10
|
+
def test_assert_metric_hostname(self, aggregator):
|
|
11
|
+
check = AgentCheck()
|
|
12
|
+
|
|
13
|
+
check.gauge('test.metric', 1, hostname=None)
|
|
14
|
+
check.gauge('test.metric_host', 1, hostname='hello')
|
|
15
|
+
|
|
16
|
+
aggregator.assert_metric('test.metric', 1, hostname='')
|
|
17
|
+
aggregator.assert_metric('test.metric_host', 1, hostname='hello')
|