def test_ps_auxww_with_bad_input(): # test with bad input d1 = ps.PsAuxww(context_wrap(PsAuxcww_BAD)) assert 'test' not in d1 with pytest.raises(ParseException) as exc: d2 = ps.PsAuxww(context_wrap(Ps_BAD)) assert d2 is None assert 'PsAuxww: Cannot find ps header line containing' in str(exc)
def test_doc_examples(): env = { 'ps': ps.PsAuxww(context_wrap(PsAuxww_TEST_DOC)), 'ps_auxww': ps.PsAuxww(context_wrap(PsAuxww_TEST_DOC)), 'ps_ef': ps.PsEf(context_wrap(PsEf_TEST_DOC)), 'ps_eo': ps.PsEo(context_wrap(PsEo_TEST_DOC, strip=False)), 'ps_alxwww': ps.PsAlxwww(context_wrap(PsAlxwww_TEST_DOC)), 'ps_eo_cmd': ps.PsEoCmd(context_wrap(PsEoCmd_TEST_DOC)) } failed, total = doctest.testmod(ps, globs=env) assert failed == 0
def test_ps_auxww_from_aux(): # test with input from `ps aux` p = ps.PsAuxww(context_wrap(PsAux_TEST)) d = p.data assert all('COMMAND' in row for row in d) assert keys_in([ "USER", "PID", "%CPU", "%MEM", "VSZ", "RSS", "TTY", "STAT", "START", "TIME", "COMMAND" ], d[0]) assert d[0] == { '%MEM': '0.0', 'TTY': '?', 'VSZ': '19356', 'PID': '1', '%CPU': '0.0', 'START': 'May31', 'COMMAND': '/sbin/init', 'COMMAND_NAME': 'init', 'USER': '******', 'STAT': 'Ss', 'TIME': '0:01', 'RSS': '1544', 'ARGS': '' } assert p.fuzzy_match('irqbal') assert 'bash' in p assert '/sbin/init' in p assert 'sshd' not in p assert 'kondemand' not in p assert not p.fuzzy_match("sshd") assert p.number_occurences("systemd") != 2 assert p.number_occurences("bash") == 1 assert p.fuzzy_match('kondemand') assert p.search() == [] assert p.search(COMMAND__contains='java') == [p.data[6]] assert p.search(USER='******', COMMAND__contains='kondemand') == [p.data[1]] assert p.search(TTY='pts/3') == [p.data[3]] assert p.search(STAT__contains='Z') == []
def test_ps_auxww_from_auxwww(): # test with input from `ps auxwww` p = ps.PsAuxww(context_wrap(PS_AUXWWW)) d = p.data assert all('COMMAND' in row for row in d) assert keys_in([ "USER", "PID", "%CPU", "%MEM", "VSZ", "RSS", "TTY", "STAT", "START", "TIME", "COMMAND" ], d[0]) assert d[0] == { 'USER': '******', 'PID': '1', '%CPU': '0.0', '%MEM': '0.0', 'VSZ': '21452', 'RSS': '1536', 'TTY': '?', 'STAT': 'Ss', 'START': 'Mar09', 'TIME': '0:01', 'COMMAND': '/sbin/init', 'COMMAND_NAME': 'init', 'ARGS': '', } assert p.fuzzy_match('kthread') assert '-bash' in p assert '/sbin/init' in p assert 'sshd' not in p assert 'kthread' not in p assert not p.fuzzy_match("sshd") assert p.number_occurences("python") == 1 assert p.number_occurences("sshd") != 2 assert p.fuzzy_match('python') assert p.search() == [] assert p.search(COMMAND__contains='rsyslogd') == [p.data[3]] assert p.search(USER='******', COMMAND__contains='kthread') == [p.data[1]] assert p.search(TTY='tty1') == [p.data[7], p.data[8]] assert p.search(STAT__contains='Z') == []
def test_ps_auxww_from_auxcww(): # test with input from `ps auxcww` p = ps.PsAuxww(context_wrap(PsAuxcww_TEST)) d = p.data assert all('COMMAND' in row for row in d) assert keys_in([ "USER", "PID", "%CPU", "%MEM", "VSZ", "RSS", "TTY", "STAT", "START", "TIME", "COMMAND" ], d[0]) assert d[0] == { '%MEM': '0.0', 'TTY': '?', 'VSZ': '19356', 'PID': '1', '%CPU': '0.0', 'START': 'May31', 'COMMAND': 'init', 'COMMAND_NAME': 'init', 'USER': '******', 'STAT': 'Ss', 'TIME': '0:01', 'RSS': '1544', 'ARGS': '', } assert d[2]["COMMAND"] == 'irqbalance' assert d[-2]["COMMAND"] == 'qemu-kvm' assert p.fuzzy_match('irqbal') assert p.number_occurences("bash") == 3 assert p.number_occurences("qemu-kvm") != 2 assert 'dhclient' in p assert 'sshd' not in p assert not p.fuzzy_match("sshd") assert p.cpu_usage('dhclient') == '0.0' assert p.cpu_usage('java') is None assert p.users('bash') == {'user1': ['20160'], 'user2': ['20161', '20164']}
def test_ps_auxww_from_auxww(): # test with input from `ps auxww` p = ps.PsAuxww(context_wrap(PsAuxww_TEST)) d = p.data assert all('COMMAND' in row for row in d) assert keys_in([ "USER", "PID", "%CPU", "%MEM", "VSZ", "RSS", "TTY", "STAT", "START", "TIME", "COMMAND" ], d[0]) assert d[0] == { '%MEM': '0.0', 'TTY': '?', 'VSZ': '193892', 'PID': '1', '%CPU': '0.0', 'START': 'Oct23', 'USER': '******', 'STAT': 'Ss', 'TIME': '1:40', 'RSS': '5000', 'COMMAND': '/usr/lib/systemd/systemd --switched-root --system --deserialize 22', 'COMMAND_NAME': 'systemd', 'ARGS': '--switched-root --system --deserialize 22', } assert d[2]["COMMAND"] == '/usr/lib/systemd/systemd-journald' assert d[-2] == { 'USER': '******', 'PID': '2713', '%CPU': '2.4', '%MEM': '19.2', 'VSZ': '12508144', 'RSS': '3077224', 'TTY': '?', 'STAT': 'Sl', 'START': 'Nov21', 'TIME': '533:33', 'COMMAND': '/usr/lib64/firefox/firefox', 'COMMAND_NAME': 'firefox', 'ARGS': '', } assert p.fuzzy_match('kthreadd') assert '[kthreadd]' in p assert 'sshd' not in p assert not p.fuzzy_match("sshd") assert p.number_occurences("systemd") == 2 assert p.number_occurences("openshift") != 2 assert p.cpu_usage('/usr/lib64/firefox/firefox') == '2.4' assert p.cpu_usage('firefox') is None assert p.cpu_usage('dhclient') is None assert p.cpu_usage('java') is None assert p.running_pids() == [ '1', '2', '781', '1111', '1112', '2713', '8257' ] # Test __iter__ assert 13718356 == sum(int(proc['VSZ']) for proc in p)
def test_ps_auxww_with_late_header(): p = ps.PsAuxww(context_wrap(PS_AUXWW_WITH_LATE_HEADER)) assert '[kthreadd]' in p assert p.data[0][ 'COMMAND'] == '/usr/lib/systemd/systemd --switched-root --system --deserialize 21'