
    gS                        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& 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.                      Z0e!j,        -                    d$%           G d, d-e.                      Z1 G d. d/e.          Z2e!j,        3                    ed01           G d2 d3e.                      Z4 G d4 d5e          Z5dS )6zFTests 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_SEQPACKETc                 z    t          j                                        |           }| dv rt          |          S |S )Nkind)allunix)psutilProcessnet_connectionsr   )r%   conss     Y/var/www/html/ai-engine/env/lib/python3.11/site-packages/psutil/tests/test_connections.pythis_proc_net_connectionsr-   2   s>    >+++66D*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 r4   r5   r6   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 )zGiven 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>Q   s(    ===qAcrcFr.   )r(   r*   AccessDeniedr
   sort)r7   r?   	proc_consr%   sys_conss    `   r,   compare_procsys_connectionsz.ConnectionTestCase.compare_procsys_connectionsB   s    
	-4888HH" 	 	 	  	 >===H===H$$$$$$s    44N)r&   )__name__
__module____qualname__r8   r:   rG    r.   r,   r2   r2   9   sF        ; ; ;; ; ;% % % % % %r.   r2   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 r4   )r   r(   r*   r   r7   conns     r,   test_systemzTestBasicOperations.test_systemX   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 r4   )r   r-   r   rR   s     r,   test_processz TestBasicOperations.test_process^   s     	. 	.1u=== . .'----.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.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*   r6   s    r,   test_invalid_kindz%TestBasicOperations.test_invalid_kindc   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)
rH   rI   rJ   r   markskipifr   rT   rV   rZ   rK   r.   r,   rM   rM   W   sa        [_==. . >=.
. . .
/ / / / /r.   rM   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                 n   t          d          }t          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                      g | ]}|j         |fS rK   )fdr@   rA   s     r,   rB   z=TestUnconnectedSockets.get_conn_from_sock.<locals>.<listcomp>p   s    ---1adAY---r.      r   r=   )r-   dictr   r   filenolenra   )r7   sockr+   smaps       r,   get_conn_from_sockz)TestUnconnectedSockets.get_conn_from_sockn   s    (e444-----.. 	W 	 &&t99>>>>AwzRDKKMM*->>>>7Nr.   c                    |                      |          }t          |           |j        dk    r|j        |                                k    sJ |j        |j        k    sJ |j        |                    t          j        t          j	                  k    sJ |
                                }|s0t          r)t          |t                    r|                                }|j        t          k    r
|dd         }|j        |k    sJ |j        t"          k    r@t$          r9t'          d          }|                     t+          j                    |d           |S )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$   )ri   r   ra   re   familytype
getsockoptsocket
SOL_SOCKETSO_TYPEgetsocknamer   
isinstancebytesdecoder   laddrr   r   r-   rG   osgetpid)r7   rg   rS   rv   r+   s        r,   check_socketz#TestUnconnectedSockets.check_socket{   s@   
 &&t,,%%% 7b==7dkkmm++++{dk))))yDOOF,=v~NNNNNN   "" 	# 	#E5!9!9 	#LLNNE;("""1"IEzU"""" ;'!!&>!,%888D,,RY[[$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   addrrK   )	r   r   r   r   ry   raddrstatusr(   CONN_LISTENr7   r   rg   rS   s       r,   test_tcp_v4z"TestUnconnectedSockets.test_tcp_v4   s    [+DAAABB 	5d$$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 supportedrO   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~   rK   )	r   r   r   r   ry   r   r   r(   r   r   s       r,   test_tcp_v6z"TestUnconnectedSockets.test_tcp_v6   s    [;TBBBCC 	5t$$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 r{   )	r   r   r   r   ry   r   r   r(   	CONN_NONEr   s       r,   test_udp_v4z"TestUnconnectedSockets.test_udp_v4   s    [*4@@@AA 	3T$$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   ry   r   r   r(   r   r   s       r,   test_udp_v6z"TestUnconnectedSockets.test_udp_v6   s    [:DAAABB 	3d$$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)rm    	
get_testfnr   r   r   ry   r   r   r(   r   r7   testfnrg   rS   s       r,   test_unix_tcpz$TestUnconnectedSockets.test_unix_tcp       ""%f;???@@ 	3D$$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)rH   rI   rJ   __doc__ri   ry   r   r   r[   r\   r   r   r   r   r   r   r   rK   r.   r,   r^   r^   j   s4       EE    <5 5 5 [MMOO+4HII5 5 JI53 3 3 [MMOO+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 SUONSrO   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~   rk   r   rc   )r-   r   r   rf   r   r(   CONN_ESTABLISHEDclose)r7   r   serverclientr+   s        r,   test_tcpzTestConnectedSocket.test_tcp   s    (f555;;;;'d;;;	,&999Dt99>>>>7>V%<<<<<7>V%<<<<<< LLNNNLLNNNNN LLNNNLLNNNNs   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   rb   s     r,   rB   z1TestConnectedSocket.test_unix.<locals>.<listcomp>   s$    EEEa17n+D+D+D+D+Dr.   rk   r   )r   r    r-   rv   r   r   r   rf   r	   r   r   r   )r7   r   r   r   r+   s        r,   	test_unixzTestConnectedSocket.test_unix   s   ""(00	,&999DQ>$q'->>$>>>Q>$q'->>$>>> F F FE4EEEt99>>>> 	B 	B5 	BG 	BAw}****Aw}****$q'-"@47=AAAAA Q6a6AAAALLNNNLLNNNNN LLNNNLLNNNNs   D
E *FN)rH   rI   rJ   r   r   r[   r\   r   r   r   r   rK   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-   rl   rm   r   r(   r*   )r%   familiestypesrS   s       r,   checkz'TestFilters.test_filters.<locals>.check  s    1t<<< * *{h....yE))))) ."2=== . .D;(22229-----. .. .r.   r&   inetinet4tcpr   tcp6udpudp4udp6r'   )r   r   r   r   r   r   r"   r   )r7   r   s     r,   test_filterszTestFilters.test_filters  s   	. 	. 	.  	 	E(G,j.9  
 E&7H-Z/HIIIE'G9{J&?@@@E%'8,{m<<<E&7)k]333E&8*{m444E%'8,zl;;;E&7)j\222E&8*zl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   rl   rm   rv   r   r   r*   r   rG   r?   )procrS   rl   rm   rv   r   r   kinds	all_kindsr%   r+   r7   s              r,   
check_connz+TestFilters.test_combos.<locals>.check_conn$  s    I $D)));&((((9$$$$:&&&&:&&&&;&((((! & &+++665==2:::::2::::: ( C00D6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}   )rl   r   r   r   T)deleterc   rK   )r&   r   r   r   r   )r&   r   r   r   r   r?   )r&   r   r   r   r   )r&   r   r   r   r   )r   textwrapdedentrw   pathbasenamer   getcwdformatintr   r   pyrunevalr!   r   r(   r)   childrenr*   rf   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+   rS   s   `                   r,   test_comboszTestFilters.test_combos   s   	C 	C 	C 	C 	C>   (     (   7##DOO	O$D$DEE$++w<<k( , 
 
 %++w<<k( , 
 
 %++x==uX , 
 
 %++x==uX , 
 
 JJ}--	x===>>	JJ}--	x===>>	?? 		

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

=11I]8DAAABBIIIIII!!**,, 3	 3	A$$&&Dt99>>>> 0 05IM))J#!*?	 	 	 	 Uim++J"!(?	 	 	 	 Ugi====J #!*?	 	 	 	 Ugi====J "!(?	 	 	O03	 3	r.   c                 "   t                      5  t          d          }t          |          t                      rdndk    sJ |D ]+}|j        t
          t          f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          f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          fv sJ |j        t          t          fv sJ 1t                      rSt          d          }t          |          dk    sJ |D ]+}|j        t          k    sJ |j        t          t          fv sJ ,t          rat          sZt          sSt          d          }t          |          dk    sJ |D ]+}|j        t          k    sJ |j        t          t          fv sJ ,d d d            d S # 1 swxY w Y   d S )Nr   r$   rk   rc   r   r   r   r   r   r   r      r   r'      )r   r-   rf   r   rl   r   r   rm   r   r   r   r   r   r   )r7   r+   rS   s      r,   
test_countzTestFilters.test_count  s'    7	B 7	B,%888Dt99moo!<1==== 0 0{w&99999yK/////,&999Dt99>>>>7>W,,,,7<;.... 30f===4yyA~~~~Aw~1111Aw|{2222,%888Dt99moo!<1==== / /{w&99999yJ.....,&999Dt99>>>>7>W,,,,7<:---- 20f===4yyA~~~~Aw~1111Aw|z1111,&999Dt99moo!<1==== > >{w&99999y[*$====== B0g>>>4yyA~~~~  B BD;(22229j(AAAAAA ( B BF B0f===4yyA~~~~  B BD;'11119j(AAAAAAo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)rH   rI   rJ   r   r   r
   r   r   rK   r.   r,   r   r      se          > 5)))H H *)HT8B 8B 8B 8B 8Br.   r   rN   rO   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)rl   r   rm   r   )r+   r   types_rS   s       r,   r   z0TestSystemWideConnections.test_it.<locals>.check  s_     . .{h....;'))9....'----	. .r.   r   )	conn_tmapr'   )	r   psutil._commonr   itemsr   r(   r*   rf   set)r7   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4yyCD		NN2222dHf----.
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	. 
	.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 ]q}|                                 }|                    |           t          j        d|z            }|                     |          }                    |j                   r|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
   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)]
                c                 &    g | ]}|j         v |S rK   r>   )r@   xpidss     r,   rB   zFTestSystemWideConnections.test_multi_sockets_procs.<locals>.<listcomp>  s'     
 
 
QUd]]A]]]r.   r&   r$   c                 *    g | ]}|j         k    |S rK   r>   )r@   r   r?   s     r,   rB   zFTestSystemWideConnections.test_multi_sockets_procs.<locals>.<listcomp>!  s     ;;;aaeslllllr.   )r   rf   ranger   appendr   r   r   r?   r!   r(   r*   r)   )r7   socksexpectedtimesfnames_fnamesrcsprocsysconsr   r?   r   s              @@r,   test_multi_sockets_procsz2TestSystemWideConnections.test_multi_sockets_procs  s     	"5zzH	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"u 	# 	#AOO%%EMM%   / # #  C JJsOOEKK	""""  	! 	!E%    
 
 
 
-5999
 
 
  	= 	=C;;;;7;;;<<HHHHs##Aq((//00H<<<<<	= 	=s   -11N)rH   rI   rJ   r   r   r   r   rK   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)r7   intsstrsr0   numstr_s         r,   test_net_connection_constantsz&TestMisc.test_net_connection_constants'  s    KK 	" 	"Dw'' "fd++3xx||~~++t+++$$C   D!!! 	 	#""""	# 	#r.   N)rH   rI   rJ   r  rK   r.   r,   r   r   &  s#        # # # # #r.   r   )6r   rw   ro   r   
contextlibr   r   r   r   r   r(   r   r	   r
   r   r   r   r   r   r   r   psutil._compatr   psutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   objectr"   r-   r[   xdist_groupr2   rM   r^   r   r   r\   r   r   rK   r.   r,   <module>r     s^   M L 				                                                                                  ( ( ( ( ( (                   1 1 1 1 1 1 % % % % % % ' ' ' ' ' ' $ $ $ $ $ $ ) ) ) ) ) ) 0 0 0 0 0 0 ' ' ' ' ' ' 4 4 4 4 4 4       & & & & & & ) ) ) ) ) ) . . . . . . ' ' ' ' ' ' ( ( ( ( ( ( & & & & & & !16688<<   h''% % % % % % % ('%:/ / / / /, / / /& h''Z3 Z3 Z3 Z3 Z3/ Z3 Z3 ('Z3z 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.   