idQ6dZddlZddlZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddl Z ddl m Z dd l m Z dd l mZdd l mZdd l mZdd l mZddl mZddl mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&dd lm'Z'e j(Z)e*ed!e+Z,e#Gd"d#eZ-Gd$d%e-Z.e#Gd&d'e-Z/e#Gd(d)e-Z0Gd*d+e-Z1ej2ed,Gd-d.e-Z3Gd/d0eZ4e5d1krdd2l6m7Z7e7e8dSdS)3z;Tests for net_connections() and Process.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_CONNECTIONS_UNIX) SKIP_SYSCONS)PsutilTestCase) bind_socket)bind_unix_socket)check_connection_ntuple)create_sockets) reap_children)retry_on_failure) serialrun)skip_on_access_denied)tcp_socketpair)unix_socketpair) wait_for_fileSOCK_SEQPACKETc"eZdZdZdZddZdS)ConnectionTestCasec`ts$tstd}dSdSdSNallkind)r rthisproc connectionsselfconss R/opt/cloudlinux/venv/lib/python3.11/site-packages/psutil/tests/test_connections.pysetUpzConnectionTestCase.setUp6s? "' "''U'33DDD " " " "c`ts$tstd}dSdSdSr%)rr r)r*r+s r.tearDownzConnectionTestCase.tearDown<sA "6 "''U'33DDD " " " "r0r&c  tj|}n#tj$r trYdSwxYwfd|D}|||||dS)zGiven a process PID and its list of connections compare those against system-wide connections retrieved via psutil.net_connections. r'Nc:g|]}|jk |ddS)Npid).0cr7s r. zBConnectionTestCase.compare_procsys_connections..Rs(===q AcrcF r0)psutilnet_connections AccessDeniedr sort assertEqual)r,r7 proc_consr(sys_conss ` r.compare_procsys_connectionsz.ConnectionTestCase.compare_procsys_connectionsCs  -4888HH"      >===H===  H-----s 44N)r&)__name__ __module__ __qualname__r/r2rBr0r.r#r#3sF""" """......r0r#cNeZdZejeddZdZdZdS)TestBasicOperations requires rootct5tjdD]}t| ddddS#1swxYwYdSr%)rr;r<rr,conns r. test_systemzTestBasicOperations.test_systemZs    . ..E::: . .'---- . . . . . . . . . . . . . . . . . . .s(AA  A ct5tjdD]}t | ddddS#1swxYwYdSr%)rr;Processr*rrKs r. test_processz TestBasicOperations.test_process`s    . .((44%4@@ . .'---- . . . . . . . . . . . . . . . . . . .s:AAAc|ttjd|ttjddS)Nz???r') assertRaises ValueErrorr)r*r;r<)r,s r.test_invalid_kindz%TestBasicOperations.test_invalid_kindesD *h&:GGG *f&<5IIIIIr0N) rCrDrEunittestskipIfrrMrPrTrFr0r.rHrHXs_X_\?33..43. ... JJJJJr0rHc"eZdZdZdZdZdZeje ddZ dZ eje ddZ eje d d Zeje d d Zd S) TestUnconnectedSocketsz;Tests sockets which are open but not connected to anything.ctd}td|D}tstr||S|t|d|djdkrE|||j||dS)Nr&r'c g|] }|j|f SrF)fdr8r9s r.r:z=TestUnconnectedSockets.get_conn_from_sock..ps---1adAY---r0rr5) r)r*dictr rfilenor?lenr[)r,sockr-smaps r.get_conn_from_sockz)TestUnconnectedSockets.get_conn_from_sockns###//-----..  W  & &   SYY * * *AwzR  dkkmm!4!7GGG7Nr0c0||}t||jdkr-||j|||j|j||j|tj tj | }|s0tr)t|tr|}|jt kr |dd}||j||jt$krKt&rDt(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). r5Nr&r')rcrr[r?r_familytype getsockoptsocket SOL_SOCKETSO_TYPE getsocknamer isinstancebytesdecoderladdrrrr)r*rBosgetpid)r,rarLrpr-s r. check_socketz#TestUnconnectedSockets.check_socket{sd &&t,,%%% 7b==   TWdkkmm 4 4 4 dk222  Itv'8&.II K K K  "" # #E5!9!9 #LLNNE ;( " ""1"IE U+++ ;' ! !&: !''U'33D  , ,RY[[$U , K K K r0cd}tttt|5}||}||jtjddddS#1swxYwYdSN 127.0.0.1raddr) rrrrrsr?statusr; CONN_LISTENr,ryrarLs r. test_tcp_v4z"TestUnconnectedSockets.test_tcp_v4s [+DAAA B B >d$$T**D   T[&*< = = = > > > > > > > > > > > > > > > > > >;A44A8;A8zIPv6 not supportedcd}tttt|5}||}||jtjddddS#1swxYwYdSN)::1rrx) rrrrrsr?rzr;r{r|s r. test_tcp_v6z"TestUnconnectedSockets.test_tcp_v6s [;TBBB C C >t$$T**D   T[&*< = = = > > > > > > > > > > > > > > > > > >r~cd}tttt|5}||}||jtjddddS#1swxYwYdSru) rrrrrsr?rzr; CONN_NONEr|s r. test_udp_v4z"TestUnconnectedSockets.test_udp_v4s [*4@@@ A A >>>X_(*>??>>@?><<<X_(*>??<<@?<X_Y --<<.-<X_Y --<<.-<<.s$EEEa17n+D+D+D+D+Dr0remsgrr])rrr)r*r rr?r`r rr rrpr)r,rrrr-s r. test_unixzTestConnectedSocket.test_unixss""(00 ''V'44D F FFE4EEE   SYYt  4 4 4 I I5 IG I  a333  a333  a)G$q'-HHHH  a!?$q'-HHH LLNNN LLNNNNN LLNNN LLNNNNs DE''*FN) rCrDrErrUrVrrr rrFr0r.rrsu X_U12232&X_Y --.-r0rcDeZdZdZeedZdZdS) TestFilterscfd}t5|dtttgtt t g|dttgtt g|dtgtt g|dttgtg|dtgtg|dtgtg|dttgt g|d tgt g|d tgt gtr%|d tgtt t gddddS#1swxYwYdS) Nc^t|D]8}|j||j|9t sNt j|D]:}|j||j|9dSdS)Nr')r)r*assertInrfrgrr;r<)r(familiestypesrLr,s r.checkz'TestFilters.test_filters..checks ,,$,77 0 0 dk8444 di//// 4"2===44DMM$+x888MM$)U3333 4 444r0r&inetinet4tcprtcp6udpudp4udp6r)rrrrrrr!r)r,rs` r. test_filterszTestFilters.test_filterss 4 4 4 4 4   A A E%Hg. N; = = = E&H% + - - - E') + - - - E%H%- ! ! ! E&)- ! ! ! E&*- ! ! ! E%H%,    E&),    E&*,   $ Afi"J?AAA; A A A A A A A A A A A A A A A A A AsEE&&E*-E*)only_ifc tfd}tjd}tjd}tjtj}|ttd|}|ttd|}|ttd|}|ttd|} |} tt|d } |} tt|d } trg |} tt|d } |}tt|d }nd} d}d}d}t D].}|}t)|d |D]}|j| jkr'|||tt,| d t.jd 9|j| jkr'|||tt2| d t.jd p|jt7| ddkr'|||tt,|d t.jd|jt7|ddkr&|||tt2|d t.jd0dS)Ncd}t| |j| |j| |j| |j| |j||D]} || } | |vrtr |j |gdSdS)N) r&rrinet6rrrrrrr') rr?rfrgrprrzr*rrBr7) procrLrfrgrprrzkinds all_kindsr(r-r,s r. check_connz+TestFilters.test_combos..check_conn2s8I #D ) ) )   T[& 1 1 1   TY - - -   TZ / / /   TZ / / /   T[& 1 1 1! * *''T'225====$ C00D6BBBBB C Cr0a 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(60) 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(60) )dirrw)rfryrrT)deleter]rF)r&rrrr)r&rrrrr7)r&rrrr)r&rrrr)rtextwrapdedentrqpathbasenamergetcwdformatintrrpyrunevalr rr)childrenr*r?r`r7rr;r{rrgetattr)r,r tcp_template udp_templatetestfile tcp4_template udp4_template tcp6_template udp6_template tcp4_proc tcp4_addr udp4_proc udp4_addr tcp6_proc tcp6_addr udp6_proc udp6_addrpr-rLs` r. test_comboszTestFilters.test_combos.sw C C C C C* (  ( 7##DOO O$D$DEE$++w<> JJ}-- x===>> ??  =11I]8DAAABBI =11I]8DAAABBIIIIII""$$ H HA==??D   SYY * * * H H5IM))Jq$i%1FHHHHUim++Jq$Y%/FHHHHUgi====Jq$+y"%1FHHHHUgi====Jq$*i%/FHHH% H H Hr0c t5td}|t |t rdnd|D]I}||jttf||j tJtd}|t |d||djt||dj tt rtd}|t |d||djt||dj ttd}|t |t rdnd|D]I}||jttf||j tJtd }|t |d||djt||dj tt rtd }|t |d||djt||dj ttd }|t |t rd nd|D]P}||jttf||j ttfQt rtd }|t |d|D]I}||jt||j ttfJtrtststd}|t |d|D]I}||jt ||j ttfJddddS#1swxYwYdS)Nrr'rer]rrrrrrrrr)rr)r*r?r`rrrfrrrgrrrrr r)r,r-rLs r. test_countzTestFilters.test_counts   7 H7 H''U'33D   SYY]__(C! D D D 9 9 dkGX+>???  K8888''V'44D   SYY * * *   T!W^W 5 5 5   T!W\; 7 7 7 <+++88  TA...  a:::  a{;;;''U'33D   SYY]__(C! D D D 8 8 dkGX+>???  J7777''V'44D   SYY * * *   T!W^W 5 5 5   T!W\: 6 6 6 ;+++88  TA...  a:::  az:::''V'44D   SYY]__(C! D D D D D dkGX+>??? di+z)BCCCC H+++99  TA... HHD$$T[(;;;MM$)k:-FGGGG$ HW H H+++88  TA... HHD$$T[':::MM$)k:-FGGGGo7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 H7 HsUU--U14U1N)rCrDrErrr rrrFr0r.rrsl)A)A)AV5)))^H^H*)^H@8H8H8H8H8Hr0rrIc>eZdZdZdZedZdS)TestSystemWideConnectionszTests for net_connections().c fd}t5ddlm}|D]v\}}|dkrts|\}}t j|}t|tt|||||w ddddS#1swxYwYdS)Nc|D][}|j|||jtkr|j||t |\dS)Nr)rrfrrgr)r-rtypes_rLr,s r.rz0TestSystemWideConnections.test_it..checksn . . dk8 >>>;'))MM$)VM>>>'----  . .r0r) conn_tmapr) rpsutil._commonritemsrr;r<r?r`set)r,rrr(groupsrrr-s` r.test_itz!TestSystemWideConnections.test_its, . . . . .   . . 0 0 0 0 0 0 ) 1 1 . . f6>>*>>#) &-d33  TCD NN;;;dHf---- . . . . . . . . . . . . . . . . . . .sBB55B9<B9c t5}t|}dddn #1swxYwYg d}g}t|D]q}|}||t jd|z}||} |jr|D]}t| fdtj dD} D]{ | t fd| D|tj } | t| d||dS)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(60) c&g|] }|jv |SrFr6)r8xpidss r.r:zFTestSystemWideConnections.test_multi_sockets_procs..s;AEEE1EEEr0r&r'c*g|]}|jk |SrFr6)r8rr7s r.r:zFTestSystemWideConnections.test_multi_sockets_procs..s !E!E!E ! r0)rr`rangerappendrrrr7r r;r<r?rOr*) r,socksexpectedtimesfnames_fnamesrcsprocsysconsrr7rs @@r.test_multi_sockets_procsz2TestSystemWideConnections.test_multi_sockets_procss   "5zzH " " " " " " " " " " " " " " "u # #AOO%%E MM% /##CJJsOOE KK " " " " ! !E % f4%@@@ B BC   S!E!E!E!EW!E!E!EFF% ' ' 's##A   Su!5!566 A A A A  B Bs -11N)rCrDrErrrrrFr0r.rrsS&&...&$B$B$B$B$Br0rceZdZdZdS)TestMisccg}g}ttD]}|drtt|}t |}|t||||||||trtjtj trtj dSdS)NCONN_) rr; startswithrstr assertNotInrr CONN_IDLE CONN_BOUNDrCONN_DELETE_TCB)r,intsstrsnamenumstr_s r.test_connection_constantsz"TestMisc.test_connection_constants sKK " "Dw'' "fd++3xx  d+++  d+++ C    D!!!          #  " " " " # #r0N)rCrDrEr rFr0r.rr s######r0r__main__) run_from_name)9rrqrirrU contextlibrrrrrr;rr r r r r rrrrpsutil._compatr psutil.testsrrrrrrrrrrrrrrr rOr)robjectr!r#rHrXrrrVrrrCpsutil.tests.runnerr__file__rFr0r.rsVBA  (((((( ------%%%%%%''''''$$$$$$))))))000000''''''&&&&&&))))))""""""......''''''((((((&&&&&& 6>  !16688<< !.!.!.!.!.!.!. !.HJJJJJ,JJJ$ [<[<[<[<[</[<[< [<| 44444,44 4nFHFHFHFHFH$FHFHFHR//;B;B;B;B;B 2;B;B0/;B|#####~###* z111111M(r0