
    ;^hG                        S r SSKrSSKrSSKrSSKrSSK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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  \=(       a    \(       + =(       a    \(       + rS r " S S\5      r  " S S\5      r!g)zeIterate over all process PIDs and for each one of them invoke and
test all psutil.Process() methods.
    N)AIX)BSD)FREEBSD)LINUX)MACOS)NETBSD)OPENBSD)OSX)POSIX)WINDOWS)
CI_TESTING)PYTEST_PARALLEL)VALID_PROC_STATUSES)PsutilTestCase)check_connection_ntuple)create_sockets)is_namedtuple)is_win_secure_system_proc)process_namespace)pytestc                 X  ^ ^^	^
^^ [        5       mU U4S jmUU	U U
U4S jn [        R                  " T 5      m TR                  SS/5      nUS   US   sm	m
STR                  0n[        T5      nUR                  UR                  SS9 H  u  pV U" 5       X6'   M     U" 5         U$ ! [        R                   a    TR	                  T 5        0 s $ f = f! [        R                   a  nT" UTT	T
5         S nAMn  S nAff = f! [        R                   a    TR                  T5         g f = f)Nc                   > TR                  U R                  T5        U R                  b  TR                  U R                  U5        [        U [        R
                  5      (       aW  TR                  U5        U R                  b8  TR                  U R                  S5        TR                  U R                  U5        O0[        U [        R                  5      (       a  TR                  U5        [        U 5        [        U 5        g Nr   )assertEqualpidname
isinstancepsutilZombieProcessassertProcessZombieppidassertGreaterEqualNoSuchProcessassertProcessGonestrrepr)excprocr   r!   r   tcases       O/var/www/html/env/lib/python3.13/site-packages/psutil/tests/test_process_all.pycheck_exception"proc_info.<locals>.check_exception2   s    #''3'88chh-c6//00%%d+xx#((15!!#((D1V1122##D)CS	    c                     > TS:w  a   TR                  S5        g g ! [        R                   a  n T" U TTT5         S n A g S n A ff = fr   )waitr   Error)r'   r+   r   r   r!   r(   s    r*   do_waitproc_info.<locals>.do_wait@   sF    !87		!  << 7T4667s    AA  Ar!   r   r   F)clear_cache)r   r   Processr#   assertPidGoneas_dictr   r   itergettersr0   r$   )r   r1   dinfonsfunfun_namer'   r+   r   r!   r(   r)   s   `       @@@@@r*   	proc_infor>   /   s    E7 7~~c"LL&&)* vY&	
dtxx t$  WWRZZUWCMC!$ D 		)  C 	  << T46  &%&s:   B' D 	C''CCC>(C99C>%D)(D)c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S(r*g))*TestFetchAllProcesses`   zTest which iterates over all running processes and performs
some sanity checks against Process API's returned values.
Uses a process pool to get info about all processes.
c                 |    [         R                  " S5        [        (       a  [        R                  " 5       U l        g g NF)r   
_set_debugUSE_PROC_POOLmultiprocessingPoolpoolselfs    r*   setUpTestFetchAllProcesses.setUpf   s,    %  =',,.DI r-   c                     [         R                  " S5        [        (       a5  U R                  R	                  5         U R                  R                  5         g g NT)r   rD   rE   rH   	terminatejoinrI   s    r*   tearDownTestFetchAllProcesses.tearDownm   s8    $=II!IINN r-   c                     SSK Jn  [        (       a/  U R                  R	                  U[
        R                  " 5       5      $ [
        R                  " 5        Vs/ s H
  o!" U5      PM     nnU$ s  snf )Nr   )r>   )psutil.tests.test_process_allr>   rE   rH   imap_unorderedr   pids)rJ   r>   r   lss       r*   iter_proc_info$TestFetchAllProcesses.iter_proc_infos   sQ     	<=99++Iv{{}EE,2KKM:MS)C.MB:I ;s   A-c                 6   / nU R                  5        HL  nUR                  5        H5  u  p4[        X5      n U" XB5        USS/ S S0 4;  a  U(       d   U5       eM5  M7     MN     U(       a   U R                  SR                  U5      5      eg ! [         a    SnUSR	                  UUS   [        U5      U5      -  nUS-  nUS[        R                  " 5        3-  nSR                  S	 UR                  5        5       5      S-   nUR                  U5         M  f = f)
Nr            zH
======================================================================
z+FAIL: name=test_{}, pid={}, ret={}
info={}
r   zF----------------------------------------------------------------------
c              3   ,   #    U  H
  nS U-   v   M     g7f)z    N ).0is     r*   	<genexpr>1TestFetchAllProcesses.test_all.<locals>.<genexpr>   s     !HA7a-s   )rX   itemsgetattr	Exceptionformatr&   	traceback
format_excrP   
splitlinesappendfail)rJ   failuresr:   r   valuemethss          r*   test_allTestFetchAllProcesses.test_all~   s!   '')D#zz|t*,%  QRr2$>>$+e+u ?'  , *, ))BGGH-.. # ! '.AGNN  K K 	A MA2i224566A		!H!HH4OAOOA&'s   BB	DDc                 r    [        U[        5      (       d   eU H  n[        U[        5      (       a  M   e   g N)r   listr%   )rJ   retr:   parts       r*   cmdlineTestFetchAllProcesses.cmdline   s2    #t$$$$DdC(((( r-   c                    [        U[        5      (       d   eUR                  5       U:X  d   eU(       a  [        (       a  UR	                  S5      (       d  g [
        R                  R                  U5      (       d   U5       e[        (       a  [
        R                  R                  U5      (       aZ  [        [
        S5      (       aD  [        [
        S5      (       a.   [
        R                  " U[
        R                  5      (       d   eg g g g g g ! [         a5    [
        R                  R                  U5      (       a  [        (       d  e  g  g f = f)Nz.exeaccessX_OK)r   r%   stripr   endswithospathisabsr   isfilehasattrr{   r|   AssertionErrorexistsr   rJ   rv   r:   s      r*   exeTestFetchAllProcesses.exe   s    #s####yy{c!!!ws||F3377==%%*s*% u,,2x((WR-@-@"!yybgg6666 .A( -u  * "77>>#..zz! 8B."s   ,D :EEc                 B    [        U[        5      (       d   eUS:  d   eg r   r   intr   s      r*   r   TestFetchAllProcesses.pid        #s####axxr-   c                 X    [        U[        5      (       d   eUS:  d   e[        U5        g r   )r   r   r>   r   s      r*   r!   TestFetchAllProcesses.ppid   s'    #s####axx#r-   c                     [        U[        5      (       d   e[        (       a  U(       d  [        US   5      (       a  g [        (       d  U(       d   [        U5      5       eg g )Nr   )r   r%   r   r   r   r&   r   s      r*   r   TestFetchAllProcesses.name   sI    #s####73#<T%[#I#Is!S	!3 r-   c                    [        U[        5      (       d   e US:  d   e [        R                  " S[        R                  " U5      5        g ! [         a&    [        (       a  US   [        R
                  :X  a   NZe f = f)Nr   statusz%Y %m %d %H:%M:%S)	r   floatr   r	   r   STATUS_ZOMBIEtimestrftime	localtimer   s      r*   create_time!TestFetchAllProcesses.create_time   sl    #u%%%%	!8O8 	)4>>#+>?  	w4>V-A-AA	s   A ,A><A>c                 x    [        U5      (       d   eU H"  n[        U[        5      (       d   eUS:  a  M"   e   g r   r   r   r   )rJ   rv   r:   uids       r*   uidsTestFetchAllProcesses.uids   s;    S!!!!Cc3''''!8O8 r-   c                     [        U5      (       d   eU H<  n[        U[        5      (       d   e[        (       a  M'  [        (       a  M4  US:  a  M<   e   g r   )r   r   r   r   r   )rJ   rv   r:   gids       r*   gidsTestFetchAllProcesses.gids   sF    S!!!! Cc3''''5axx r-   c                     [        U[        5      (       d   eUR                  5       U:X  d   eUR                  5       (       d   eg rt   )r   r%   r}   r   s      r*   usernameTestFetchAllProcesses.username   s9    #s####yy{c!!!yy{{{r-   c                 v    [        U[        5      (       d   eU(       d   U5       eUS:w  d   eU[        ;   d   eg )N?)r   r%   r   r   s      r*   r   TestFetchAllProcesses.status   s;    #s####Csczz))))r-   c                     [        U5      (       d   eU H*  n[        U[        5      (       d   eUS:w  d  M"  US:  a  M*   e   g )Nr   r   )rJ   rv   r:   fields       r*   io_counters!TestFetchAllProcesses.io_counters   sC    S!!!!EeS)))){z!z r-   c                    [         (       ag  [        UR                  [        5      (       d   e[        UR                  [        5      (       d   eUR                  S:  d   eUR                  S:  d   eg [
        R                  [
        R                  [
        R                  [
        R                  /n[        U[        5      (       d   eUS:  d   eX;   d   eg r   )
r   r   ioclassr   rn   r   IOPRIO_VERYLOW
IOPRIO_LOWIOPRIO_NORMALIOPRIO_HIGH)rJ   rv   r:   choicess       r*   ioniceTestFetchAllProcesses.ionice   s    5ckk3////cii----;;!###99>!> %%!!$$""	G c3''''!8O8>!>r-   c                     [        U[        5      (       d   e[        (       a  US:X  a  [        US   5      (       a  g US:  d   eg )Nr   r      )r   r   r   r   r   s      r*   num_threads!TestFetchAllProcesses.num_threads  s=    #s####7sax$=d5k$J$Jaxxr-   c                     [        U[        5      (       d   eU Hq  n[        U5      (       d   eUR                  S:  d   eUR                  S:  d   eUR
                  S:  d   eU H   n[        U[        [        45      (       a  M    e   Ms     g r   )r   ru   r   id	user_timesystem_timer   r   )rJ   rv   r:   tr   s        r*   threadsTestFetchAllProcesses.threads  s    #t$$$$A ####44199;;!###==A%%%!%#u6666  r-   c                 x    [        U5      (       d   eU H"  n[        U[        5      (       d   eUS:  a  M"   e   g r   )r   r   r   )rJ   rv   r:   ns       r*   	cpu_timesTestFetchAllProcesses.cpu_times  s;    S!!!!Aa''''6M6 r-   c                 j    [        U[        5      (       d   eSUs=::  a  S::  d   U5       e   U5       eg )Nr[   g      Y@r   r   r   s      r*   cpu_percent!TestFetchAllProcesses.cpu_percent  s8    #u%%%%c"U"'C'"'C'"r-   c                    [        U[        5      (       d   e[        (       a  US:X  a  g US:  d   e[        R                  " 5       S:X  a  US:X  d   eU[        [        [        R                  " 5       5      5      ;   d   eg )Nr   r   r   )r   r   r   r   	cpu_countru   ranger   s      r*   cpu_numTestFetchAllProcesses.cpu_num!  sk    #s####7sbyaxx"!8O8d5!1!1!345555r-   c                 p   [        U5      (       d   eU H"  n[        U[        5      (       d   eUS:  a  M"   e   [        (       aq  UR                  UR
                  :  d   eUR                  UR                  :  d   eUR                  UR                  :  d   eUR                  UR                  :  d   eg g r   )r   r   r   r   	peak_wsetwsetpeak_paged_pool
paged_poolpeak_nonpaged_poolnonpaged_poolpeak_pagefilepagefilerJ   rv   r:   rn   s       r*   memory_info!TestFetchAllProcesses.memory_info*  s    S!!!!EeS))))A::  7==CHH,,,&&#..888))S->->>>>$$444	 r-   c                    [        U5      (       d   e[        R                  " 5       R                  nUR                   HW  n[        X5      n[        U[        5      (       d   eUS:  d   e[        (       d  [        (       a  US;   a  MK  XS::  a  MR   U5       e   [        (       a  UR                  UR                  :  d   eg g )Nr   >   vmsdata)r   r   virtual_memorytotal_fieldsre   r   r   r   r
   pssuss)rJ   rv   r:   r   r   rn   s         r*   memory_full_info&TestFetchAllProcesses.memory_full_info5  s    S!!!!%%'--KKDC&EeS))))A::u!8 >'4'>   577cgg%%% r-   c                    [        U[        5      (       d   eU GH  n[        UR                  [        5      (       d   e[        UR                  [
        5      (       d   eUR                  R                  5       UR                  :X  d   e[        (       a  UR                  S:X  d   eO[        (       a  [        UR                  [        5      (       d   e[        UR                  [
        5      (       d   e[        UR                  [        5      (       d   eUR                  S:  d   eUR                  S;   d   eUR                  S:  d   eO[        (       a  UR                  (       d  GMR  [        R                  R                  UR                  5      (       d   U5       e [        R                  " UR                  5      n[        R                   " UR"                  5      (       d   U5       eGM     g ! [$         a     GM  f = f)Nr   r   >   arwa+r+)r   ru   fdr   r   r%   r}   r   r   positionmodeflagsr   r   r   statS_ISREGst_modeFileNotFoundError)rJ   rv   r:   fsts        r*   
open_files TestFetchAllProcesses.open_filesE  su   #t$$$$AaddC((((affc****66<<>QVV+++wttrz!z!!**c2222!!&&#....!!''3////zzQ&vv!<<<<ww{"{QVV77==((+!+(3WWQVV_ ||BJJ//22/- & % s   " G44
HHc                 B    [        U[        5      (       d   eUS:  d   eg r   r   r   s      r*   num_fdsTestFetchAllProcesses.num_fds_  r   r-   c                     [        5          [        U5      [        [        U5      5      :X  d   eU H   n[        U5      (       d   e[	        U5        M"     S S S 5        g ! , (       d  f       g = frt   )r   lensetr   r   )rJ   rv   r:   conns       r*   net_connections%TestFetchAllProcesses.net_connectionsc  sQ    s8s3s8},,,$T****'-  s   A
A
A,c                    [        U[        5      (       d   eUR                  5       U:X  d   eU(       aj  [        R                  R                  U5      (       d   U5       e [        R                  " U5      n[        R                  " UR                  5      (       d   eg g ! [         a]  n[        (       a)  [        R                  R                  U5      (       a   S nAg UR                  [        R                  :w  a  e  S nAg S nAff = frt   )r   r%   r}   r   r   r   r   S_ISDIRr   OSErrorr   r   _psplatformis_permission_errerrnoENOENT)rJ   rv   r:   r   errs        r*   cwdTestFetchAllProcesses.cwdj  s    #s####yy{c!!!77==%%*s*%	0WWS\ ||BJJ////   7v11CCCHHYY%,,. /	s   !B   
D*/DDDc                 j    [        U[        5      (       d   eSUs=::  a  S::  d   U5       e   U5       eg )Nr   d   r   r   s      r*   memory_percent$TestFetchAllProcesses.memory_percentz  s4    #u%%%%C3####r-   c                 2    [        U[        5      (       d   eg rt   )r   boolr   s      r*   
is_running TestFetchAllProcesses.is_running~  s    #t$$$$r-   c                     [        U[        5      (       d   eU/ :w  d   e[        [        [        R                  " 5       5      5      nU H!  n[        U[
        5      (       d   eXC;   a  M!   e   g rt   )r   ru   r   r   r   r   )rJ   rv   r:   cpusr   s        r*   cpu_affinity"TestFetchAllProcesses.cpu_affinity  s`    #t$$$$byyE&**,-.Aa%%%%99 r-   c                     [        U[        [        S 5      45      (       d   eUbW  [        R                  R                  U5      (       d   U5       e[        R                  R                  U5      (       d   U5       eg g rt   )r   r%   typer   r   r   r   r   s      r*   terminalTestFetchAllProcesses.terminal  sd    #T$Z01111?77==%%*s*%77>>#&&++& r-   c                    U GHa  n[        UR                  [        5      (       d   e[        UR                  [        5      (       d   e[        UR                  [        5      (       d   eUR
                   H  n[        X45      nUS:X  al  UR                  S5      (       a  M,  [        (       a  US:X  a  M?  [        R                  R                  UR                  5      (       d   UR                  5       eM  US:X  a  U(       d   [        U5      5       eM  US:X  a&  [        (       d  U(       d   [        U5      5       eM  M  [        U[        5      (       d   eUS:  a  M   e   GMd     g )Nr   )[zanon_inode:pvclockaddrpermsr   )r   r  r%   r  r   r   re   
startswithr   r   r   r&   r   r   )rJ   rv   r:   ntfnamern   s         r*   memory_maps!TestFetchAllProcesses.memory_maps  s   Bbggs++++bhh,,,,bggs++++*F?''(<== su	1 77==11:277:1 f_ -$u+-5g%"7$1d5k1u # &eS1111 A:%:% $	 r-   c                 B    [        U[        5      (       d   eUS:  d   eg r   r   r   s      r*   num_handles!TestFetchAllProcesses.num_handles  r   r-   c                 f   [        U[        5      (       d   e[        (       a  SUs=::  a  S::  d   U5       e   U5       eg [        [        5       Vs/ s H+  nUR                  S5      (       d  M  [        [        U5      PM-     nnX;   d   e[        U[        R                  5      (       d   eg s  snf )Ni   _PRIORITY_CLASS)	r   r   r   dirr   r~   re   enumIntEnum)rJ   rv   r:   x
prioritiess        r*   niceTestFetchAllProcesses.nice  s    #s####5###(S(#(S(# V$A::/0 #"$  
 $$$c4<<0000s   B./B.c                 x    [        U5      (       d   eU H"  n[        U[        5      (       d   eUS:  a  M"   e   g r   r   r   s       r*   num_ctx_switches&TestFetchAllProcesses.num_ctx_switches  s<    S!!!!EeS))))A:: r-   c                     [        U[        5      (       d   e[        U5      S:X  d   eUS   S:  d   eUS   S:  d   eg )N   r   r   r   )r   tupler   r   s      r*   rlimitTestFetchAllProcesses.rlimit  sE    #u%%%%3x1}}1v||1v||r-   c                     [        U[        5      (       d   eUR                  5        H3  u  p4[        U[        5      (       d   e[        U[        5      (       a  M3   e   g rt   )r   dictrd   r%   )rJ   rv   r:   kvs        r*   environTestFetchAllProcesses.environ  sM    #t$$$$IIKDAa%%%%a%%%%  r-   )rH   N)+__name__
__module____qualname____firstlineno____doc__rK   rQ   rX   rq   rx   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r  r#  r&  r0  r3  r8  r>  __static_attributes__r_   r-   r*   r@   r@   `   s    
/	/6)
"&
"@  
*"""7(6	5& 34.0 $%,&21&r-   r@   c                   *    \ rS rSrSrS rS rS rSrg)TestPidsRangei  a  Given pid_exists() return value for a range of PIDs which may or
may not exist, make sure that psutil.Process() and psutil.pids()
agree with pid_exists(). This guarantees that the 3 APIs are all
consistent with each other. See:
https://github.com/giampaolo/psutil/issues/2359

XXX - Note about Windows: it turns out there are some "hidden" PIDs
which are not returned by psutil.pids() and are also not revealed
by taskmgr.exe and ProcessHacker, still they can be instantiated by
psutil.Process() and queried. One of such PIDs is "conhost.exe".
Running as_dict() for it reveals that some Process() APIs
erroneously raise NoSuchProcess, so we know we have problem there.
Let's ignore this for now, since it's quite a corner case (who even
imagined hidden PIDs existed on Windows?).
c                 0    [         R                  " S5        g rC   r   rD   rI   s    r*   rK   TestPidsRange.setUp  s    % r-   c                 0    [         R                  " S5        g rN   rI  rI   s    r*   rQ   TestPidsRange.tearDown  s    $r-   c                     S nS n[        SS5       H=  n[        (       a  U" U5      (       a  M  U R                  US9   U" U5        S S S 5        M?     g ! , (       d  f       MQ  = f)Nc                     [        SU  S3S5      nU   U HD  nUR                  S5      (       d  M  [        UR                  5       S   5      nX0:g  s  sS S S 5        $    [	        S5      e! , (       d  f       g = f! [
         a     gf = f)Nz/proc/z/statusrbs   Tgid:r   z'Tgid' line not foundF)openr   r   split
ValueErrorr   )r   r   linetgids       r*   is_linux_tid+TestPidsRange.test_it.<locals>.is_linux_tid  s    >6#g.5  !??844#&tzz|A#7D $(;. Q ! %%<== Q % s'   A; A*!A*A**
A8;
BBc                 (   Sn [         R                  " U 5      n U(       a=  [         R                  " U 5        [        (       d  U [         R                  " 5       ;   d   eg [
        (       dC  [        R                  " [         R                  5         [         R                  " U 5        S S S 5        [        (       d  U [         R                  " 5       ;  d   eg ! , (       d  f       N5= f! [         R                  [        4 a    US-  nUS:X  a  e  Of = fGM  )N   r   r   )r   
pid_existsr4   r   rV   r	   r   raisesr#   r0   r   )r   r.  r   s      r*   check$TestPidsRange.test_it.<locals>.check  s    
 A**3/s+&w#&&++-#77#7   'w!'v/C/C!D &s 3 "E&w#&fkkm#;;#;  "E!D n5 FAAv ! s0   AC% /C% C%.C% 
C"C% %&DDr   i  )r   )r   r   subTest)rJ   rU  r[  r   s       r*   test_itTestPidsRange.test_it  sX    	>	: D>Cuc** #&c
 '& " '&s   	A
A$	r_   N)	r@  rA  rB  rC  rD  rK   rQ   r^  rE  r_   r-   r*   rG  rG    s     ! 4r-   rG  )"rD  r,  r  rF   r   r   r   rh   r   r   r   r   r   r   r   r	   r
   r   r   psutil.testsr   r   r   r   r   r   r   r   r   r   rE   r>   r@   rG  r_   r-   r*   <module>ra     s       	               # ( , ' 0 ' & 2 * 
 @j.@-@.bi&N i&XKN Kr-   