
    ;^hR                     0   S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
r
SSK
Jr  SS	K
Jr  SS
K
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSKJ!r!  SSKJ"r"  SSKJ#r#  SSKJ$r$  SS KJ%r%  \&" \S!\'" 5       5      r(S" r)\RT                  RW                  S#S$9 " S% S&\5      5       r, " S' S(\,5      r-\RT                  RW                  S#S$9 " S) S*\,5      5       r.\RT                  RW                  S#S$9 " S+ S,\,5      5       r/ " S- S.\,5      r0\RT                  Rc                  \S/S09 " S1 S2\,5      5       r2 " S3 S4\5      r3g)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                 l    [         R                  " 5       R                  U S9nU S;   a  [        U5      $ U$ )Nkind>   allunix)psutilProcessnet_connectionsr   )r$   conss     O/var/www/html/env/lib/python3.13/site-packages/psutil/tests/test_connections.pythis_proc_net_connectionsr,   1   s4    >>+++6D*400K    serial)namec                   *    \ rS rSrS rS rSS jrSrg)ConnectionTestCase8   c                 "    [        SS9/ :X  d   eg Nr%   r#   r,   selfs    r+   setUpConnectionTestCase.setUp:   s    (e4:::r-   c                 "    [        SS9/ :X  d   eg r4   r5   r6   s    r+   tearDownConnectionTestCase.tearDown=   s    (e4:::r-   c                     [         R                  " US9nU Vs/ s H  oUR                  U:X  d  M  USS PM     nnUR                  5         UR                  5         X$:X  d   eg! [         R                   a    [        (       a   ge f = fs  snf )zGiven a process PID and its list of connections compare
those against system-wide connections retrieved via
psutil.net_connections.
r#   N)r'   r)   AccessDeniedr
   pidsort)r7   r@   	proc_consr$   sys_conscs         r+   compare_procsys_connections.ConnectionTestCase.compare_procsys_connectionsA   s    
	--48H %-=HqFAcrFH=$$$ "" 	 u	 >s   A$ B
	B
$BB N)r%   )__name__
__module____qualname____firstlineno__r8   r;   rE   __static_attributes__rG   r-   r+   r1   r1   8   s    ;;%r-   r1   c                   `    \ rS rSr\R
                  R                  \SS9S 5       rS r	S r
Srg)	TestBasicOperationsV   requires rootreasonc                     [        5          [        R                  " SS9 H  n[        U5        M     S S S 5        g ! , (       d  f       g = fr4   )r   r'   r)   r   r7   conns     r+   test_systemTestBasicOperations.test_systemW   s1    ..E:'- ; s	   ';
A	c                     [        5          [        SS9 H  n[        U5        M     S S S 5        g ! , (       d  f       g = fr4   )r   r,   r   rT   s     r+   test_process TestBasicOperations.test_process]   s+    1u='- > s   0
>c                    [         R                  " [        5         [        SS9  S S S 5        [         R                  " [        5         [        R
                  " SS9  S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)Nz???r#   )r   raises
ValueErrorr,   r'   r)   r6   s    r+   test_invalid_kind%TestBasicOperations.test_invalid_kindb   sM    ]]:&%51 ']]:&"". '& '&&&s   
A%A6%
A36
BrG   N)rH   rI   rJ   rK   r   markskipifr   rV   rY   r^   rL   rG   r-   r+   rN   rN   V   s2    [[_=. >.
.
/r-   rN   c                   l   \ rS rSrSrS rS rS r\R                  R                  \" 5       (       + SS9S 5       rS	 r\R                  R                  \" 5       (       + SS9S
 5       r\R                  R                  \(       + SS9S 5       r\R                  R                  \(       + SS9S 5       rSrg)TestUnconnectedSocketsi   z;Tests sockets which are open but not connected to anything.c                 X   [        SS9nU Vs0 s H  o3R                  U_M     nn[        (       d  [        (       a  XAR	                  5          $ [        U5      S:X  d   eUS   R                  S:w  a0  XAR	                  5          R                  UR	                  5       :X  d   eUS   $ s  snf )Nr%   r#      r   r>   )r,   fdr   r   filenolen)r7   sockr*   rD   smaps        r+   get_conn_from_sock)TestUnconnectedSockets.get_conn_from_sockm   s    (e4!%&Aa&6WW &&t9>!>AwzzRKKM*-->>>7N 's   B'c                    U R                  U5      n[        U5        UR                  S:w  a   UR                  UR                  5       :X  d   eUR                  UR                  :X  d   eUR
                  UR                  [        R                  [        R                  5      :X  d   eUR                  5       nU(       d%  [        U[        5      (       a  UR                  5       nUR                  [        :X  a  USS nUR                  U:X  d   eUR                  [         :X  a8  ["        (       a-  [%        SS9nU R'                  [(        R*                  " 5       USS9  U$ )zGiven 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#   )rl   r   rg   rh   familytype
getsockoptsocket
SOL_SOCKETSO_TYPEgetsockname
isinstancebytesdecoder   laddrr   r   r,   rE   osgetpid)r7   rj   rU   rz   r*   s        r+   check_socket#TestUnconnectedSockets.check_socketz   s   
 &&t,% 77b=77dkkm+++{{dkk)))yyDOOF,=,=v~~NNNN   "E511LLNE;;(""1IEzzU""" ;;'!&>&>,%8D,,RYY[$U,Kr-   c                     Sn[        [        [        [        US95       nU R	                  U5      nUR
                  S:X  d   eUR                  [        R                  :X  d   e S S S 5        g ! , (       d  f       g = fN	127.0.0.1r   addrrG   )	r   r   r   r   r}   raddrstatusr'   CONN_LISTENr7   r   rj   rU   s       r+   test_tcp_v4"TestUnconnectedSockets.test_tcp_v4   sa    [+DABd$$T*D::###;;&"4"4444 CBB   AA--
A;zIPv6 not supportedrQ   c                     Sn[        [        [        [        US95       nU R	                  U5      nUR
                  S:X  d   eUR                  [        R                  :X  d   e S S S 5        g ! , (       d  f       g = fN)::1r   r   rG   )	r   r   r   r   r}   r   r   r'   r   r   s       r+   test_tcp_v6"TestUnconnectedSockets.test_tcp_v6   sa    [;TBCt$$T*D::###;;&"4"4444 DCCr   c                     Sn[        [        [        [        US95       nU R	                  U5      nUR
                  S:X  d   eUR                  [        R                  :X  d   e S S S 5        g ! , (       d  f       g = fr   )	r   r   r   r   r}   r   r   r'   	CONN_NONEr   s       r+   test_udp_v4"TestUnconnectedSockets.test_udp_v4   sa    [*4@AT$$T*D::###;;&"2"2222 BAAr   c                     Sn[        [        [        [        US95       nU R	                  U5      nUR
                  S:X  d   eUR                  [        R                  :X  d   e S S S 5        g ! , (       d  f       g = fr   )	r   r   r   r   r}   r   r   r'   r   r   s       r+   test_udp_v6"TestUnconnectedSockets.test_udp_v6   sa    [:DABd$$T*D::###;;&"2"2222 CBBr   
POSIX onlyc                    U R                  5       n[        [        U[        S95       nU R	                  U5      nUR
                  S:X  d   eUR                  [        R                  :X  d   e S S S 5        g ! , (       d  f       g = fN)rq    	
get_testfnr   r   r   r}   r   r   r'   r   r7   testfnrj   rU   s       r+   test_unix_tcp$TestUnconnectedSockets.test_unix_tcp   g    "%f;?@D$$T*D::###;;&"2"2222 A@@   AA66
Bc                    U R                  5       n[        [        U[        S95       nU R	                  U5      nUR
                  S:X  d   eUR                  [        R                  :X  d   e S S S 5        g ! , (       d  f       g = fr   r   r   s       r+   test_unix_udp$TestUnconnectedSockets.test_unix_udp   r   r   rG   N)rH   rI   rJ   rK   __doc__rl   r}   r   r   r`   ra   r   r   r   r   r   r   r   rL   rG   r-   r+   rc   rc   i   s    E<5 [[MO+4HI5 J53 [[MO+4HI3 J3 [[E	,73 83 [[E	,73 83r-   rc   c                       \ rS rSrSr\R                  R                  \SS9S 5       r	\R                  R                  \
(       + SS9S 5       rSrg	)
TestConnectedSocket   z>Test socket pairs which are actually connected to
each other.
zunreliable on SUONSrQ   c                    Sn[        SS9/ :X  d   e[        [        US9u  p# [        SS9n[        U5      S:X  d   eUS   R                  [
        R                  :X  d   eUS   R                  [
        R                  :X  d   e UR                  5         UR                  5         g ! UR                  5         UR                  5         f = f)Nr   tcp4r#   r   ro   r   rf   )r,   r   r   ri   r   r'   CONN_ESTABLISHEDclose)r7   r   serverclientr*   s        r+   test_tcpTestConnectedSocket.test_tcp   s    (f5;;;'d;	,&9Dt9>!>7>>V%<%<<<<7>>V%<%<<<< LLNLLN LLNLLNs   A B% %"Cr   c                    U R                  5       n[        U5      u  p# [        SS9nUS   R                  (       a  US   R                  (       a   U5       eUS   R                  (       a  US   R                  (       a   U5       e[
        (       d  [        (       a#  U Vs/ s H  oUR                  S:w  d  M  UPM     nn[        U5      S:X  d   e[        (       d!  [        (       d  [        (       d  [        (       aU  US   R                  S:X  d   eUS   R                  S:X  d   eXS   R                  =(       d    US   R                  :X  d   eO+US   R                  =(       d    US   R                  U:X  d   eUR                  5         UR                  5         g s  snf ! UR                  5         UR                  5         f = f)Nr&   r#   r   rf   z/var/run/logro   r   )r   r   r,   rz   r   r   r   ri   r	   r   r   r   )r7   r   r   r   r*   rD   s         r+   	test_unixTestConnectedSocket.test_unix   sR   "(0	,&9DQ$q'-->$>8Q$q'-->$>8v $(E4a77n+D4Et9>!>u55GGAw}}***Aw}}***q'--"@47==AAA Q6a6AAALLNLLN F LLNLLNs%   BF"  F7F=B?F" F" ""GrG   N)rH   rI   rJ   rK   r   r   r`   ra   r   r   r   r   rL   rG   r-   r+   r   r      sZ     [[&;< =& [[E	,7 8r-   r   c                   8    \ rS rSrS r\" \S9S 5       rS rSr	g)TestFilters   c                 f   S n[        5          U" S[        [        [        /[        [
        [        /5        U" S[        [        /[        [
        /5        U" S[        /[        [
        /5        U" S[        [        /[        /5        U" S[        /[        /5        U" S[        /[        /5        U" S[        [        /[
        /5        U" S	[        /[
        /5        U" S
[        /[
        /5        [        (       a  U" S[        /[        [
        [        /5        S S S 5        g ! , (       d  f       g = f)Nc                    [        U S9 H'  nUR                  U;   d   eUR                  U;   a  M'   e   [        (       d@  [        R
                  " U S9 H'  nUR                  U;   d   eUR                  U;   a  M'   e   g g )Nr#   )r,   rp   rq   r   r'   r)   )r$   familiestypesrU   s       r+   check'TestFilters.test_filters.<locals>.check  sz    1t<{{h...yyE))) =  <"22=D;;(22299--- >  r-   r%   inetinet4tcpr   tcp6udpudp4udp6r&   )r   r   r   r   r   r   r!   r   )r7   r   s     r+   test_filtersTestFilters.test_filters   s    	. (G,j.9
 &7H-Z/HI'G9{J&?@%'8,{m<&7)k]3&8*{m4%'8,zl;&7)j\2&8*zl3''I *n= s   DD""
D0)only_ifc                   ^  [        5         U 4S jn[        R                  " S5      n[        R                  " S5      n[        R                  R                  T R                  [        R                  " 5       S95      nUR                  [        [        5      SUS9nUR                  [        [        5      SUS9nUR                  [        [        5      SUS9nUR                  [        [        5      SUS9nT R                  U5      n	[        [        USS	95      n
T R                  U5      n[        [        USS	95      n[        5       (       aI  T R                  U5      n[        [        USS	95      nT R                  U5      n[        [        USS	95      nOS nS nS nS n[         R"                  " 5       R%                  5        GH6  nUR'                  5       n[)        U5      S
:X  d   eU GH
  nUR*                  U	R*                  :X  a'  U" UU[        [,        U
S[         R.                  S5        ME  UR*                  UR*                  :X  a'  U" UU[        [0        US[         R2                  S5        M  UR*                  [5        USS 5      :X  a'  U" UU[        [,        US[         R.                  S5        M  UR*                  [5        USS 5      :X  d  M  U" UU[        [0        US[         R2                  S5        GM     GM9     g )Nc                   > Sn[        U5        UR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eUR
                  U:X  d   eU H)  n	U R                  U	S9n
X;   a
  U
/ :w  d   eM!  U
/ :X  a  M)   e   [        (       a  TR                  U R                  U/5        g g )N)
r%   r   r   inet6r   r   r   r   r   r   r#   )
r   rp   rq   rz   r   r   r)   r   rE   r@   )procrU   rp   rq   rz   r   r   kinds	all_kindsr$   r*   r7   s              r+   
check_conn+TestFilters.test_combos.<locals>.check_conn#  s    I $D);;&(((99$$$::&&&::&&&;;&(((!+++6=2:%:2:%: " ('00D6B (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   )rp   r   r   r   T)deleterf   rG   )r%   r   r   r   r   )r%   r   r   r   r   r@   )r%   r   r   r   r   )r%   r   r   r   r   )r   textwrapdedentr{   pathbasenamer   getcwdformatintr   r   pyrunevalr    r   r'   r(   childrenr)   ri   r@   r   r   r   r   getattr)r7   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*   rU   s   `                   r+   test_combosTestFilters.test_combos  s   	C>   (    (  77##DOO		O$DE$++w<k( , 
 %++w<k( , 
 %++x=uX , 
 %++x=uX , 
 JJ}-	x=>	JJ}-	x=>	??

=1I]8DABI

=1I]8DABIIIII!**,A$$&Dt9>!>55IMM)#!**?	 UUimm+"!((?	 UUgi== #!**?	 UUgi== "!((?	O  -r-   c                    [        5          [        SS9n[        U5      [        5       (       a  SOS:X  d   eU H5  nUR                  [
        [        1;   d   eUR                  [        :X  a  M5   e   [        SS9n[        U5      S:X  d   eUS   R                  [
        :X  d   eUS   R                  [        :X  d   e[        5       (       aL  [        SS9n[        U5      S:X  d   eUS   R                  [        :X  d   eUS   R                  [        :X  d   e[        SS9n[        U5      [        5       (       a  SOS:X  d   eU H5  nUR                  [
        [        1;   d   eUR                  [        :X  a  M5   e   [        S	S9n[        U5      S:X  d   eUS   R                  [
        :X  d   eUS   R                  [        :X  d   e[        5       (       aL  [        S
S9n[        U5      S:X  d   eUS   R                  [        :X  d   eUS   R                  [        :X  d   e[        SS9n[        U5      [        5       (       a  SOS:X  d   eU H;  nUR                  [
        [        1;   d   eUR                  [        [        1;   a  M;   e   [        5       (       aU  [        SS9n[        U5      S:X  d   eU H5  nUR                  [        :X  d   eUR                  [        [        1;   a  M5   e   [        (       ak  [        (       d`  [        (       dU  [        SS9n[        U5      S:X  d   eU H5  nUR                  [        :X  d   eUR                  [        [        1;   a  M5   e   S S S 5        g ! , (       d  f       g = f)Nr   r#   ro   rf   r   r   r   r   r   r   r      r   r&      )r   r,   ri   r   rp   r   r   rq   r   r   r   r   r   r   )r7   r*   rU   s      r+   
test_countTestFilters.test_count  s   ,%8Dt9moo1==={{w&9999yyK///  -&9Dt9>!>7>>W,,,7<<;...0f=4yA~%~Aw~~111Aw||{222,%8Dt9moo1==={{w&9999yyJ...  -&9Dt9>!>7>>W,,,7<<:---0f=4yA~%~Aw~~111Aw||z111,&9Dt9moo1==={{w&9999yy[*$====  0g>4yA~%~ D;;(22299j(AAAA !
 ('FF0f=4yA~%~ D;;'11199j(AAAA !k s.   AM5.D	M5;DM5A M52A2M5(M55
NrG   N)
rH   rI   rJ   rK   r   r   r
   r   r   rL   rG   r-   r+   r   r      s)    > 5)H *HT8Br-   r   rP   rQ   c                   8    \ rS rSrSrS r\" 5       S 5       rSrg)TestSystemWideConnectionsi  zTests for net_connections().c                 B   S n[        5          SSKJn  UR                  5        H^  u  p4US:X  a  [        (       d  M  Uu  pV[
        R                  " U5      n[        U5      [        [        U5      5      :X  d   eU" XuU5        M`     S S S 5        g ! , (       d  f       g = f)Nc                     U  HF  nUR                   U;   d   eUR                   [        :w  a  UR                  U;   d   e[        U5        MH     g )N)rp   r   rq   r   )r*   r   types_rU   s       r+   r   0TestSystemWideConnections.test_it.<locals>.check  sD    {{h...;;')99...'-	 r-   r   )	conn_tmapr&   )	r   psutil._commonr   itemsr   r'   r)   ri   set)r7   r   r   r$   groupsr   r   r*   s           r+   test_it!TestSystemWideConnections.test_it  s}    	. 0 ) 16>*B*B#) --d34yCD	N222df- !2 s   A9B
Bc                    [        5        n[        U5      nS S S 5        / nSn/ n[        U5       Hj  nU R                  5       nUR	                  U5        [
        R                  " SU S35      nU R                  U5      n	UR	                  U	R                  5        Ml     U H  n[        U5        M     [        R                  " SS9 V
s/ s H  oR                  U;   d  M  U
PM     nn
U Hl  n[        U V
s/ s H  oR                  U:X  d  M  U
PM     sn
5      W:X  d   e[        R                  " U5      n[        UR                  S5      5      U:X  a  Ml   e   g ! , (       d  f       GNJ= fs  sn
f s  sn
f )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)]
                r%   r#   )r   ri   ranger   appendr   r   r   r@   r    r'   r)   r(   )r7   socksexpectedpidstimesfnames_fnamesrcsprocxsysconsr@   r   s                 r+   test_multi_sockets_procs2TestSystemWideConnections.test_multi_sockets_procs  sL    5zH uAOO%EMM% // '! "' (	# C JJsOEKK		"  E%   --59
9!UUd]A9 	 
 C7;7aeesl7;<HHHs#Aq((/0H<<< 5 .
 <s#   EE,E,5E1
E1

E)rG   N)	rH   rI   rJ   rK   r   r   r   r  rL   rG   r-   r+   r   r     s!    &.( $= $=r-   r   c                       \ rS rSrS rSrg)TestMisci%  c                    / n/ n[        [        5       H  nUR                  S5      (       d  M  [        [        U5      n[	        U5      nUR                  5       (       d   U5       e[        U;  d   eXA;  d   eUR                  U5        UR                  U5        M     [        (       a   [        R                    [        R                    [        (       a  [        R                    g g )NCONN_)r   r'   
startswithr   strisupperr  r   	CONN_IDLE
CONN_BOUNDr   CONN_DELETE_TCB)r7   intsstrsr/   numstr_s         r+   test_net_connection_constants&TestMisc.test_net_connection_constants&  s    KDw''fd+3x||~~+t+~$&&C D!   57"" r-   rG   N)rH   rI   rJ   rK   r!  rL   rG   r-   r+   r  r  %  s    #r-   r  )4r   r{   rs   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,   r`   xdist_groupr1   rN   rc   r   r   ra   r   r  rG   r-   r+   <module>r'     ss   M 	                 (   1 % ' $ ) 0 ' 4  & ) . ' ( & !168< h'% % (%:/, /& h'Z3/ Z3 (Z3z h'4, 4 (4ncB$ cBL L9<= 2 <= :<=~#~ #r-   