§
    ±Ûg¥R  ã                   ó�  — d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
Z
ddl
mZ dd	l
mZ dd
l
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ dd lm%Z%  e&ed! e'¦   «         ¦  «        Z(d"„ Z)ej*         +                    d#¬$¦  «         G d%„ d&e¦  «        ¦   «         Z, G d'„ d(e,¦  «        Z-ej*         +                    d#¬$¦  «         G d)„ d*e,¦  «        ¦   «         Z.ej*         +                    d#¬$¦  «         G d+„ d,e,¦  «        ¦   «         Z/ G d-„ d.e,¦  «        Z0ej*         1                    ed/¬0¦  «         G d1„ d2e,¦  «        ¦   «         Z2 G d3„ d4e¦  «        Z3dS )5zFTests 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)Ú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_SEQPACKETc                 óz   — t          j        ¦   «                              | ¬¦  «        }| dv rt          |¦  «        S |S )N©Úkind>   ÚallÚunix)ÚpsutilÚProcessÚnet_connectionsr   )r$   Úconss     úS/granary/edev/quantum/lib/python3.11/site-packages/psutil/tests/test_connections.pyÚthis_proc_net_connectionsr,   1   s>   € ÝŒ>ÑÔ×+Ò+°Ð+Ñ6Ô6€DØˆÐÐÝ*¨4Ñ0Ô0Ð0Ø€Kó    Úserial)Únamec                   ó"   — e Zd Zd„ Zd„ Zdd„ZdS )ÚConnectionTestCasec                 ó2   — t          d¬¦  «        g k    sJ ‚d S ©Nr%   r#   ©r,   ©Úselfs    r+   ÚsetUpzConnectionTestCase.setUp:   s$   € Ý(¨eÐ4Ñ4Ô4¸Ò:Ð:Ð:Ð:Ð:Ð:r-   c                 ó2   — t          d¬¦  «        g k    sJ ‚d S r3   r4   r5   s    r+   ÚtearDownzConnectionTestCase.tearDown=   s$   € å(¨eÐ4Ñ4Ô4¸Ò:Ð:Ð:Ð:Ð:Ð:r-   r%   c                 óî   ‡— 	 t          j        |¬¦  «        }n# t           j        $ r t          rY dS ‚ w xY wˆfd„|D ¦   «         }|                     ¦   «          |                     ¦   «          ||k    sJ ‚dS )zœGiven a process PID and its list of connections compare
        those against system-wide connections retrieved via
        psutil.net_connections.
        r#   Nc                 ó:   •— g | ]}|j         ‰k    ¯|d d…         ‘ŒS )Néÿÿÿÿ©Úpid)Ú.0Úcr>   s     €r+   ú
<listcomp>zBConnectionTestCase.compare_procsys_connections.<locals>.<listcomp>P   s(   ø€ Ð=Ð=Ð=˜q°´¸²°�A�c�r�c”F°°°r-   )r'   r)   ÚAccessDeniedr
   Úsort)r6   r>   Ú	proc_consr$   Úsys_conss    `   r+   Úcompare_procsys_connectionsz.ConnectionTestCase.compare_procsys_connectionsA   sž   ø€ ð
	ÝÔ-°4Ð8Ñ8Ô8ˆHˆHøÝÔ"ð 	ð 	ð 	õ ð Ø��àð	øøøð >Ð=Ð=Ð= HÐ=Ñ=Ô=ˆØ�Š‰ŒˆØ�ŠÑÔÐØ˜HÒ$Ð$Ð$Ð$Ð$Ð$s   ƒ ™4²4N)r%   )Ú__name__Ú
__module__Ú__qualname__r7   r9   rF   © r-   r+   r1   r1   8   sF   € € € € € ð;ð ;ð ;ð;ð ;ð ;ð%ð %ð %ð %ð %ð %r-   r1   c                   ód   — e Zd Zej                             ed¬¦  «        d„ ¦   «         Zd„ Zd„ Z	dS )ÚTestBasicOperationsúrequires root©Úreasonc                 ó¤   — t          ¦   «         5  t          j        d¬¦  «        D ]}t          |¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S r3   )r   r'   r)   r   ©r6   Úconns     r+   Útest_systemzTestBasicOperations.test_systemW   s¥   € åÑÔð 	.ð 	.ÝÔ.°EÐ:Ñ:Ô:ð .ð .�Ý'¨Ñ-Ô-Ð-Ð-ð.ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   �(AÁA	ÁA	c                 óš   — t          ¦   «         5  t          d¬¦  «        D ]}t          |¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S r3   )r   r,   r   rQ   s     r+   Útest_processz TestBasicOperations.test_process]   s¢   € ÝÑÔð 	.ð 	.Ý1°uÐ=Ñ=Ô=ð .ð .�Ý'¨Ñ-Ô-Ð-Ð-ð.ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   �#A Á AÁAc                 ó  — t          j        t          ¦  «        5  t          d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t	          j        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz???r#   )r   ÚraisesÚ
ValueErrorr,   r'   r)   r5   s    r+   Útest_invalid_kindz%TestBasicOperations.test_invalid_kindb   s   € ÝŒ]�:Ñ&Ô&ð 	2ð 	2Ý%¨5Ð1Ñ1Ô1Ð1ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2åŒ]�:Ñ&Ô&ð 	/ð 	/ÝÔ"¨Ð.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   š7·;¾;ÁA>Á>BÂBN)
rG   rH   rI   r   ÚmarkÚskipifr   rS   rU   rY   rJ   r-   r+   rL   rL   V   sa   € € € € € Ø„[×Ò˜¨_ÐÑ=Ô=ð.ð .ñ >Ô=ð.ð
.ð .ð .ð
/ð /ð /ð /ð /r-   rL   c                   óz  — e Zd ZdZd„ Zd„ Zd„ Zej         	                     e
¦   «          d¬¦  «        d„ ¦   «         Zd„ Zej         	                     e
¦   «          d¬¦  «        d	„ ¦   «         Zej         	                    e d
¬¦  «        d„ ¦   «         Zej         	                    e d
¬¦  «        d„ ¦   «         ZdS )ÚTestUnconnectedSocketsz;Tests sockets which are open but not connected to anything.c                 óT  — t          d¬¦  «        }d„ |D ¦   «         }t          st          r||                     ¦   «                  S t	          |¦  «        dk    sJ ‚|d         j        dk    r7||                     ¦   «                  j        |                     ¦   «         k    sJ ‚|d         S )Nr%   r#   c                 ó   — i | ]
}|j         |“ŒS rJ   )Úfd©r?   r@   s     r+   ú
<dictcomp>z=TestUnconnectedSockets.get_conn_from_sock.<locals>.<dictcomp>o   s   € Ð&Ð&Ð&˜A�”�aÐ&Ð&Ð&r-   é   r   r<   )r,   r   r   ÚfilenoÚlenr`   )r6   Úsockr*   Úsmaps       r+   Úget_conn_from_sockz)TestUnconnectedSockets.get_conn_from_sockm   sŸ   € Ý(¨eÐ4Ñ4Ô4ˆØ&Ð& Ð&Ñ&Ô&ˆÝð 	•Wð 	ð ˜Ÿš™œÔ&Ð&å�t‘9”9 ’>�>�>�>Ø�AŒwŒz˜RÒÐØ˜DŸKšK™MœMÔ*Ô-°·²±´Ò>Ð>Ð>Ð>Ø˜”7ˆNr-   c                 óœ  — |                       |¦  «        }t          |¦  «         |j        dk    r|j        |                     ¦   «         k    sJ ‚|j        |j        k    sJ ‚|j        |                     t          j        t          j	        ¦  «        k    sJ ‚| 
                    ¦   «         }|s)t          |t          ¦  «        r|                     ¦   «         }|j        t          k    r
|dd…         }|j        |k    sJ ‚|j        t           k    r@t"          r9t%          d¬¦  «        }|                      t)          j        ¦   «         |d¬¦  «         |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).
        r<   Né   r%   r#   )rh   r   r`   rd   ÚfamilyÚtypeÚ
getsockoptÚsocketÚ
SOL_SOCKETÚSO_TYPEÚgetsocknameÚ
isinstanceÚbytesÚdecoder   Úladdrr   r   r,   rF   ÚosÚgetpid)r6   rf   rR   ru   r*   s        r+   Úcheck_socketz#TestUnconnectedSockets.check_socketz   s9  € ð
 ×&Ò& tÑ,Ô,ˆÝ Ñ%Ô%Ð%ð Œ7�bŠ=ˆ=Ø”7˜dŸkšk™mœmÒ+Ð+Ð+Ð+ØŒ{˜dœkÒ)Ð)Ð)Ð)àŒy˜DŸOšO­FÔ,=½v¼~ÑNÔNÒNÐNÐNÐNð × Ò Ñ"Ô"ˆØð 	#� E­5Ñ1Ô1ð 	#à—L’L‘N”NˆEØŒ;�(Ò"Ð"Ø˜"˜1˜"”IˆEØŒz˜UÒ"Ð"Ð"Ð"ð Œ;�'Ò!Ð!Õ&>Ð!Ý,°%Ð8Ñ8Ô8ˆDØ×,Ò,­R¬Y©[¬[¸$ÀUÐ,ÑKÔKÐKØˆr-   c                 ó  — d}t          t          t          t          |¬¦  «        ¦  «        5 }|                      |¦  «        }|j        dk    sJ ‚|j        t          j        k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S ©N©ú	127.0.0.1r   ©ÚaddrrJ   )	r   r   r   r   rx   ÚraddrÚstatusr'   ÚCONN_LISTEN©r6   r~   rf   rR   s       r+   Útest_tcp_v4z"TestUnconnectedSockets.test_tcp_v4˜   sÄ   € ØˆÝ•[¥­+¸DÐAÑAÔAÑBÔBð 	5ÀdØ×$Ò$ TÑ*Ô*ˆDØ”: Ò#Ð#Ð#Ð#Ø”;¥&Ô"4Ò4Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ó   ¬:A4Á4A8Á;A8zIPv6 not supportedrN   c                 ó  — d}t          t          t          t          |¬¦  «        ¦  «        5 }|                      |¦  «        }|j        dk    sJ ‚|j        t          j        k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S ©N)ú::1r   r}   rJ   )	r   r   r   r   rx   r   r€   r'   r�   r‚   s       r+   Útest_tcp_v6z"TestUnconnectedSockets.test_tcp_v6Ÿ   sÄ   € àˆÝ•[¥­;¸TÐBÑBÔBÑCÔCð 	5ÀtØ×$Ò$ TÑ*Ô*ˆDØ”: Ò#Ð#Ð#Ð#Ø”;¥&Ô"4Ò4Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5r„   c                 ó  — d}t          t          t          t          |¬¦  «        ¦  «        5 }|                      |¦  «        }|j        dk    sJ ‚|j        t          j        k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S rz   )	r   r   r   r   rx   r   r€   r'   Ú	CONN_NONEr‚   s       r+   Útest_udp_v4z"TestUnconnectedSockets.test_udp_v4§   sÄ   € ØˆÝ•[¥­*¸4Ð@Ñ@Ô@ÑAÔAð 	3ÀTØ×$Ò$ TÑ*Ô*ˆDØ”: Ò#Ð#Ð#Ð#Ø”;¥&Ô"2Ò2Ð2Ð2Ð2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3r„   c                 ó  — d}t          t          t          t          |¬¦  «        ¦  «        5 }|                      |¦  «        }|j        dk    sJ ‚|j        t          j        k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S r†   )	r   r   r   r   rx   r   r€   r'   rŠ   r‚   s       r+   Útest_udp_v6z"TestUnconnectedSockets.test_udp_v6®   sÄ   € àˆÝ•[¥­:¸DÐAÑAÔAÑBÔBð 	3ÀdØ×$Ò$ TÑ*Ô*ˆDØ”: Ò#Ð#Ð#Ð#Ø”;¥&Ô"2Ò2Ð2Ð2Ð2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3r„   ú
POSIX onlyc                 ó  — |                       ¦   «         }t          t          |t          ¬¦  «        ¦  «        5 }|                      |¦  «        }|j        dk    sJ ‚|j        t          j        k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S ©N)rl   Ú ©	Ú
get_testfnr   r   r   rx   r   r€   r'   rŠ   ©r6   Útestfnrf   rR   s       r+   Útest_unix_tcpz$TestUnconnectedSockets.test_unix_tcp¶   óÍ   € à—’Ñ"Ô"ˆÝÕ% fµ;Ð?Ñ?Ô?Ñ@Ô@ð 	3ÀDØ×$Ò$ TÑ*Ô*ˆDØ”: Ò#Ð#Ð#Ð#Ø”;¥&Ô"2Ò2Ð2Ð2Ð2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ó   ¸:B Â BÂBc                 ó  — |                       ¦   «         }t          t          |t          ¬¦  «        ¦  «        5 }|                      |¦  «        }|j        dk    sJ ‚|j        t          j        k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S r�   r’   r”   s       r+   Útest_unix_udpz$TestUnconnectedSockets.test_unix_udp¾   r—   r˜   N)rG   rH   rI   Ú__doc__rh   rx   rƒ   r   rZ   r[   r   rˆ   r‹   r�   r   r–   rš   rJ   r-   r+   r]   r]   i   s4  € € € € € àEÐEðð ð ðð ð ð<5ð 5ð 5ð „[×Ò˜M˜M™OœOÐ+Ð4HÐÑIÔIð5ð 5ñ JÔIð5ð3ð 3ð 3ð „[×Ò˜M˜M™OœOÐ+Ð4HÐÑIÔIð3ð 3ñ JÔIð3ð „[×Ò˜E˜	¨,ÐÑ7Ô7ð3ð 3ñ 8Ô7ð3ð „[×Ò˜E˜	¨,ÐÑ7Ô7ð3ð 3ñ 8Ô7ð3ð 3ð 3r-   r]   c                   ó¨   — e Zd ZdZej                             ed¬¦  «        d„ ¦   «         Zej                             e	 d¬¦  «        d„ ¦   «         Z
dS )ÚTestConnectedSocketzFTest socket pairs which are actually connected to
    each other.
    zunreliable on SUONSrN   c                 óÔ  — d}t          d¬¦  «        g k    sJ ‚t          t          |¬¦  «        \  }}	 t          d¬¦  «        }t          |¦  «        dk    sJ ‚|d         j        t
          j        k    sJ ‚|d         j        t
          j        k    sJ ‚	 |                     ¦   «          |                     ¦   «          d S # |                     ¦   «          |                     ¦   «          w xY w)Nr{   Útcp4r#   r}   rj   r   rc   )r,   r   r   re   r€   r'   ÚCONN_ESTABLISHEDÚclose)r6   r~   ÚserverÚclientr*   s        r+   Útest_tcpzTestConnectedSocket.test_tcpÏ   sÚ   € àˆÝ(¨fÐ5Ñ5Ô5¸Ò;Ð;Ð;Ð;Ý'­°dÐ;Ñ;Ô;‰ˆ�ð	Ý,°&Ð9Ñ9Ô9ˆDÝ�t‘9”9 ’>�>�>�>Ø˜”7”>¥VÔ%<Ò<Ð<Ð<Ð<Ø˜”7”>¥VÔ%<Ò<Ð<Ð<Ð<Ð<ð �LŠL‰NŒNˆNØ�LŠL‰NŒNˆNˆNˆNøð �LŠL‰NŒNˆNØ�LŠL‰NŒNˆNˆNøøøs   ³AB= Â=*C'rŽ   c                 ó  — |                       ¦   «         }t          |¦  «        \  }}	 t          d¬¦  «        }|d         j        r|d         j        r
J |¦   «         ‚|d         j        r|d         j        r
J |¦   «         ‚t
          st          rd„ |D ¦   «         }t          |¦  «        dk    sJ ‚t          st          st          st          rG|d         j        dk    sJ ‚|d         j        dk    sJ ‚||d         j        p|d         j        k    sJ ‚n |d         j        p|d         j        |k    sJ ‚|                     ¦   «          |                     ¦   «          d S # |                     ¦   «          |                     ¦   «          w xY w)Nr&   r#   r   rc   c                 ó(   — g | ]}|j         d k    ¯|‘ŒS )z/var/run/log)r   ra   s     r+   rA   z1TestConnectedSocket.test_unix.<locals>.<listcomp>î   s$   € ÐEÐEÐE˜a¨1¬7°nÒ+DÐ+D˜Ð+DÐ+DÐ+Dr-   rj   r‘   )r“   r   r,   ru   r   r   r   re   r	   r   r   r¡   )r6   r•   r¢   r£   r*   s        r+   Ú	test_unixzTestConnectedSocket.test_unixã   s“  € à—’Ñ"Ô"ˆÝ(¨Ñ0Ô0‰ˆ�ð	Ý,°&Ð9Ñ9Ô9ˆDØ˜QœœÐ>¨$¨q¬'¬-Ð>Ð>¸$Ñ>Ô>Ð>Ø˜QœœÐ>¨$¨q¬'¬-Ð>Ð>¸$Ñ>Ô>Ð>Ýð F�ð Fð FÐE 4ÐEÑEÔE�Ý�t‘9”9 ’>�>�>�>Ýð 	B�ð 	B¥5ð 	B­Gð 	Bà˜A”w”}¨Ò*Ð*Ð*Ð*Ø˜A”w”}¨Ò*Ð*Ð*Ð*à $ q¤'¤-Ð"@°4¸´7´=ÒAÐAÐAÐAÐAð ˜QœœÐ6¨¨a¬¬¸6ÒAÐAÐAÐAà�LŠL‰NŒNˆNØ�LŠL‰NŒNˆNˆNˆNøð �LŠL‰NŒNˆNØ�LŠL‰NŒNˆNˆNøøøs   ¨D
E Å*FN)rG   rH   rI   r›   r   rZ   r[   r   r¤   r   r§   rJ   r-   r+   r�   r�   Ç   sƒ   € € € € € ðð ð „[×Ò˜Ð&;ÐÑ<Ô<ðð ñ =Ô<ðð& „[×Ò˜E˜	¨,ÐÑ7Ô7ðð ñ 8Ô7ðð ð r-   r�   c                   óD   — e Zd Zd„ Z ee¬¦  «        d„ ¦   «         Zd„ ZdS )ÚTestFiltersc                 óà  — d„ }t          ¦   «         5   |dt          t          t          gt          t
          t          g¦  «          |dt          t          gt          t
          g¦  «          |dt          gt          t
          g¦  «          |dt          t          gt          g¦  «          |dt          gt          g¦  «          |dt          gt          g¦  «          |dt          t          gt
          g¦  «          |d	t          gt
          g¦  «          |d
t          gt
          g¦  «         t          r% |dt          gt          t
          t          g¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 óÆ   — t          | ¬¦  «        D ]}|j        |v sJ ‚|j        |v sJ ‚Œt          s.t	          j        | ¬¦  «        D ]}|j        |v sJ ‚|j        |v sJ ‚Œd S d S )Nr#   )r,   rk   rl   r   r'   r)   )r$   ÚfamiliesÚtypesrR   s       r+   Úcheckz'TestFilters.test_filters.<locals>.check  s§   € Ý1°tÐ<Ñ<Ô<ð *ð *�Ø”{ hÐ.Ð.Ð.Ð.Ø”y EÐ)Ð)Ð)Ð)Ð)Ýð .Ý"Ô2¸Ð=Ñ=Ô=ð .ð .�DØœ;¨(Ð2Ð2Ð2Ð2Øœ9¨Ð-Ð-Ð-Ð-Ð-ð.ð .ð.ð .r-   r%   ÚinetÚinet4ÚtcprŸ   Útcp6ÚudpÚudp4Úudp6r&   )r   r   r   r   r   r   r!   r   )r6   r®   s     r+   Útest_filterszTestFilters.test_filters   s­  € ð	.ð 	.ð 	.õ ÑÔð 	ð 	ØˆEØÝ�(¥GÐ,Ý�j­.Ð9ñô ð ð
 ˆE�&�7¥HÐ-µ½ZÐ/HÑIÔIÐIØˆE�'�G˜9¥{µJÐ&?Ñ@Ô@Ð@ØˆE�%�'¥8Ð,­{¨mÑ<Ô<Ð<ØˆE�&�7˜)¥k ]Ñ3Ô3Ð3ØˆE�&�8˜*¥{ mÑ4Ô4Ð4ØˆE�%�'¥8Ð,­z¨lÑ;Ô;Ð;ØˆE�&�7˜)¥j \Ñ2Ô2Ð2ØˆE�&�8˜*¥z lÑ3Ô3Ð3Ý'ð Ø�ØÝ�IÝ ¥*­nÐ=ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ’EE#Å#E'Å*E')Úonly_ifc                 óª  ‡ — t          ¦   «          ˆ fd„}t          j        d¦  «        }t          j        d¦  «        }t          j                             ‰                      t          j        ¦   «         ¬¦  «        ¦  «        }|                     t          t          ¦  «        d|¬¦  «        }|                     t          t          ¦  «        d|¬¦  «        }|                     t          t          ¦  «        d|¬¦  «        }|                     t          t          ¦  «        d|¬¦  «        }‰                      |¦  «        }	t          t          |d¬	¦  «        ¦  «        }
‰                      |¦  «        }t          t          |d¬	¦  «        ¦  «        }t          ¦   «         rg‰                      |¦  «        }t          t          |d¬	¦  «        ¦  «        }‰                      |¦  «        }t          t          |d¬	¦  «        ¦  «        }nd }d }d }d }t!          j        ¦   «                              ¦   «         D �] }|                     ¦   «         }t)          |¦  «        d
k    sJ ‚|D ]ñ}|j        |	j        k    r' |||t          t,          |
dt           j        d¦  «         Œ9|j        |j        k    r' |||t          t0          |dt           j        d¦  «         Œp|j        t5          |dd ¦  «        k    r' |||t          t,          |dt           j        d¦  «         Œ±|j        t5          |dd ¦  «        k    r& |||t          t0          |dt           j        d¦  «         Œò�Œ"d S )Nc                 óV  •— d}t          |¦  «         |j        |k    sJ ‚|j        |k    sJ ‚|j        |k    sJ ‚|j        |k    sJ ‚|j        |k    sJ ‚|D ]-}	|                      |	¬¦  «        }
|	|v r	|
g k    sJ ‚Œ%|
g k    sJ ‚Œ.t          r‰                     | j	        |g¦  «         d S d S )N)
r%   r¯   r°   Úinet6r±   rŸ   r²   r³   r´   rµ   r#   )
r   rk   rl   ru   r   r€   r)   r   rF   r>   )ÚprocrR   rk   rl   ru   r   r€   ÚkindsÚ	all_kindsr$   r*   r6   s              €r+   Ú
check_connz+TestFilters.test_combos.<locals>.check_conn#  sü   ø€ ðˆIõ $ DÑ)Ô)Ð)Ø”; &Ò(Ð(Ð(Ð(Ø”9 Ò$Ð$Ð$Ð$Ø”: Ò&Ð&Ð&Ð&Ø”: Ò&Ð&Ð&Ð&Ø”; &Ò(Ð(Ð(Ð(Ø!ð &ð &�Ø×+Ò+°Ð+Ñ6Ô6�Ø˜5�=�=Ø 2š:˜:˜:˜:˜:à 2š:˜:˜:˜:˜:õ (ð CØ×0Ò0°´¸D¸6ÑBÔBÐBÐBÐBðCð Cr-   a4  
            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)]
            )Údirr|   )rk   r~   r•   r‡   T)Údeleterc   rJ   )r%   r¯   r°   r±   rŸ   )r%   r¯   r°   r³   r´   r>   )r%   r¯   rº   r±   r²   )r%   r¯   rº   r³   rµ   )r   ÚtextwrapÚdedentrv   ÚpathÚbasenamer“   ÚgetcwdÚformatÚintr   r   ÚpyrunÚevalr    r   r'   r(   Úchildrenr)   re   r>   r   r�   r   rŠ   Úgetattr)r6   r¾   Útcp_templateÚudp_templateÚtestfileÚtcp4_templateÚudp4_templateÚtcp6_templateÚudp6_templateÚ	tcp4_procÚ	tcp4_addrÚ	udp4_procÚ	udp4_addrÚ	tcp6_procÚ	tcp6_addrÚ	udp6_procÚ	udp6_addrÚpr*   rR   s   `                   r+   Útest_comboszTestFilters.test_combos  s  ø€ å‰Œˆð	Cð 	Cð 	Cð 	Cð 	Cõ>  ”ð (ñ ô ˆõ  ”ð (ñ ô ˆõ ”7×#Ò# D§O¢O½¼	¹¼ OÑ$DÔ$DÑEÔEˆØ$×+Ò+Ý•w‘<”< k¸(ð ,ñ 
ô 
ˆð %×+Ò+Ý•w‘<”< k¸(ð ,ñ 
ô 
ˆð %×+Ò+Ý•x‘=”= u°Xð ,ñ 
ô 
ˆð %×+Ò+Ý•x‘=”= u°Xð ,ñ 
ô 
ˆð —J’J˜}Ñ-Ô-ˆ	Ý� x¸Ð=Ñ=Ô=Ñ>Ô>ˆ	Ø—J’J˜}Ñ-Ô-ˆ	Ý� x¸Ð=Ñ=Ô=Ñ>Ô>ˆ	Ý‰?Œ?ð 		ØŸ
š
 =Ñ1Ô1ˆIÝ�]¨8¸DÐAÑAÔAÑBÔBˆIØŸ
š
 =Ñ1Ô1ˆIÝ�]¨8¸DÐAÑAÔAÑBÔBˆIˆIàˆIØˆIØˆIØˆIå”Ñ!Ô!×*Ò*Ñ,Ô,ð 3	ñ 3	ˆAØ×$Ò$Ñ&Ô&ˆDÝ�t‘9”9 ’>�>�>�>Øð 0ð 0�à”5˜IœMÒ)Ð)Ø�JØØÝÝ#Ø!ØÝÔ*Ø?ñ	ô 	ð 	ð 	ð ”U˜iœmÒ+Ð+Ø�JØØÝÝ"Ø!ØÝÔ(Ø?ñ	ô 	ð 	ð 	ð ”U�g i°¸Ñ=Ô=Ò=Ð=Ø�JØØÝ Ý#Ø!ØÝÔ*Ø?ñ	ô 	ð 	ð 	ð ”U�g i°¸Ñ=Ô=Ò=Ð=Ø�JØØÝ Ý"Ø!ØÝÔ(Ø?ñ	ô 	ð 	øñO0ð3	ð 3	r-   c                 ó"  — t          ¦   «         5  t          d¬¦  «        }t          |¦  «        t          ¦   «         rdndk    sJ ‚|D ]+}|j        t
          t          hv sJ ‚|j        t          k    sJ ‚Œ,t          d¬¦  «        }t          |¦  «        dk    sJ ‚|d         j        t
          k    sJ ‚|d         j        t          k    sJ ‚t          ¦   «         rUt          d¬¦  «        }t          |¦  «        dk    sJ ‚|d         j        t          k    sJ ‚|d         j        t          k    sJ ‚t          d¬¦  «        }t          |¦  «        t          ¦   «         rdndk    sJ ‚|D ]+}|j        t
          t          hv sJ ‚|j        t          k    sJ ‚Œ,t          d	¬¦  «        }t          |¦  «        dk    sJ ‚|d         j        t
          k    sJ ‚|d         j        t          k    sJ ‚t          ¦   «         rUt          d
¬¦  «        }t          |¦  «        dk    sJ ‚|d         j        t          k    sJ ‚|d         j        t          k    sJ ‚t          d¬¦  «        }t          |¦  «        t          ¦   «         rdndk    sJ ‚|D ]0}|j        t
          t          hv sJ ‚|j        t          t          hv sJ ‚Œ1t          ¦   «         rSt          d¬¦  «        }t          |¦  «        dk    sJ ‚|D ]+}|j        t          k    sJ ‚|j        t          t          hv sJ ‚Œ,t          rat          sZt          sSt          d¬¦  «        }t          |¦  «        dk    sJ ‚|D ]+}|j        t          k    sJ ‚|j        t          t          hv sJ ‚Œ,d d d ¦  «         d S # 1 swxY w Y   d S )Nr±   r#   rj   rc   rŸ   r   r²   r³   r´   rµ   r¯   é   rº   r&   é   )r   r,   re   r   rk   r   r   rl   r   r   r   r   r   r   )r6   r*   rR   s      r+   Ú
test_countzTestFilters.test_countª  s'  € ÝÑÔð 7	Bð 7	Bå,°%Ð8Ñ8Ô8ˆDÝ�t‘9”9¥m¡o¤oÐ!<  ¸1Ò=Ð=Ð=Ð=Øð 0ð 0�Ø”{¥wµÐ&9Ð9Ð9Ð9Ð9Ø”y¥KÒ/Ð/Ð/Ð/Ð/å,°&Ð9Ñ9Ô9ˆDÝ�t‘9”9 ’>�>�>�>Ø˜”7”>¥WÒ,Ð,Ð,Ð,Ø˜”7”<¥;Ò.Ð.Ð.Ð.å‰Œð 3Ý0°fÐ=Ñ=Ô=�Ý˜4‘y”y A’~�~�~�~Ø˜A”w”~­Ò1Ð1Ð1Ð1Ø˜A”w”|¥{Ò2Ð2Ð2Ð2å,°%Ð8Ñ8Ô8ˆDÝ�t‘9”9¥m¡o¤oÐ!<  ¸1Ò=Ð=Ð=Ð=Øð /ð /�Ø”{¥wµÐ&9Ð9Ð9Ð9Ð9Ø”y¥JÒ.Ð.Ð.Ð.Ð.å,°&Ð9Ñ9Ô9ˆDÝ�t‘9”9 ’>�>�>�>Ø˜”7”>¥WÒ,Ð,Ð,Ð,Ø˜”7”<¥:Ò-Ð-Ð-Ð-å‰Œð 2Ý0°fÐ=Ñ=Ô=�Ý˜4‘y”y A’~�~�~�~Ø˜A”w”~­Ò1Ð1Ð1Ð1Ø˜A”w”|¥zÒ1Ð1Ð1Ð1å,°&Ð9Ñ9Ô9ˆDÝ�t‘9”9¥m¡o¤oÐ!<  ¸1Ò=Ð=Ð=Ð=Øð >ð >�Ø”{¥wµÐ&9Ð9Ð9Ð9Ð9Ø”y¥[µ*Ð$=Ð=Ð=Ð=Ð=Ð=å‰Œð BÝ0°gÐ>Ñ>Ô>�Ý˜4‘y”y A’~�~�~�~Ø ð Bð B�DØœ;­(Ò2Ð2Ð2Ð2Øœ9­µjÐ(AÐAÐAÐAÐAÐAõ (ð Bµð B½Fð BÝ0°fÐ=Ñ=Ô=�Ý˜4‘y”y A’~�~�~�~Ø ð Bð B�DØœ;­'Ò1Ð1Ð1Ð1Øœ9­µjÐ(AÐAÐAÐAÐAÐAðo7	Bð 7	Bð 7	Bñ 7	Bô 7	Bð 7	Bð 7	Bð 7	Bð 7	Bð 7	Bð 7	Bð 7	Bøøøð 7	Bð 7	Bð 7	Bð 7	Bð 7	Bð 7	Bs   �M(NÎNÎNN)rG   rH   rI   r¶   r   r
   rÜ   rà   rJ   r-   r+   r©   r©   ÿ   se   € € € € € ðð ð ð> Ð 5Ð)Ñ)Ô)ðHð Hñ *Ô)ðHðT8Bð 8Bð 8Bð 8Bð 8Br-   r©   rM   rN   c                   ó>   — e Zd ZdZd„ Z e¦   «         d„ ¦   «         ZdS )ÚTestSystemWideConnectionszTests for net_connections().c                 ób  — d„ }t          ¦   «         5  ddlm} |                     ¦   «         D ]h\  }}|dk    rt          sŒ|\  }}t          j        |¦  «        }t          |¦  «        t          t          |¦  «        ¦  «        k    sJ ‚ ||||¦  «         Œi	 d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 óz   — | D ]7}|j         |v sJ ‚|j         t          k    r|j        |v sJ ‚t          |¦  «         Œ8d S )N)rk   r   rl   r   )r*   r¬   Útypes_rR   s       r+   r®   z0TestSystemWideConnections.test_it.<locals>.checkê  s_   € Øð .ð .�Ø”{ hÐ.Ð.Ð.Ð.Ø”;¥'Ò)Ð)Øœ9¨Ð.Ð.Ð.Ð.Ý'¨Ñ-Ô-Ð-Ð-ð	.ð .r-   r   )Ú	conn_tmapr&   )	r   Úpsutil._commonræ   Úitemsr   r'   r)   re   Úset)r6   r®   ræ   r$   Úgroupsr¬   rå   r*   s           r+   Útest_itz!TestSystemWideConnections.test_ité  s  € ð	.ð 	.ð 	.õ ÑÔð 
	.ð 
	.Ø0Ð0Ð0Ð0Ð0Ð0à )§¢Ñ 1Ô 1ð .ð .‘��fà˜6’>�>Õ*B�>ØØ#)Ñ �˜&ÝÔ-¨dÑ3Ô3�Ý˜4‘y”y¥C­¨D©	¬	¡N¤NÒ2Ð2Ð2Ð2Ø��d˜H fÑ-Ô-Ð-Ð-ð.ð
	.ð 
	.ð 
	.ñ 
	.ô 
	.ð 
	.ð 
	.ð 
	.ð 
	.ð 
	.ð 
	.ð 
	.øøøð 
	.ð 
	.ð 
	.ð 
	.ð 
	.ð 
	.s   ’BB$Â$B(Â+B(c                 ó²  ‡‡— t          ¦   «         5 }t          |¦  «        }d d d ¦  «         n# 1 swxY w Y   g Šd}g }t          |¦  «        D ]r}|                      ¦   «         }|                     |¦  «         t          j        d|› d�¦  «        }|                      |¦  «        }‰                     |j        ¦  «         Œs|D ]}t          |¦  «         Œˆfd„t          j        d¬¦  «        D ¦   «         }	‰D ]_Št          ˆfd„|	D ¦   «         ¦  «        |k    sJ ‚t          j        ‰¦  «        }
t          |
                     d¦  «        ¦  «        |k    sJ ‚Œ`d S )Né
   zŸ                import time, os
                from psutil.tests import create_sockets
                with create_sockets():
                    with open(r'z�', 'w') as f:
                        f.write("hello")
                    [time.sleep(0.1) for x in range(100)]
                c                 ó&   •— g | ]}|j         ‰v ¯|‘ŒS rJ   r=   )r?   ÚxÚpidss     €r+   rA   zFTestSystemWideConnections.test_multi_sockets_procs.<locals>.<listcomp>  s'   ø€ ð 
ð 
ð 
Ø¸Q¼UÀd¸]¸]ˆA¸]¸]¸]r-   r%   r#   c                 ó*   •— g | ]}|j         ‰k    ¯|‘ŒS rJ   r=   )r?   rï   r>   s     €r+   rA   zFTestSystemWideConnections.test_multi_sockets_procs.<locals>.<listcomp>   s    ø€ Ð;Ð;Ð;˜a¨a¬e°sªl¨l˜¨l¨l¨lr-   )r   re   Úranger“   ÚappendrÁ   rÂ   rÈ   r>   r    r'   r)   r(   )r6   ÚsocksÚexpectedÚtimesÚfnamesÚ_ÚfnameÚsrcÚsprocÚsysconsrÛ   r>   rð   s              @@r+   Útest_multi_sockets_procsz2TestSystemWideConnections.test_multi_sockets_procsý  sà  øø€ õ ÑÔð 	" Ý˜5‘z”zˆHð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"àˆØˆØˆÝ�u‘”ð 	#ð 	#ˆAØ—O’OÑ%Ô%ˆEØ�MŠM˜%Ñ Ô Ð Ý”/ð #ð "'ð	#ð #ð #ñ ô ˆCð —J’J˜s‘O”OˆEØ�KŠK˜œ	Ñ"Ô"Ð"Ð"ð ð 	!ð 	!ˆEÝ˜%Ñ Ô Ð Ð ð
ð 
ð 
ð 
ÝÔ-°5Ð9Ñ9Ô9ð
ñ 
ô 
ˆð ð 	=ð 	=ˆCÝÐ;Ð;Ð;Ð; 7Ð;Ñ;Ô;Ñ<Ô<ÀÒHÐHÐHÐHÝ”˜sÑ#Ô#ˆAÝ�q×(Ò(¨Ñ/Ô/Ñ0Ô0°HÒ<Ð<Ð<Ð<Ð<ð	=ð 	=s   ‘-­1´1N)rG   rH   rI   r›   rë   r   rý   rJ   r-   r+   râ   râ   å  sN   € € € € € à&Ð&ð.ð .ð .ð( ÐÑÔð$=ð $=ñ Ôð$=ð $=ð $=r-   râ   c                   ó   — e Zd Zd„ ZdS )ÚTestMiscc                 óÈ  — g }g }t          t          ¦  «        D ]”}|                     d¦  «        r}t          t          |¦  «        }t	          |¦  «        }|                     ¦   «         s
J |¦   «         ‚t          |vsJ ‚||vsJ ‚|                     |¦  «         |                     |¦  «         Œ•t          rt          j         t          j	         t          rt          j         d S d S )NÚCONN_)r¿   r'   Ú
startswithrË   ÚstrÚisupperró   r   Ú	CONN_IDLEÚ
CONN_BOUNDr   ÚCONN_DELETE_TCB)r6   ÚintsÚstrsr/   ÚnumÚstr_s         r+   Útest_net_connection_constantsz&TestMisc.test_net_connection_constants&  så   € ØˆØˆÝ�‘K”Kð 	"ð 	"ˆDØ�Š˜wÑ'Ô'ð "Ý�f dÑ+Ô+�Ý˜3‘x”x�Ø—|’|‘~”~Ð+Ð+ tÑ+Ô+Ð+Ý $����Ø $����Ø—’˜CÑ Ô Ð Ø—’˜DÑ!Ô!Ð!øÝð 	ÝÔÐÝÔÐÝð 	#ÝÔ"Ð"Ð"Ð"ð	#ð 	#r-   N)rG   rH   rI   r  rJ   r-   r+   rÿ   rÿ   %  s#   € € € € € ð#ð #ð #ð #ð #r-   rÿ   )4r›   rv   rn   rÁ   Ú
contextlibr   r   r   r   r   r'   r   r	   r
   r   r   r   r   r   rç   r   Úpsutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    rË   Úobjectr!   r,   rZ   Úxdist_groupr1   rL   r]   r�   r©   r[   râ   rÿ   rJ   r-   r+   ú<module>r     sL  ðð MÐ Là 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø  Ð  Ð  Ð  Ð  Ð  Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø %Ð %Ð %Ð %Ð %Ð %Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø )Ð )Ð )Ð )Ð )Ð )Ø .Ð .Ð .Ð .Ð .Ð .Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø (Ð (Ð (Ð (Ð (Ð (Ø &Ð &Ð &Ð &Ð &Ð &ð �˜Ð!1°6°6±8´8Ñ<Ô<€ðð ð ð „×Ò˜hÐÑ'Ô'ð%ð %ð %ð %ð %˜ñ %ô %ñ (Ô'ð%ð:/ð /ð /ð /ð /Ð,ñ /ô /ð /ð& „×Ò˜hÐÑ'Ô'ðZ3ð Z3ð Z3ð Z3ð Z3Ð/ñ Z3ô Z3ñ (Ô'ðZ3ðz „×Ò˜hÐÑ'Ô'ð4ð 4ð 4ð 4ð 4Ð,ñ 4ô 4ñ (Ô'ð4ðncBð cBð cBð cBð cBÐ$ñ cBô cBð cBðL „×Ò�L¨ÐÑ9Ô9ð<=ð <=ð <=ð <=ð <=Ð 2ñ <=ô <=ñ :Ô9ð<=ð~#ð #ð #ð #ð #ˆ~ñ #ô #ð #ð #ð #r-   