diff --git a/process/tests/test_process.py b/process/tests/test_process.py index 5e1f1470fa39b..e68f296fff5ad 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,25 @@ 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, aggregator, dd_run_check): + instance = {'name': 'foo', 'search_string': ['foo bar --baz'], 'exact_match': False} + process = ProcessCheck(common.CHECK_NAME, {}, [instance]) + 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): "Check that we detect python running (at least this process)"