Exemplo n.º 1
0
def test_get_original_line():
    ns = Netstat(context_wrap(NETSTAT))
    assert len(ns.data) == 2
    assert NETSTAT.splitlines()[4].strip() == ns.get_original_line(netstat.ACTIVE_INTERNET_CONNECTIONS, 1)
    assert NETSTAT.splitlines()[5].strip() == ns.get_original_line(netstat.ACTIVE_INTERNET_CONNECTIONS, 2)
    assert ns.get_original_line("Fabulous Green", 1) is None
    assert NETSTAT.splitlines()[11].strip() == ns.get_original_line(netstat.ACTIVE_UNIX_DOMAIN_SOCKETS, 0)
Exemplo n.º 2
0
def test_get_netstat_keyword_search():
    ns = Netstat(context_wrap(NETSTAT))
    # Search with no search_list searches both lists
    assert ns.search(State__contains='LISTEN') == [
        ns.datalist[netstat.ACTIVE_INTERNET_CONNECTIONS][1],
        ns.datalist[netstat.ACTIVE_INTERNET_CONNECTIONS][2],
        ns.datalist[netstat.ACTIVE_INTERNET_CONNECTIONS][3],
        ns.datalist[netstat.ACTIVE_INTERNET_CONNECTIONS][4],
        ns.datalist[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS][1],
        ns.datalist[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS][2],
    ]

    # Search with one search_list item searches that list
    assert ns.search(search_list=[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS],
                     State__contains='LISTEN') == [
                         ns.datalist[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS][1],
                         ns.datalist[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS][2],
                     ]

    # Search with a string
    assert ns.search(search_list=netstat.ACTIVE_UNIX_DOMAIN_SOCKETS,
                     State__contains='LISTEN') == [
                         ns.datalist[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS][1],
                         ns.datalist[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS][2],
                     ]

    # Search with neither string nor list
    assert ns.search(search_list={'foo': 1}, State__contains='LISTEN') == []

    # Search with a non-matching string
    assert ns.search(search_list='foo', State__contains='LISTEN') == []

    # Search with a non-matching list
    assert ns.search(search_list=['foo'], State__contains='LISTEN') == []
Exemplo n.º 3
0
def test_netstat_running_processes_no_active_conns():
    ns = Netstat(context_wrap(NETSTAT_NO_ACTIVE_CONNS))
    assert ns
    assert len(ns.data) == 1
    assert netstat.ACTIVE_INTERNET_CONNECTIONS not in ns.data
    assert netstat.ACTIVE_UNIX_DOMAIN_SOCKETS in ns.data
    assert ns.running_processes == set([])
Exemplo n.º 4
0
def test_get_netstat():
    ns = Netstat(context_wrap(NETSTAT))
    assert len(ns.data) == 2
    assert netstat.ACTIVE_INTERNET_CONNECTIONS in ns.data
    assert 'PID/Program name' in ns.data[netstat.ACTIVE_INTERNET_CONNECTIONS]
    assert 'Local Address' in ns.data[netstat.ACTIVE_INTERNET_CONNECTIONS]
    assert netstat.ACTIVE_UNIX_DOMAIN_SOCKETS in ns.data

    assert "1279/qpidd" in ns.data[netstat.ACTIVE_INTERNET_CONNECTIONS]['PID/Program name']
    assert "738/NetworkManager" in ns.data[netstat.ACTIVE_UNIX_DOMAIN_SOCKETS]['PID/Program name']

    # Datalist access
    assert hasattr(ns, 'datalist')
    nsdl = ns.datalist[netstat.ACTIVE_INTERNET_CONNECTIONS]
    assert len(nsdl) == 6
    assert nsdl[0] == {
        'Proto': 'tcp', 'Recv-Q': '0', 'Send-Q': '0',
        'Local Address': '192.168.0.1:53', 'Local IP': '192.168.0.1',
        'Port': '53', 'Foreign Address': '192.168.0.53:53',
        'State': 'ESTABLISHED', 'User': '******', 'Inode': '1817',
        'PID/Program name': '12/dnsd', 'PID': '12', 'Program name': 'dnsd',
        'Timer': 'off (0.00/0/0)',
    }
    # tcp        0      0 10.24.1.245:80          10.24.36.145:32790      SYN_RECV    0          0          -                    on (0.79/0/0)
    assert nsdl[5] == {
        'Proto': 'tcp', 'Recv-Q': '0', 'Send-Q': '0',
        'Local Address': '10.24.1.245:80', 'Local IP': '10.24.1.245',
        'Port': '80', 'Foreign Address': '10.24.36.145:32790',
        'State': 'SYN_RECV', 'User': '******', 'Inode': '0',
        'PID/Program name': '-',
        'Timer': 'on (0.79/0/0)',
    }
Exemplo n.º 5
0
def test_netstat_doc_examples():
    env = {
        'stats': NetstatS(context_wrap(NETSTAT_S)),
        'multicast': NetstatAGN(context_wrap(TEST_NETSTAT_AGN)),
        'ns': Netstat(context_wrap(NETSTAT_DOCS)),
        'traf': Netstat_I(context_wrap(NETSTAT_I)),
        'ss': SsTULPN(context_wrap(SS_TULPN_DOCS)),
    }
    failed, total = doctest.testmod(netstat, globs=env)
    assert failed == 0
Exemplo n.º 6
0
def test_short_outputs():
    with pytest.raises(ParseException) as exc:
        Netstat(context_wrap(NETSTAT_BLANK))
    assert 'Input content is empty' in str(exc)

    with pytest.raises(ParseException) as exc:
        Netstat(context_wrap(NETSTAT_TRUNCATED))
    assert 'Input content is not empty but there is no useful parsed data' in str(
        exc)

    with pytest.raises(ParseException) as exc:
        Netstat(context_wrap(NETSTAT_CONTENT_BUT_NO_PARSED_LINES))
    assert 'Found no section headers in content' in str(exc)

    with pytest.raises(ParseException) as exc:
        Netstat(context_wrap(NETSTAT_CONTENT_BUT_NO_PID_PROGRAM))
    assert "Did not find 'PID/Program name' heading in header" in str(exc)

    with pytest.raises(ParseException) as exc:
        Netstat(context_wrap(NETSTAT_CONTENT_BUT_NO_LOCAL_ADDR_COLON))
    assert "Local Address is expected to have a colon separating address and port" in str(
        exc)

    ns = Netstat(context_wrap(NETSTAT_SOCKETS_ONLY))
    assert ns.running_processes == set()
    assert ns.listening_pid == {}
Exemplo n.º 7
0
def test_listening_pid():
    ns = Netstat(context_wrap(NETSTAT))
    assert len(ns.data) == 2
    assert ns.listening_pid['12387'] == {
        'addr': '127.0.0.1',
        'name': 'Passenger Rac',
        'port': '53644'
    }
    assert ns.listening_pid['1272'] == {
        'addr': '0.0.0.0',
        'name': 'qdrouterd',
        'port': '5646'
    }
Exemplo n.º 8
0
def test_running_processes():
    ns = Netstat(context_wrap(NETSTAT_TEST_RUNNING_PROCESSES))
    assert len(ns.data) == 1
    assert netstat.ACTIVE_INTERNET_CONNECTIONS in ns.data
    assert 'PID/Program name' in ns.data[netstat.ACTIVE_INTERNET_CONNECTIONS]
    assert 'Local Address' in ns.data[netstat.ACTIVE_INTERNET_CONNECTIONS]
    assert len(ns.data[netstat.ACTIVE_INTERNET_CONNECTIONS]['Local Address']) == 6
    assert 'dnsd' in ns.running_processes  # ESTABLISHED processes are OK
    assert '1279' not in ns.running_processes
    assert 'mongod' not in ns.running_processes
    assert 'Passenger Rac' in ns.running_processes
    assert 'qdrouterd' in ns.running_processes

    pids = ns.listening_pid
    assert sorted(pids.keys()) == sorted(['12387', '1272'])
Exemplo n.º 9
0
def test_is_httpd_running():
    assert "httpd" in Netstat(context_wrap(NETSTAT_MATCH1)).running_processes
    assert "httpd" not in Netstat(
        context_wrap(NETSTAT_NOMATCH1)).running_processes
    assert "httpd" not in Netstat(
        context_wrap(NETSTAT_NOMATCH2)).running_processes