From aaebd92cd0563475c98f8ec070579996cf967e47 Mon Sep 17 00:00:00 2001 From: NouemanKHAL Date: Wed, 28 Jan 2026 16:47:15 +0100 Subject: [PATCH 1/3] add a test for search_string containing spaces --- process/tests/test_process.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/process/tests/test_process.py b/process/tests/test_process.py index 5e1f1470fa39b..6bfe4cbd4abc4 100644 --- a/process/tests/test_process.py +++ b/process/tests/test_process.py @@ -57,15 +57,16 @@ def __exit__(self, type, value, traceback): class NamedMockProcess(object): - def __init__(self, name): - self.pid = None + def __init__(self, name, pid=None, cmdline=None): + self.pid = pid self._name = name + self._cmdline = cmdline or [] def name(self): return self._name def cmdline(self): - return [] + return self._cmdline def get_psutil_proc(): @@ -237,6 +238,14 @@ def test_check_missing_process(aggregator, dd_run_check, caplog): assert "Unable to find process named ['fooprocess', '/usr/bin/foo'] among processes" in caplog.text +@patch('psutil.process_iter', return_value=[NamedMockProcess("foo", pid=123, cmdline=["foo", "bar", "--baz"])]) +def test_search_string_with_spaces(mock_process_iter): + instance = {'name': 'foo', 'search_string': ['foo bar'], 'exact_match': False} + process = ProcessCheck(common.CHECK_NAME, {}, [instance]) + pids = process.find_pids(instance['name'], instance['search_string'], instance['exact_match']) + assert pids == {123} + + @pytest.mark.parametrize("oneshot", [True, False]) def test_check_real_process(aggregator, dd_run_check, oneshot): "Check that we detect python running (at least this process)" From 5f1ad6622b0d4fa5b77a0389564b235da81c443c Mon Sep 17 00:00:00 2001 From: NouemanKHAL Date: Thu, 29 Jan 2026 10:25:18 +0100 Subject: [PATCH 2/3] run check in the new test, and add more test --- process/tests/test_process.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/process/tests/test_process.py b/process/tests/test_process.py index 6bfe4cbd4abc4..cfb5dee460df7 100644 --- a/process/tests/test_process.py +++ b/process/tests/test_process.py @@ -238,13 +238,27 @@ def test_check_missing_process(aggregator, dd_run_check, caplog): assert "Unable to find process named ['fooprocess', '/usr/bin/foo'] among processes" in caplog.text +def test_check_missing_process_with_spaces(aggregator, dd_run_check, caplog): + caplog.set_level(logging.DEBUG) + instance = {'name': 'foo', 'search_string': ['foo bar process', '/usr/bin/foo test'], 'exact_match': False} + process = ProcessCheck(common.CHECK_NAME, {}, [instance]) + dd_run_check(process) + aggregator.assert_service_check('process.up', count=1, status=process.CRITICAL) + assert "Unable to find process named ['foo bar process', '/usr/bin/foo test'] among processes" in caplog.text + + @patch('psutil.process_iter', return_value=[NamedMockProcess("foo", pid=123, cmdline=["foo", "bar", "--baz"])]) -def test_search_string_with_spaces(mock_process_iter): - instance = {'name': 'foo', 'search_string': ['foo bar'], 'exact_match': False} +def test_search_string_with_spaces(mock_process_iter, aggregator, dd_run_check): + instance = {'name': 'foo', 'search_string': ['foo bar --baz'], 'exact_match': False} process = ProcessCheck(common.CHECK_NAME, {}, [instance]) pids = process.find_pids(instance['name'], instance['search_string'], instance['exact_match']) assert pids == {123} + dd_run_check(process) + expected_tags = generate_expected_tags(instance) + aggregator.assert_metric('system.processes.number', value=1, tags=expected_tags) + aggregator.assert_service_check('process.up', count=1, tags=expected_tags + ['process:foo']) + @pytest.mark.parametrize("oneshot", [True, False]) def test_check_real_process(aggregator, dd_run_check, oneshot): From 70285aeb1ecfcd8c9a1e2fbbdc3f957e1e0c0133 Mon Sep 17 00:00:00 2001 From: NouemanKHAL Date: Thu, 29 Jan 2026 17:27:03 +0100 Subject: [PATCH 3/3] apply suggestion: remove unnecessary assertion --- process/tests/test_process.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/process/tests/test_process.py b/process/tests/test_process.py index cfb5dee460df7..e68f296fff5ad 100644 --- a/process/tests/test_process.py +++ b/process/tests/test_process.py @@ -251,9 +251,6 @@ def test_check_missing_process_with_spaces(aggregator, dd_run_check, caplog): def test_search_string_with_spaces(mock_process_iter, aggregator, dd_run_check): instance = {'name': 'foo', 'search_string': ['foo bar --baz'], 'exact_match': False} process = ProcessCheck(common.CHECK_NAME, {}, [instance]) - pids = process.find_pids(instance['name'], instance['search_string'], instance['exact_match']) - assert pids == {123} - dd_run_check(process) expected_tags = generate_expected_tags(instance) aggregator.assert_metric('system.processes.number', value=1, tags=expected_tags)