示例#1
0
 def check(cons, families, types_):
     AF_UNIX = getattr(socket, 'AF_UNIX', object())
     for conn in cons:
         self.assertIn(conn.family, families, msg=conn)
         if conn.family != AF_UNIX:
             self.assertIn(conn.type, types_, msg=conn)
         check_connection_ntuple(conn)
示例#2
0
    def check_socket(self, sock, conn=None):
        """Given a socket, makes sure it matches the one obtained
        via psutil. It assumes this process created one connection
        only (the one supposed to be checked).
        """
        if conn is None:
            conn = self.get_conn_from_socck(sock)
        check_connection_ntuple(conn)

        # fd, family, type
        if conn.fd != -1:
            self.assertEqual(conn.fd, sock.fileno())
        self.assertEqual(conn.family, sock.family)
        # see: http://bugs.python.org/issue30204
        self.assertEqual(conn.type,
                         sock.getsockopt(socket.SOL_SOCKET, socket.SO_TYPE))

        # local address
        laddr = sock.getsockname()
        if not laddr and PY3 and isinstance(laddr, bytes):
            # See: http://bugs.python.org/issue30205
            laddr = laddr.decode()
        if sock.family == AF_INET6:
            laddr = laddr[:2]
        if sock.family == AF_UNIX and OPENBSD:
            # No addresses are set for UNIX sockets on OpenBSD.
            pass
        else:
            self.assertEqual(conn.laddr, laddr)

        # XXX Solaris can't retrieve system-wide UNIX sockets
        if not (SUNOS and sock.family == AF_UNIX):
            cons = thisproc.connections(kind='all')
            self.compare_procsys_connections(os.getpid(), cons)
        return conn
示例#3
0
    def check_socket(self, sock, conn=None):
        """Given a socket, makes sure it matches the one obtained
        via psutil. It assumes this process created one connection
        only (the one supposed to be checked).
        """
        if conn is None:
            conn = self.get_conn_from_sock(sock)
        check_connection_ntuple(conn)

        # fd, family, type
        if conn.fd != -1:
            self.assertEqual(conn.fd, sock.fileno())
        self.assertEqual(conn.family, sock.family)
        # see: http://bugs.python.org/issue30204
        self.assertEqual(
            conn.type, sock.getsockopt(socket.SOL_SOCKET, socket.SO_TYPE))

        # local address
        laddr = sock.getsockname()
        if not laddr and PY3 and isinstance(laddr, bytes):
            # See: http://bugs.python.org/issue30205
            laddr = laddr.decode()
        if sock.family == AF_INET6:
            laddr = laddr[:2]
        if sock.family == AF_UNIX and OPENBSD:
            # No addresses are set for UNIX sockets on OpenBSD.
            pass
        else:
            self.assertEqual(conn.laddr, laddr)

        # XXX Solaris can't retrieve system-wide UNIX sockets
        if sock.family == AF_UNIX and HAS_CONNECTIONS_UNIX:
            cons = thisproc.connections(kind='all')
            self.compare_procsys_connections(os.getpid(), cons)
        return conn
示例#4
0
 def check(cons, families, types_):
     AF_UNIX = getattr(socket, 'AF_UNIX', object())
     for conn in cons:
         self.assertIn(conn.family, families, msg=conn)
         if conn.family != AF_UNIX:
             self.assertIn(conn.type, types_, msg=conn)
         check_connection_ntuple(conn)
示例#5
0
 def check_conn(proc, conn, family, type, laddr, raddr, status, kinds):
     all_kinds = ("all", "inet", "inet4", "inet6", "tcp", "tcp4",
                  "tcp6", "udp", "udp4", "udp6")
     check_connection_ntuple(conn)
     self.assertEqual(conn.family, family)
     self.assertEqual(conn.type, type)
     self.assertEqual(conn.laddr, laddr)
     self.assertEqual(conn.raddr, raddr)
     self.assertEqual(conn.status, status)
     for kind in all_kinds:
         cons = proc.connections(kind=kind)
         if kind in kinds:
             assert cons
         else:
             assert not cons, cons
     # compare against system-wide connections
     # XXX Solaris can't retrieve system-wide UNIX
     # sockets.
     if not SUNOS:
         self.compare_procsys_connections(proc.pid, [conn])
示例#6
0
 def check_conn(proc, conn, family, type, laddr, raddr, status, kinds):
     all_kinds = ("all", "inet", "inet4", "inet6", "tcp", "tcp4",
                  "tcp6", "udp", "udp4", "udp6")
     check_connection_ntuple(conn)
     self.assertEqual(conn.family, family)
     self.assertEqual(conn.type, type)
     self.assertEqual(conn.laddr, laddr)
     self.assertEqual(conn.raddr, raddr)
     self.assertEqual(conn.status, status)
     for kind in all_kinds:
         cons = proc.connections(kind=kind)
         if kind in kinds:
             assert cons
         else:
             assert not cons, cons
     # compare against system-wide connections
     # XXX Solaris can't retrieve system-wide UNIX
     # sockets.
     if HAS_CONNECTIONS_UNIX:
         self.compare_procsys_connections(proc.pid, [conn])
示例#7
0
 def connections(self, ret, proc):
     self.assertEqual(len(ret), len(set(ret)))
     for conn in ret:
         check_connection_ntuple(conn)
 def connections(self, ret, info):
     with create_sockets():
         self.assertEqual(len(ret), len(set(ret)))
         for conn in ret:
             assert is_namedtuple(conn)
             check_connection_ntuple(conn)
示例#9
0
 def connections(self, ret, proc):
     self.assertEqual(len(ret), len(set(ret)))
     for conn in ret:
         check_connection_ntuple(conn)
示例#10
0
 def test_process(self):
     with create_sockets():
         for conn in psutil.Process().connections(kind='all'):
             check_connection_ntuple(conn)
示例#11
0
 def test_system(self):
     with create_sockets():
         for conn in psutil.net_connections(kind='all'):
             check_connection_ntuple(conn)
示例#12
0
 def check(cons, families, types_):
     for conn in cons:
         self.assertIn(conn.family, families, msg=conn)
         if conn.family != AF_UNIX:
             self.assertIn(conn.type, types_, msg=conn)
         check_connection_ntuple(conn)