HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/psutil/tests/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/psutil/tests/__pycache__/test_connections.cpython-36.pyc
3

�[gS�@s\dZddlZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddl
Z
ddl
mZdd	l
mZdd
l
m
Z
ddl
mZddl
mZdd
l
mZddl
mZddl
mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%dd lm&Z&dd!lm'Z'e(ed"e)��Z*d#d$�Z+e!j,j-d%d&�Gd'd(�d(e��Z.Gd)d*�d*e.�Z/e!j,j-d%d&�Gd+d,�d,e.��Z0e!j,j-d%d&�Gd-d.�d.e.��Z1Gd/d0�d0e.�Z2e!j,j3ed1d2�Gd3d4�d4e.��Z4Gd5d6�d6e�Z5dS)7zFTests for psutil.net_connections() and Process.net_connections() APIs.�N)�closing)�AF_INET)�AF_INET6)�
SOCK_DGRAM)�SOCK_STREAM)�FREEBSD)�LINUX)�MACOS)�NETBSD)�OPENBSD)�POSIX)�SUNOS)�WINDOWS)�
supports_ipv6)�PY3)�AF_UNIX)�HAS_NET_CONNECTIONS_UNIX)�SKIP_SYSCONS)�PsutilTestCase)�bind_socket)�bind_unix_socket)�check_connection_ntuple)�create_sockets)�filter_proc_net_connections)�pytest)�
reap_children)�retry_on_failure)�skip_on_access_denied)�tcp_socketpair)�unix_socketpair)�
wait_for_file�SOCK_SEQPACKETcCs$tj�j|d�}|dkr t|�S|S)N)�kind�all�unix)r#r$)�psutil�Process�net_connectionsr)r"�cons�r)�I/usr/local/lib64/python3.6/site-packages/psutil/tests/test_connections.py�this_proc_net_connections2sr+�serial)�namec@s&eZdZdd�Zdd�Zd	dd�ZdS)
�ConnectionTestCasecCstdd�gkst�dS)Nr#)r")r+�AssertionError)�selfr)r)r*�setUp;szConnectionTestCase.setUpcCstdd�gkst�dS)Nr#)r")r+r/)r0r)r)r*�tearDown>szConnectionTestCase.tearDownr#csdytj|d�}Wn tjk
r0tr*dS�YnX�fdd�|D�}|j�|j�||ks`t�dS)z�Given a process PID and its list of connections compare
        those against system-wide connections retrieved via
        psutil.net_connections.
        )r"Ncs"g|]}|j�kr|dd��qS)N����)�pid)�.0�c)r5r)r*�
<listcomp>QszBConnectionTestCase.compare_procsys_connections.<locals>.<listcomp>)r%r'�AccessDeniedr	�sortr/)r0r5Z	proc_consr"Zsys_consr))r5r*�compare_procsys_connectionsBsz.ConnectionTestCase.compare_procsys_connectionsN)r#)�__name__�
__module__�__qualname__r1r2r;r)r)r)r*r.9sr.c@s4eZdZejjedd�dd��Zdd�Zdd�Z	d	S)
�TestBasicOperationsz
requires root)�reasonc
Cs4t��$xtjdd�D]}t|�qWWdQRXdS)Nr#)r")rr%r'r)r0�connr)r)r*�test_systemXszTestBasicOperations.test_systemc
Cs2t��"xtdd�D]}t|�qWWdQRXdS)Nr#)r")rr+r)r0rAr)r)r*�test_process^sz TestBasicOperations.test_processcCsFtjt��tdd�WdQRXtjt��tjdd�WdQRXdS)Nz???)r")rZraises�
ValueErrorr+r%r')r0r)r)r*�test_invalid_kindcsz%TestBasicOperations.test_invalid_kindN)
r<r=r>r�mark�skipifrrBrCrEr)r)r)r*r?Wsr?c@s�eZdZdZdd�Zdd�Zdd�Zejj	e
�dd	�d
d��Zdd
�Zejj	e
�dd	�dd��Z
ejj	edd	�dd��Zejj	edd	�dd��ZdS)�TestUnconnectedSocketsz;Tests sockets which are open but not connected to anything.cCsttdd�}tdd�|D��}ts$tr0||j�St|�dks@t�|djdkrh||j�j|j�ksht�|dSdS)Nr#)r"cSsg|]}|j|f�qSr))�fd)r6r7r)r)r*r8psz=TestUnconnectedSockets.get_conn_from_sock.<locals>.<listcomp>r3rr4)r+�dictr
r�fileno�lenr/rI)r0�sockr(Zsmapr)r)r*�get_conn_from_sockns
z)TestUnconnectedSockets.get_conn_from_sockcCs�|j|�}t|�|jdkr.|j|j�ks.t�|j|jks>t�|j|jtj	tj
�ksXt�|j�}|r|tr|t
|t�r||j�}|jtkr�|dd�}|j|ks�t�|jtkr�tr�tdd�}|jtj�|dd�|S)z�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).
        r3N�r#)r"r4)rNrrIrKr/�family�type�
getsockopt�socket�
SOL_SOCKET�SO_TYPE�getsocknamer�
isinstance�bytes�decoder�laddrrrr+r;�os�getpid)r0rMrArZr(r)r)r*�check_socket{s 



z#TestUnconnectedSockets.check_socketc	CsNd}tttt|d���.}|j|�}|jfks0t�|jtj	ks@t�WdQRXdS)N�	127.0.0.1r)�addr)r^r)
rrrrr]�raddrr/�statusr%�CONN_LISTEN)r0r_rMrAr)r)r*�test_tcp_v4�s

z"TestUnconnectedSockets.test_tcp_v4zIPv6 not supported)r@c	CsNd}tttt|d���.}|j|�}|jfks0t�|jtj	ks@t�WdQRXdS)N�::1r)r_)rdr)
rrrrr]r`r/rar%rb)r0r_rMrAr)r)r*�test_tcp_v6�s

z"TestUnconnectedSockets.test_tcp_v6c	CsNd}tttt|d���.}|j|�}|jfks0t�|jtj	ks@t�WdQRXdS)N�	127.0.0.1r)r_)rfr)
rrrrr]r`r/rar%�	CONN_NONE)r0r_rMrAr)r)r*�test_udp_v4�s

z"TestUnconnectedSockets.test_udp_v4c	CsNd}tttt|d���.}|j|�}|jfks0t�|jtj	ks@t�WdQRXdS)N�::1r)r_)rir)
rrrrr]r`r/rar%rg)r0r_rMrAr)r)r*�test_udp_v6�s

z"TestUnconnectedSockets.test_udp_v6z
POSIX onlyc	CsP|j�}tt|td���.}|j|�}|jdks2t�|jtj	ksBt�WdQRXdS)N)rQ�)
�
get_testfnrrrr]r`r/rar%rg)r0�testfnrMrAr)r)r*�
test_unix_tcp�s

z$TestUnconnectedSockets.test_unix_tcpc	CsP|j�}tt|td���.}|j|�}|jdks2t�|jtj	ksBt�WdQRXdS)N)rQrk)
rlrrrr]r`r/rar%rg)r0rmrMrAr)r)r*�
test_unix_udp�s

z$TestUnconnectedSockets.test_unix_udpN)r<r=r>�__doc__rNr]rcrrFrGrrerhrjrrnror)r)r)r*rHjs
rHc@sBeZdZdZejjedd�dd��Zejje	dd�dd��Z
d	S)
�TestConnectedSocketzFTest socket pairs which are actually connected to
    each other.
    zunreliable on SUONS)r@c
Cs�d}tdd�gkst�tt|d�\}}zFtdd�}t|�dksBt�|djtjksVt�|djtjksjt�Wd|j�|j�XdS)	N�	127.0.0.1r�tcp4)r")r_rOr3)rrr)	r+r/rrrLrar%�CONN_ESTABLISHED�close)r0r_�server�clientr(r)r)r*�test_tcp�s
zTestConnectedSocket.test_tcpz
POSIX onlyc
Cs
|j�}t|�\}}z�tdd�}|djo2|djs>t|��|djoP|djs\t|��tsdtrrdd�|D�}t|�dks�t�t	s�ts�t
s�tr�|djdks�t�|djdks�t�||djp�|djks�t�n|djp�|dj|ks�t�Wd|j�|j�XdS)	Nr$)r"rr3cSsg|]}|jdkr|�qS)z/var/run/log)r`)r6r7r)r)r*r8�sz1TestConnectedSocket.test_unix.<locals>.<listcomp>rOrk)
rlrr+rZr`r/r
rrLrr
rru)r0rmrvrwr(r)r)r*�	test_unix�s 
 zTestConnectedSocket.test_unixN)r<r=r>rprrFrGr
rxrryr)r)r)r*rq�srqc@s.eZdZdd�Zeed�dd��Zdd�ZdS)	�TestFiltersc
Cs�dd�}t���|dtttgtttg�|dttgttg�|dtgttg�|dttgtg�|dtgtg�|dtgtg�|d	ttgtg�|d
tgtg�|dtgtg�tr�|dtgtttg�WdQRXdS)
NcSsjx.t|d�D] }|j|kst�|j|kst�qWtsfx0tj|d�D] }|j|ksTt�|j|ksBt�qBWdS)N)r")r+rPr/rQrr%r')r"�families�typesrAr)r)r*�checksz'TestFilters.test_filters.<locals>.checkr#�inet�inet4�tcprs�tcp6�udp�udp4�udp6r$)rrrrrrr!r)r0r}r)r)r*�test_filterss&	zTestFilters.test_filters)Zonly_ifcst��fdd�}tjd�}tjd�}tjj�jtj�d��}|jt	t
�d|d�}|jt	t
�d|d�}|jt	t�d|d�}|jt	t�d|d�}�j|�}	t
t|d	d
��}
�j|�}t
t|d	d
��}t�r��j|�}
t
t|d	d
��}�j|�}t
t|d	d
��}nd}
d}d}d}�x�tj�j�D�]�}|j�}t|�dk�s>t�x�|D]�}|j|	jk�rp|||t
t|
ftjd�n�|j|jk�r�|||t
t|ftjd�nZ|jt|
dd�k�r�|||tt|ftjd�n,|jt|dd�k�rD|||tt|ftjd��qDW�qWdS)Nc
s�d}t|�|j|kst�|j|ks(t�|j|ks6t�|j|ksDt�|j|ksRt�x:|D]2}	|j|	d�}
|	|kr~|
gks�t�qX|
gksXt�qXWtr��j	|j
|g�dS)
Nr#r~r�inet6r�rsr�r�r�r�)r")
r#r~rr�r�rsr�r�r�r�)rrPr/rQrZr`rar'rr;r5)�procrArPrQrZr`raZkindsZ	all_kindsr"r()r0r)r*�
check_conn$s.
z+TestFilters.test_combos.<locals>.check_conna4
            import socket, time
            s = socket.socket({family}, socket.SOCK_STREAM)
            s.bind(('{addr}', 0))
            s.listen(5)
            with open('{testfn}', 'w') as f:
                f.write(str(s.getsockname()[:2]))
            [time.sleep(0.1) for x in range(100)]
            a
            import socket, time
            s = socket.socket({family}, socket.SOCK_DGRAM)
            s.bind(('{addr}', 0))
            with open('{testfn}', 'w') as f:
                f.write(str(s.getsockname()[:2]))
            [time.sleep(0.1) for x in range(100)]
            )�dirz	127.0.0.1)rPr_rmz::1T)�deleter3r#r~rr�rsr�r�r5r�r�r�)r#r~rr�rs)r#r~rr�r�)r#r~r�r�r�)r#r~r�r�r�)r�textwrap�dedentr[�path�basenamerl�getcwd�format�intrr�pyrun�evalr rr%r&�childrenr'rLr/r5rrbrrg�getattr)r0r�Ztcp_templateZudp_templateZtestfileZ
tcp4_templateZ
udp4_templateZ
tcp6_templateZ
udp6_templateZ	tcp4_procZ	tcp4_addrZ	udp4_procZ	udp4_addrZ	tcp6_procZ	tcp6_addrZ	udp6_procZ	udp6_addr�pr(rAr))r0r*�test_combos s�




zTestFilters.test_comboscCs�t����tdd�}t|�t�r$dndks.t�x,|D]$}|jttfksJt�|jt	ks4t�q4Wtdd�}t|�dksvt�|djtks�t�|djt	ks�t�t�r�tdd�}t|�dks�t�|djtks�t�|djt	ks�t�tdd�}t|�t�r�dndk�st�x2|D]*}|jttfk�s"t�|jt
k�s
t��q
Wtd	d�}t|�dk�sTt�|djtk�sht�|djt
k�s|t�t��r�td
d�}t|�dk�s�t�|djtk�s�t�|djt
k�s�t�tdd�}t|�t��r�dndk�s�t�x6|D].}|jttfk�st�|jt	t
fk�s�t��q�Wt��r�td
d�}t|�dk�sLt�x2|D]*}|jtk�sft�|jt	t
fk�sRt��qRWt�r�t�p�t
�r�tdd�}t|�dk�s�t�x2|D]*}|jtk�s�t�|jt	t
fk�s�t��q�WWdQRXdS)Nr�)r"rOr3rsrr�r�r�r�r~�r�r$�)rr+rLrr/rPrrrQrrrrr
r)r0r(rAr)r)r*�
test_count�s\














zTestFilters.test_countN)r<r=r>r�rr	r�r�r)r)r)r*rzsrzz
requires root)r@c@s&eZdZdZdd�Ze�dd��ZdS)�TestSystemWideConnectionszTests for net_connections().cCs�dd�}t��nddlm}xZ|j�D]N\}}|dkr>tr>q&|\}}tj|�}t|�tt|��ksht	�||||�q&WWdQRXdS)NcSs@x:|D]2}|j|kst�|jtkr0|j|ks0t�t|�qWdS)N)rPr/rrQr)r(r{�types_rAr)r)r*r}�s


z0TestSystemWideConnections.test_it.<locals>.checkr)�	conn_tmapr$)
r�psutil._commonr��itemsrr%r'rL�setr/)r0r}r�r"�groupsr{r�r(r)r)r*�test_it�s
z!TestSystemWideConnections.test_itcs�t��}t|�}WdQRXg�d}g}xFt|�D]:}|j�}|j|�tjd|�}|j|�}�j|j�q0Wx|D]}t	|�qtW�fdd�t
jdd�D�}	xJ�D]B�t�fdd�|	D��|ks�t�t
j
��}
t|
jd��|ks�t�q�WdS)N�
a"                import time, os
                from psutil.tests import create_sockets
                with create_sockets():
                    with open(r'%s', 'w') as f:
                        f.write("hello")
                    [time.sleep(0.1) for x in range(100)]
                csg|]}|j�kr|�qSr))r5)r6�x)�pidsr)r*r8szFTestSystemWideConnections.test_multi_sockets_procs.<locals>.<listcomp>r#)r"csg|]}|j�kr|�qSr))r5)r6r�)r5r)r*r8!s)rrL�rangerl�appendr�r�r�r5r r%r'r/r&)r0ZsocksZexpected�times�fnames�_�fname�srcZsprocZsysconsr�r))r5r�r*�test_multi_sockets_procs�s&





z2TestSystemWideConnections.test_multi_sockets_procsN)r<r=r>rpr�rr�r)r)r)r*r��sr�c@seZdZdd�ZdS)�TestMisccCs�g}g}xhtt�D]\}|jd�rtt|�}t|�}|j�sBt|��t|ksNt�||ksZt�|j|�|j|�qWtr�tj	tj
tr�tjdS)NZCONN_)
r�r%�
startswithr��str�isupperr/r�r
Z	CONN_IDLEZ
CONN_BOUNDrZCONN_DELETE_TCB)r0�ints�strsr-�numZstr_r)r)r*�test_net_connection_constants's 


z&TestMisc.test_net_connection_constantsN)r<r=r>r�r)r)r)r*r�&sr�)6rpr[rSr��
contextlibrrrrrr%rrr	r
rrr
rr�rZpsutil._compatrZpsutil.testsrrrrrrrrrrrrrrrr r��objectr!r+rFZxdist_groupr.r?rHrqrzrGr�r�r)r)r)r*�<module>sb]7g?