
    ;^h#C                        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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  \(       a  SSKrSSKrSSKJ r   S$S jr!S r"S r#S r$S r%S r&\RN                  RQ                  \(       + SS9 " S S\5      5       r)\RN                  RQ                  \(       + SS9 " S  S!\5      5       r*\RN                  RQ                  \(       + SS9 " S" S#\5      5       r+g)%zPOSIX specific tests.    N)mock)AIX)BSD)LINUX)MACOS)OPENBSD)POSIX)SUNOS)AARCH64)HAS_NET_IO_COUNTERS)
PYTHON_EXE)PsutilTestCase)pytest)retry_on_failure)sh)skip_on_access_denied)spawn_testproc)	terminate)getpagesizec                 h   S/n[         (       a  UR                  S5        Ub  UR                  S[        U5      /5        O9[        (       d  [
        (       a  UR                  S5        OUR                  S5        [        (       a  U R                  SS5      n UR                  S	U /5        [        U5      n[         (       a  UR                  5       OUR                  5       S
S n/ nU H0  nUR                  5       n [        U5      nUR                  U5        M2     Uc  U$ US   $ ! [         a     N+f = f)zoWrapper for calling the ps command with a little bit of cross-platform
support for a narrow range of features.
psz--no-headersNz-pz-Aaxstartstimez-o   r   )r   appendextendstrr
   r   replacer   
splitlinesstripint
ValueError)fmtpidcmdoutput
all_outputlines         I/var/www/html/env/lib/python3.13/site-packages/psutil/tests/test_posix.pyr   r   -   s   
 &Cu

>"


D#c(#$	##

4

4ukk'7+JJc{WF$)EV v/@/@/B12/FFJzz|	t9D 	$  {!}  		s   :D$$
D10D1c                 \    Sn[         (       a  Sn[        X5      R                  5       nUS   $ )Ncommandcommr   )r
   r   split)r%   fieldr,   s      r*   ps_namer0   d   s-    Eun""$G1:    c                     Sn[         (       d  [        (       a  Sn[        X5      n[        R                  " SSU5      nUR                  5       $ )Nr,   argsz\(python.*?\)$ )r   r
   r   resubr!   )r%   r/   outs      r*   ps_argsr8   l   s=    E
see
U.C
&&"B
,C99;r1   c                 6    Sn[         (       a  Sn[        X5      $ )Nrssrssizer   r   r%   r/   s     r*   ps_rssr>   v   s    E
se>r1   c                 6    Sn[         (       a  Sn[        X5      $ )Nvszvsizer<   r=   s     r*   ps_vszrB   }   s    E
se>r1   c                     [        SU  35      R                  5       nUR                  S5      S   nUR                  5       n[        US   5      S-  n[        US   5      S-  n[        US   5      S-  n[        US	   R                  S
S5      5      nXVXx4$ ! [         a9  nS[        U5      R	                  5       ;   a  [
        R                  " S5      ee S nAff = f)Nzdf -k zdevice busyzdf returned EBUSY
r               %r4   )r   r!   RuntimeErrorr   lowerr   skipr.   r"   floatr   )	devicer7   errr)   fields	sys_totalsys_usedsys_freesys_percents	            r*   dfrU      s    6&"#))+
 99T?1DZZ\FF1I%I6!9~$H6!9~$Hq	))#r23K77  CHNN,,++122s   B 
C!4CCz
POSIX onlyreasonc                      \ rS rSrSr\S 5       r\S 5       rS rS r	S r
S rS	 r\" 5       \" 5       S
 5       5       r\" 5       \" 5       S 5       5       rS rS rS rS r\R,                  R/                  \=(       d    \SS9S 5       rS r\" 5       S 5       r\R,                  R/                  \SS9\R,                  R/                  \SS9S 5       5       rSr g)TestProcess   zBCompare psutil results against 'ps' command line utility (mainly).c                 `    [        [        SS/[        R                  S9R                  U l        g )Nz-Ez-O)stdin)r   r   
subprocessPIPEr%   clss    r*   
setUpClassTestProcess.setUpClass   s&     t$JOO

# 	r1   c                 .    [        U R                  5        g N)r   r%   r_   s    r*   tearDownClassTestProcess.tearDownClass   s    #''r1   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       nX:X  d   eg )Nppid)r   r%   psutilProcessrh   )selfppid_psppid_psutils      r*   	test_ppidTestProcess.test_ppid   s9    VTXX&nnTXX.335%%%r1   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       R
                  nX:X  d   eg )Nuid)r   r%   ri   rj   uidsreal)rk   uid_ps
uid_psutils      r*   test_uidTestProcess.test_uid   s?    E488$^^DHH-22499
###r1   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       R
                  nX:X  d   eg )Nrgid)r   r%   ri   rj   gidsrs   )rk   gid_ps
gid_psutils      r*   test_gidTestProcess.test_gid   s?    FDHH%^^DHH-22499
###r1   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       nX:X  d   eg )Nuser)r   r%   ri   rj   username)rk   username_psusername_psutils      r*   test_usernameTestProcess.test_username   s9    * ..2;;=---r1   c                 *   [         R                  " 5       n[        R                  " S[        S9 nUR                  5       [        UR                  5       R                  5      :X  d   eUR                  (       d   e S S S 5        g ! , (       d  f       g = f)Nzpsutil.pwd.getpwuidside_effect)
ri   rj   r   patchKeyErrorr   r   rr   rs   called)rk   pfuns      r*   test_username_no_resolution'TestProcess.test_username_no_resolution   s]     NNZZ-8D::<3qvvx}}#5555::: EDDs   AB
Bc                     [         R                  " S5        [        U R                  5      n[        R
                  " U R                  5      R                  5       S   S-  nX:X  d   eg )N皙?r   rE   )timesleepr>   r%   ri   rj   memory_info)rk   rss_ps
rss_psutils      r*   test_rss_memoryTestProcess.test_rss_memory   N    
 	

3!^^DHH-99;A>E
###r1   c                     [         R                  " S5        [        U R                  5      n[        R
                  " U R                  5      R                  5       S   S-  nX:X  d   eg )Nr   r   rE   )r   r   rB   r%   ri   rj   r   )rk   vsz_ps
vsz_psutils      r*   test_vsz_memoryTestProcess.test_vsz_memory   r   r1   c                    [        U R                  5      n[        R                  R	                  U5      R                  5       n[        R                  " U R                  5      R                  5       R                  5       n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      n[        R                  " SSU5      nX:X  d   eg )Nz\d.\dr4   z\d)r0   r%   ospathbasenamerK   ri   rj   namer5   r6   )rk   name_psname_psutils      r*   	test_nameTestProcess.test_name   s    $((#''""7+113nnTXX.335;;= &&2w/ffXr;7&&G,ffUB4%%%r1   c                 $   Sn/ SQn[         R                  " SUS9   [         R                  " SUS9   [        R                  " 5       nUR	                  5       S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nlong-program-name)long-program-name-extendedfoobarpsutil._psplatform.Process.namereturn_value"psutil._psplatform.Process.cmdliner   )r   r   ri   rj   r   )rk   r   cmdliner   s       r*   test_name_longTestProcess.test_name_long   st     #>ZZ9M47 NN$vvx#????	 NM  NMs"   B,A0B0
A>	:B
Bc                 F   Sn[         R                  " SUS9   [         R                  " S[        R                  " SS5      S9   [        R                  " 5       nUR                  5       S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fNr   r   r   r   r   r4   r   )r   r   ri   AccessDeniedrj   r   rk   r   r   s      r*   test_name_long_cmdline_ad_exc)TestProcess.test_name_long_cmdline_ad_exc   s}     #ZZ9M4"//26 NN$vvx#6666 NM  NMs#   +B,B0B
B	B
B c                    Sn[         R                  " SUS9   [         R                  " S[        R                  " SS5      S9   [        R                  " 5       n[
        R                  " [        R                  5         UR                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = fr   )r   r   ri   NoSuchProcessrj   r   raisesr   r   s      r*   test_name_long_cmdline_nsp_exc*TestProcess.test_name_long_cmdline_nsp_exc   s     #ZZ9M4"00B7 NN$]]6#7#78FFH 9 NM 98  NMs;   +C	:B8=B'B8C	'
B51B88
C	C		
Czps -o start not availablerV   c                 l   [        SU R                  5      n[        R                  " U R                  5      R	                  5       n[
        R
                  R                  U5      R                  S5      n[        U5      n[
        R
                  R                  U5      R                  S5      nXU1;   d   eg )Nr   z%H:%M:%S)	r   r%   ri   rj   create_timedatetimefromtimestampstrftimeround)rk   time_pstime_psutiltime_psutil_tstampround_time_psutilround_time_psutil_tstamps         r*   test_create_timeTestProcess.test_create_time  s    Wdhh'nnTXX.::<%..<<

(:
 	
 "+.#+#4#4#B#B$

(:
 	! /GHHHHr1   c                     [        U R                  5      n[        R                  " U R                  5      R	                  5       n X:X  d   eg ! [
         a    US [        U5       nX:X  d   e g f = frd   )r0   r%   ri   rj   exeAssertionErrorlen)rk   ps_pathnamepsutil_pathnameadjusted_ps_pathnames       r*   test_exeTestProcess.test_exe  sl    dhh' ..2668
	7111 	7 $//A[1A#B 666	7s   A A/.A/c                 .   [        U R                  5      nSR                  [        R                  " U R                  5      R                  5       5      n[        (       a1  [        U5      [        U5      :  a  UR                  U5      (       d   eg X:X  d   eg )N )	r8   r%   joinri   rj   r   r   r   
startswith)rk   
ps_cmdlinepsutil_cmdlines      r*   test_cmdlineTestProcess.test_cmdline+  sl    TXX&
&..":"B"B"DE7s:^)<<!,,Z8888///r1   znot reliable on SUNOSznot reliable on AIXc                     [        SU R                  5      n[        R                  " 5       R	                  5       nX:X  d   eg )Nnice)r   r%   ri   rj   r   )rk   ps_nicepsutil_nices      r*   	test_niceTestProcess.test_nice9  s5     VTXX&nn&++-%%%r1    N)!__name__
__module____qualname____firstlineno____doc__classmethodra   re   rn   rv   r}   r   r   r   r   r   r   r   r   r   r   r   markskipifr   r   r   r   r   r
   r   r   __static_attributes__r   r1   r*   rY   rY      s/   L 
  &
$
$
.
 $  $ $  $&@7 [[-HII JI7( 0 0 [[&=>[[$9:& ; ?&r1   rY   c                      \ rS rSrSr\" 5       S 5       r\R                  R                  \
SS9\R                  R                  \R                  " S5      (       + SS9\R                  R                  \(       + SS9S	 5       5       5       r\" 5       S
 5       r\" 5       S 5       rS rS rS rS r\R                  R                  \SS9\" 5       S 5       5       rSrg)TestSystemAPIsiA  zTest some system APIs.c                    [        [        S5      5      n[        R                  " 5       n[        (       d  [
        (       a  SU;  a  UR                  SS5        [        U5      [        U5      -
  S:  aR  U Vs/ s H  o3U;  d  M
  UPM     snU Vs/ s H  o3U;  d  M
  UPM     sn-   nU R                  S[        U5      -   5      eg s  snf s  snf )Nr%   r   r   zdifference: )
sortedr   ri   pidsr   r   insertr   failr   )rk   pids_pspids_psutilx
differences        r*   	test_pidsTestSystemAPIs.test_pidsE  s     E#kkm 5WW'!1NN1a  w<#k**Q.%0E[W4D![E"I"a{&:7I J ))NS_<==	 /E Is   7	CC	CCzunreliable on SUNOSrV   ifconfigzno ifconfig cmdznot supportedc                     [        S5      n[        R                  " SS9 HH  nUR                  5        H  nUR	                  U5      (       d  M    M1     U R                  SU SU 35      e   g )Nzifconfig -aT)perniczcouldn't find z nic in 'ifconfig -a' output
)r   ri   net_io_countersr.   r   r   )rk   r'   nicr)   s       r*   test_nic_namesTestSystemAPIs.test_nic_namesY  sn     M"))6C??3'' ' ii$SE *  &x)  7r1   c                    [        S5      nUR                  5       (       d  [        R                  " S5      eUR	                  S5      nU Vs/ s H  o3R	                  5       S   PM     nnU Vs/ s H  o3R	                  5       S   PM     nn[        U5      [        [        R                  " 5       5      :X  d   eU R                  [        R                  " 5       US9   [        [        R                  " 5       5       H\  u  pgUR                  XF   :X  d   eUR                  XV   :X  d   eUR                  c  M<  [        R                  " UR                  5        M^     S S S 5        g s  snf s  snf ! , (       d  f       g = f)Nwho -uno users on this systemrD   r   r   ri   who)r   r!   r   rL   r.   r   ri   userssubTest	enumerater   terminalr%   rj   )rk   r7   linesr   r  	terminalsidxus           r*   
test_usersTestSystemAPIs.test_usersj  s   lyy{{++788		$',-u!1u-+015aWWYq\5	15zS0000\\S\9#FLLN3vv+++zzY^33355$NN155)	 4 :9 .199s   E$.E)AE.7$E..
E<c                 N   [        S5      nUR                  5       (       d  [        R                  " S5      eS n[        R
                  " SU5      nU(       a  SnO[        R
                  " SU5      nU(       a  SnO`[        R
                  " SU5      nU(       a  SnO?[        R
                  " S	U5      nU(       a!  SnU Vs/ s H  oDR                  5       PM     nnU(       d  [        R                  " S
U 35      eU R                  [        R                  " 5       US9   [        [        R                  " 5       5       HG  u  pV[        R                  R                  UR                  5      R                  U5      nXsU   :X  a  MG   e   S S S 5        g s  snf ! , (       d  f       g = f)Nr  r  z\d\d\d\d-\d\d-\d\d \d\d:\d\dz%Y-%m-%d %H:%Mz[A-Z][a-z][a-z] \d\d \d\d:\d\dz%b %d %H:%Mz[A-Z][a-z][a-z] \d\dz%b %dz[a-z][a-z][a-z] \d\dz&cannot interpret tstamp in who output
r  )r   r!   r   rL   r5   findall
capitalizer  ri   r  r  r   r   startedr   )rk   r7   tstampr  r   r  r  psutil_values           r*   test_users_started!TestSystemAPIs.test_users_startedz  sG   lyy{{++788**<cB%F jj!BCHG& **%<cB$F !jj)@#FG!(;B"C7a<<>7"C++ GuMNN\\S\9#FLLN3'00>>II (6"  $s|333	 4 :9 #D
 :9s    FA"FF
F$c                    [         R                  " S[        [        R                  S5      S9 n[
        R                  " [        5         [        R                  R                  [        R                  " 5       5        S S S 5        UR                  (       d   e S S S 5        g ! , (       d  f       N+= f! , (       d  f       g = f)Nzpsutil._psposix.os.killr4   r   )r   r   OSErrorerrnoEBADFr   r   ri   _psposix
pid_existsr   getpidr   rk   ms     r*   test_pid_exists_let_raise(TestSystemAPIs.test_pid_exists_let_raise  su     ZZ%75;;3K
w'**299;7 (88O8
 
 ('
 
#   B2	3B!<B2!
B/	+B22
C c                    [         R                  " S[        [        R                  S5      S9 n[
        R                  " [        5         [        R                  R                  [        R                  " 5       5        S S S 5        UR                  (       d   e S S S 5        g ! , (       d  f       N+= f! , (       d  f       g = f)Npsutil._psposix.os.waitpidr4   r   )r   r   r  r  r  r   r   ri   r  wait_pidr   r  r   r  s     r*   test_os_waitpid_let_raise(TestSystemAPIs.test_os_waitpid_let_raise  su     ZZ(gekk26N
w'((5 (88O8
 
 ('
 
r#  c                    [         R                  " S[        [        R                  S5      S9 n[
        R                  " [        R                  R                  5         [        R                  R                  [        R                  " 5       SS9  S S S 5        UR                  (       d   e S S S 5        g ! , (       d  f       N+= f! , (       d  f       g = f)Nr%  r4   r   g{Gz?)timeout)r   r   r  r  EINTRr   r   ri   r  TimeoutExpiredr&  r   r  r   r  s     r*   test_os_waitpid_eintr$TestSystemAPIs.test_os_waitpid_eintr  s    ZZ(gekk26N
v==>((d(C ?88O8
 
 ?>
 
s#   /C2B4C4
C	>C
Cc                 V   [         R                  " SSS9 n[        R                  " [        5         [
        R                  R                  [        R                  " 5       5        S S S 5        UR                  (       d   e S S S 5        g ! , (       d  f       N+= f! , (       d  f       g = f)Nr%  )r   r   )r   r   r   r   r#   ri   r  r&  r   r  r   r  s     r*   test_os_waitpid_bad_ret_status-TestSystemAPIs.test_os_waitpid_bad_ret_status  sh    ZZ(w
z*((5 +88O8
 
 +*
 
s"   B3B	$B	
B	B
B(zunreliable on AIXc                 (   Sn[         R                  " SS9 H  n[         R                  " UR                  5      n [	        UR
                  5      u  pEpg[        UR                  U-
  5      U:  d   e[        UR                  U-
  5      U:  d   e[        UR                  U-
  5      U:  d   e[        UR                  U-
  5      S::  d   eM     g ! [         a7  n[        U5      R                  5       nSU;   d  SU;   d  SU;   a   S nAM  e S nAff = f)Ni  @ F)allr   zno such file or directoryzraw devices not supportedzpermission denied)ri   disk_partitions
disk_usage
mountpointrU   rN   abstotalusedfreepercentrJ   r   rK   )	rk   	tolerancepartusagerQ   rR   rS   rT   rO   s	            r*   test_disk_usageTestSystemAPIs.test_disk_usage  s     $	**u5D%%doo6E==?_:	X 5;;23i???5::01I===5::01I===5==;671<<<) 6    #hnn&/362c9*c1s   C
D+DDDr   N)r   r   r   r   r   r   r   r   r   r   r
   shutilwhichr   r   r  r  r!  r'  r-  r1  r   r@  r   r   r1   r*   r   r   A  s    > >& [[&;<[[FLL44=NO[[//H
 I P =
 * * "4 "4H	 [[$78=  9=r1   r   c                       \ rS rSrS rSrg)TestMisci  c                     [        5       nUS:  d   eU[        R                   " 5       :X  d   eU[        R                  :X  d   eg )Nr   )r   resourcemmapPAGESIZE)rk   pagesizes     r*   test_getpagesizeTestMisc.test_getpagesize  s>    =!||8//11114==(((r1   r   N)r   r   r   r   rK  r   r   r1   r*   rE  rE    s    )r1   rE  rd   ),r   r   r  r   r5   rB  r]   r   unittestr   ri   r   r   r   r   r   r	   r
   psutil.testsr   r   r   r   r   r   r   r   r   r   rH  rG  psutil._psutil_posixr   r   r0   r8   r>   rB   rU   r   r   rY   r   rE  r   r1   r*   <module>rP     s       	 	               , # '  )  . ' " 	0(n8  Il3i&. i& 4i&X Il3]=^ ]= 4]=@ Il3)~ ) 4)r1   