Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 23 additions & 3 deletions process/tests/test_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down Expand Up @@ -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)"
Expand Down
Loading