
    9iC                     t   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 jrS r S r!S r"S r#S r$\RJ                  RM                  \(       + SS9 " S S\5      5       r'\RJ                  RM                  \(       + SS9 " S S \5      5       r(\RJ                  RM                  \(       + 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_subproc)	terminatec                 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         W/var/www/html/land-doc-ocr/venv/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_namer/   a   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_argsr7   i   s=    E
see
U.C
&&"B
,C99;r0   c                 6    Sn[         (       a  Sn[        X5      $ )Nrssrssizer   r   r$   r.   s     r)   ps_rssr=   s   s    E
se>r0   c                 6    Sn[         (       a  Sn[        X5      $ )Nvszvsizer;   r<   s     r)   ps_vszrA   z   s    E
se>r0   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$ ! [         a>  nS[        U5      R	                  5       ;   a  [
        R                  " S5      s S nA$ e S nAff = f)Nzdf -k zdevice busyzdf returned EBUSY
r               %r3   )r   r    RuntimeErrorr   lowerr   skipr-   r!   floatr   )	devicer6   errr(   fields	sys_totalsys_usedsys_freesys_percents	            r)   dfrT      s    6&"#))+
 99T?1DZZ\FF1I%I6!9~$H6!9~$Hq	))#r23K77  CHNN,,;;233s#   B 
C!2CCC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

# 	r0   c                 .    [        U R                  5        g N)r   r$   r^   s    r)   tearDownClassTestProcess.tearDownClass   s    #''r0   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       nX:X  d   eg )Nppid)r   r$   psutilProcessrg   )selfppid_psppid_psutils      r)   	test_ppidTestProcess.test_ppid   s9    VTXX&nnTXX.335%%%r0   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       R
                  nX:X  d   eg )Nuid)r   r$   rh   ri   uidsreal)rj   uid_ps
uid_psutils      r)   test_uidTestProcess.test_uid   s?    E488$^^DHH-22499
###r0   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       R
                  nX:X  d   eg )Nrgid)r   r$   rh   ri   gidsrr   )rj   gid_ps
gid_psutils      r)   test_gidTestProcess.test_gid   s?    FDHH%^^DHH-22499
###r0   c                     [        SU R                  5      n[        R                  " U R                  5      R	                  5       nX:X  d   eg )Nuser)r   r$   rh   ri   username)rj   username_psusername_psutils      r)   test_usernameTestProcess.test_username   s9    * ..2;;=---r0   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)
rh   ri   r   patchKeyErrorr   r   rq   rr   called)rj   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   rD   )timesleepr=   r$   rh   ri   memory_info)rj   rss_ps
rss_psutils      r)   test_rss_memoryTestProcess.test_rss_memory   N    
 	

3!^^DHH-99;A>E
###r0   c                     [         R                  " S5        [        U R                  5      n[        R
                  " U R                  5      R                  5       S   S-  nX:X  d   eg )Nr   r   rD   )r   r   rA   r$   rh   ri   r   )rj   vsz_ps
vsz_psutils      r)   test_vsz_memoryTestProcess.test_vsz_memory   r   r0   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.\dr3   z\d)r/   r$   ospathbasenamerJ   rh   ri   namer4   r5   )rj   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%%%r0   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   rh   ri   r   )rj   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   r3   r   )r   r   rh   AccessDeniedri   r   rj   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   rh   NoSuchProcessri   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 availablerU   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$   rh   ri   create_timedatetimefromtimestampstrftimeround)rj   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Hr0   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rc   )r/   r$   rh   ri   exeAssertionErrorlen)rj   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 )	r7   r$   joinrh   ri   r   r   r   
startswith)rj   
ps_cmdlinepsutil_cmdlines      r)   test_cmdlineTestProcess.test_cmdline(  sl    TXX&
&..":"B"B"DE7s:^)<<!,,Z8888///r0   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$   rh   ri   r   )rj   ps_nicepsutil_nices      r)   	test_niceTestProcess.test_nice6  s5     VTXX&nn&++-%%%r0    N)!__name__
__module____qualname____firstlineno____doc__classmethodr`   rd   rm   ru   r|   r   r   r   r   r   r   r   r   r   r   r   markskipifr   r   r   r   r   r
   r   r   __static_attributes__r   r0   r)   rX   rX      s/   L 
  &
$
$
.
 $  $ $  $&@7 [[-HII JI7( 0 0 [[&=>[[$9:& ; ?&r0   rX   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)TestSystemAPIsi>  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:  aW  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[        R                  " S[        U5      -   5      $ g s  snf s  snf )Nr$   r   r   zdifference: )sortedr   rh   pidsr   r   insertr   r   failr   )rj   pids_pspids_psutilx
differences        r)   	test_pidsTestSystemAPIs.test_pidsB  s     E#kkm 5WW'!1NN1a  w<#k**Q.%0E[W4D![E"I"a{&:7I J ;;~J?@@	 /E Is   7	CC	CCzunreliable on SUNOSrU   ifconfigzno ifconfig cmdznot supportedc                     [        S5      n[        R                  " SS9 HO  nUR                  5        H  nUR	                  U5      (       d  M    M1     [
        R                  " SU SU 35      s  $    g )Nzifconfig -aT)perniczcouldn't find z nic in 'ifconfig -a' output
)r   rh   net_io_countersr-   r   r   r   )rj   r&   nicr(   s       r)   test_nic_namesTestSystemAPIs.test_nic_namesV  sn     M"))6C??3'' ' {{$SE *  &x)  7r0   c                    [        S5      nUR                  5       (       d  [        R                  " S5      $ / nUR	                  5        H  nUR                  5       S   nUR                  5       S   n[        (       d  [        (       a2   [        UR                  5       S   5      nUR                  XEU45        Mq  UR                  XE45        M     [        (       d  [        (       aF  [        R                  " 5        Vs/ s H%  owR                  UR                  UR                  4PM'     nnO:[        R                  " 5        Vs/ s H  owR                  UR                  4PM     nn[!        U5      [!        U5      :X  d   e[#        U5      [#        U5      :X  d   e[        R                  " 5        H$  nUR                  c  M  UR                  S:  a  M$   e   g ! [         a     [        UR                  5       S   5      n GN\f = fs  snf s  snf )Nwho -uno users on this systemr   r   )r   r    r   rK   r   r-   r   r   r!   r"   r   rh   usersr   terminalr$   r   r   )	rj   r6   susersr(   r   r  r$   upuserss	            r)   
test_usersTestSystemAPIs.test_userse  s   lyy{{;;899NN$D::<?Dzz|AHu0djjl2./C ts34t./ % 5EE;A<<>J>avvqzz1551>FJF4:LLNCNqvvqzz*NFC6{c&k)))f~///LLNDxx#xx!|#| # " 0djjl2./C0 KCs   	G=,H!H
&HHc                 N   [        S5      nUR                  5       (       d  [        R                  " S5      $ 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      $ 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
)rh   who)r   r    r   rK   r4   findall
capitalizesubTestrh   r  	enumerater   r   startedr   )rj   r6   tstampr  r   idxr  psutil_values           r)   test_users_started!TestSystemAPIs.test_users_started  sG   lyy{{;;899**<cB%F jj!BCHG& **%<cB$F !jj)@#FG!(;B"C7a<<>7"C;;!HNOO\\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.killr3   r   )r   r   OSErrorerrnoEBADFr   r   rh   _psposix
pid_existsr   getpidr   rj   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.waitpidr3   r   )r   r   r  r  r  r   r   rh   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%  r3   r   g{Gz?)timeout)r   r   r  r  EINTRr   r   rh   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   r"   rh   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)rh   disk_partitions
disk_usage
mountpointrT   rM   abstotalusedfreepercentrI   r   rJ   )	rj   	tolerancepartusagerP   rQ   rR   rS   rN   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-  r0  r   r?  r   r   r0   r)   r   r   >  s    A A& [[&;<[[FLL44=NO[[//H
 I P =
 $ $< "4 "4H	 [[$78=  9=r0   r   c                       \ rS rSrS rSrg)TestMisci  c                     [         R                  R                  R                  5       nUS:  d   eU[        R                  " 5       :X  d   eU[
        R                  :X  d   eg )Nr   )rh   _psplatformcextgetpagesizeresourcemmapPAGESIZE)rj   pagesizes     r)   test_getpagesizeTestMisc.test_getpagesize  sQ    %%**668!||8//11114==(((r0   r   N)r   r   r   r   rM  r   r   r0   r)   rD  rD    s    )r0   rD  rc   )*r   r   r  r   r4   rA  r\   r   unittestr   rh   r   r   r   r   r   r	   r
   psutil.testsr   r   r   r   r   r   r   r   r   r   rJ  rI  r   r/   r7   r=   rA   rT   r   r   rX   r   rD  r   r0   r)   <module>rQ     s      	 	               , # '  )  . & "(n8  Il3i&. i& 4i&X Il3j=^ j= 4j=Z Il3)~ ) 4)r0   