
    = /iC                     b   d Z ddlZddlZddlZddlZddlZddlZddl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 erddlZddlZd#dZd Z d Z!d Z"d Z#d Z$ejJ                  jM                  e d       G d de             Z'ejJ                  jM                  e d       G d d e             Z(ejJ                  jM                  e d       G d! d"e             Z)y)$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                 ,   dg}t         r|j                  d       ||j                  dt        |      g       n/t        st
        r|j                  d       n|j                  d       t        r| j                  dd      } |j                  d	| g       t        |      }t         r|j                         n|j                         d
d }g }|D ]/  }|j                         }	 t        |      }|j                  |       1 ||S |d   S # t        $ r Y 'w xY w)zwWrapper 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         M/srv/sistema/bot/venv/lib/python3.12/site-packages/psutil/tests/test_posix.pyr   r   *   s   
 &C

>"


D#c(#$	#

4

4kk'7+JJc{WF$)V v/@/@/B12/FFJ  zz|	t9D 	$  {!}  		s    D	DDc                 T    d}t         rd}t        ||       j                         }|d   S )Ncommandcommr   )r
   r   split)r$   fieldr+   s      r)   ps_namer/   a   s-    En""$G1:    c                     d}t         st        rd}t        ||       }t        j                  dd|      }|j                         S )Nr+   argsz\(python.*?\)$ )r   r
   r   resubr    )r$   r.   outs      r)   ps_argsr7   i   s;    E
e
UC.C
&&"B
,C99;r0   c                 .    d}t         rd}t        ||       S )Nrssrssizer   r   r$   r.   s     r)   ps_rssr=   s   s    E
eS>r0   c                 .    d}t         rd}t        ||       S )Nvszvsizer;   r<   s     r)   ps_vszrA   z   s    E
eS>r0   c                    	 t        d|        j                         }|j                  d      d   }|j                         }t        |d         dz  }t        |d         dz  }t        |d         dz  }t        |d	   j                  d
d            }||||fS # t        $ r;}dt        |      j	                         v rt        j                  d      cY d }~S  d }~ww xY w)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x;77  CHNN,,;;233s#   B 	C"/CCCCz
POSIX onlyreasonc                      e Zd ZdZed        Zed        Zd Zd Zd Z	d Z
d Z e        e       d	               Z e        e       d
               Zd Zd Zd Zd Zej*                  j-                  exs ed      d        Zd Z e       d        Zej*                  j-                  ed      ej*                  j-                  ed      d               Zy)TestProcesszBCompare psutil results against 'ps' command line utility (mainly).c                 f    t        t        ddgt        j                        j                  | _        y )Nz-Ez-O)stdin)r   r   
subprocessPIPEr$   clss    r)   
setUpClasszTestProcess.setUpClass   s&    t$JOO

# 	r0   c                 .    t        | j                         y N)r   r$   r]   s    r)   tearDownClasszTestProcess.tearDownClass   s    #''r0   c                     t        d| j                        }t        j                  | j                        j	                         }||k(  sJ y )Nppid)r   r$   psutilProcessrd   )selfppid_psppid_psutils      r)   	test_ppidzTestProcess.test_ppid   s;    VTXX&nnTXX.335+%%%r0   c                     t        d| j                        }t        j                  | j                        j	                         j
                  }||k(  sJ y )Nuid)r   r$   re   rf   uidsreal)rg   uid_ps
uid_psutils      r)   test_uidzTestProcess.test_uid   sA    E488$^^DHH-22499
###r0   c                     t        d| j                        }t        j                  | j                        j	                         j
                  }||k(  sJ y )Nrgid)r   r$   re   rf   gidsrn   )rg   gid_ps
gid_psutils      r)   test_gidzTestProcess.test_gid   sA    FDHH%^^DHH-22499
###r0   c                     t        d| j                        }t        j                  | j                        j	                         }||k(  sJ y )Nuser)r   r$   re   rf   username)rg   username_psusername_psutils      r)   test_usernamezTestProcess.test_username   s;    * ..2;;=o---r0   c                    t        j                         }t        j                  dt              5 }|j                         t        |j                         j                        k(  sJ |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nzpsutil.pwd.getpwuidside_effect)
re   rf   r   patchKeyErrorrz   r   rm   rn   called)rg   pfuns      r)   test_username_no_resolutionz'TestProcess.test_username_no_resolution   se     NNZZ-8D 	::<3qvvx}}#5555:::	 	 	s   AA??Bc                     t        j                  d       t        | j                        }t	        j
                  | j                        j                         d   dz  }||k(  sJ y )N皙?r   rD   )timesleepr=   r$   re   rf   memory_info)rg   rss_ps
rss_psutils      r)   test_rss_memoryzTestProcess.test_rss_memory   P    
 	

3!^^DHH-99;A>E
###r0   c                     t        j                  d       t        | j                        }t	        j
                  | j                        j                         d   dz  }||k(  sJ y )Nr   r   rD   )r   r   rA   r$   re   rf   r   )rg   vsz_ps
vsz_psutils      r)   test_vsz_memoryzTestProcess.test_vsz_memory   r   r0   c                    t        | j                        }t        j                  j	                  |      j                         }t        j                  | j                        j                         j                         }t        j                  dd|      }t        j                  dd|      }t        j                  dd|      }t        j                  dd|      }||k(  sJ y )Nz\d.\dr3   z\d)r/   r$   ospathbasenamerJ   re   rf   namer4   r5   )rg   name_psname_psutils      r)   	test_namezTestProcess.test_name   s    $((#''""7+113nnTXX.335;;= &&2w/ffXr;7&&G,ffUB4+%%%r0   c                    d}g d}t        j                  d|      5  t        j                  d|      5  t        j                         }|j	                         dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nlong-program-name)long-program-name-extendedfoobarpsutil._psplatform.Process.namereturn_value"psutil._psplatform.Process.cmdliner   )r   r   re   rf   r   )rg   r   cmdliner   s       r)   test_name_longzTestProcess.test_name_long   s     #>ZZ9M 	@47 @ NN$vvx#????	@	@ 	@@ @	@ 	@s"   A>*A2!A>2A;	7A>>Bc                 4   d}t        j                  d|      5  t        j                  dt        j                  dd            5  t        j                         }|j                         dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNr   r   r   r   r   r3   r   )r   r   re   AccessDeniedrf   r   rg   r   r   s      r)   test_name_long_cmdline_ad_excz)TestProcess.test_name_long_cmdline_ad_exc   s     #ZZ9M 	74"//26 7 NN$vvx#66667	7 	77 7	7 	7s#   ,B*B1BB	BBc                    d}t        j                  d|      5  t        j                  dt        j                  dd            5  t        j                         }t        j                  t        j                        5  |j                          d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY wr   )r   r   re   NoSuchProcessrf   r   raisesr   r   s      r)   test_name_long_cmdline_nsp_excz*TestProcess.test_name_long_cmdline_nsp_exc   s     #ZZ9M 	4"00B7  NN$]]6#7#78 FFH	 	  	 	s;   ,C 8B4>B(B4C (B1-B44B=	9C  C	zps -o start not availablerU   c                 h   t        d| j                        }t        j                  | j                        j	                         }t
        j
                  j                  |      j                  d      }t        |      }t
        j
                  j                  |      j                  d      }|||hv sJ y )Nr   z%H:%M:%S)	r   r$   re   rf   create_timedatetimefromtimestampstrftimeround)rg   time_pstime_psutiltime_psutil_tstampround_time_psutilround_time_psutil_tstamps         r)   test_create_timezTestProcess.test_create_time  s    Wdhh'nnTXX.::<%..<<

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

(:
 	! -/GHHHHr0   c                     t        | j                        }t        j                  | j                        j	                         }	 ||k(  sJ y # t
        $ r |d t        |       }||k(  sJ Y y w xY wra   )r/   r$   re   rf   exeAssertionErrorlen)rg   ps_pathnamepsutil_pathnameadjusted_ps_pathnames       r)   test_exezTestProcess.test_exe  sq    dhh' ..2668
	7/111 	7 $//A[1A#B "6666	7s   A A-,A-c                    t        | j                        }dj                  t        j                  | j                        j                               }t        r+t        |      t        |      k  r|j                  |      sJ y ||k(  sJ y )N )	r7   r$   joinre   rf   r   r   r   
startswith)rg   
ps_cmdlinepsutil_cmdlines      r)   test_cmdlinezTestProcess.test_cmdline(  si    TXX&
&..":"B"B"DEs:^)<<!,,Z888///r0   znot reliable on SUNOSznot reliable on AIXc                     t        d| j                        }t        j                         j	                         }||k(  sJ y )Nnice)r   r$   re   rf   r   )rg   ps_nicepsutil_nices      r)   	test_nicezTestProcess.test_nice6  s7     VTXX&nn&++-+%%%r0   N)__name__
__module____qualname____doc__classmethodr_   rb   rj   rq   rw   r}   r   r   r   r   r   r   r   r   r   r   markskipifr   r   r   r   r   r
   r   r    r0   r)   rX   rX      s/   L 
  &
$
$
.
 $  $ $  $&@7 [[-HII JI7( 0 0 [[&=>[[$9:& ; ?&r0   rX   c                      e Zd ZdZ e       d        Zej                  j                  e	d      ej                  j                   e
j                  d       d      ej                  j                  e d      d                      Z e       d	        Z e       d
        Zd Zd Zd Zd Zej                  j                  ed       e       d               Zy)TestSystemAPIszTest some system APIs.c                 x   t        t        d            }t        j                         }t        s
t
        rd|vr|j                  dd       t        |      t        |      z
  dkD  rL|D cg c]	  }||vs| c}|D cg c]	  }||vs| c}z   }t        j                  dt        |      z         S y c c}w c c}w )Nr$   r   r   zdifference: )sortedr   re   pidsr   r   insertr   r   failr   )rg   pids_pspids_psutilx
differences        r)   	test_pidszTestSystemAPIs.test_pidsB  s     E#kkm W'!1NN1a  w<#k**Q.%0EAW4D!E"Ia{&:I J ;;~J?@@	 /E Is   )	B23B2=	B7B7zunreliable on SUNOSrU   ifconfigzno ifconfig cmdznot supportedc                     t        d      }t        j                  d      D ]F  }|j                         D ]  }|j	                  |      s * t        j                  d| d|       c S  y )Nzifconfig -aT)perniczcouldn't find z nic in 'ifconfig -a' output
)r   re   net_io_countersr-   r   r   r   )rg   r&   nicr(   s       r)   test_nic_nameszTestSystemAPIs.test_nic_namesV  su     M"))6 	C ??3' {{$SE *  &x) 	r0   c                    t        d      }|j                         st        j                  d      S g }|j	                         D ]y  }|j                         d   }|j                         d   }t        st        r2	 t        |j                         d         }|j                  |||f       g|j                  ||f       { t        st        rCt        j                         D cg c]%  }|j                  |j                  |j                  f' }}n7t        j                         D cg c]  }|j                  |j                  f }}t!        |      t!        |      k(  sJ t#        |      t#        |      k(  sJ t        j                         D ]   }|j                  |j                  dkD  r J  y # t        $ r  t        |j                         d         }Y Bw xY wc c}w c c}w )Nwho -uno users on this systemr   r   )r   r    r   rK   r   r-   r   r   r!   r"   r   re   usersr   terminalr$   r   r   )	rg   r6   susersr(   ry   r   r$   upuserss	            r)   
test_userszTestSystemAPIs.test_userse  s   lyy{;;899NN$ 
	0D::<?Dzz|AH0djjl2./C tXs34tX./
	0 E;A<<>Jaqvvqzz1551JFJ4:LLNCqqvvqzz*CFC6{c&k)))f~///LLN 	$Dxx#xx!|#|	$ " 0djjl2./C0 KCs   9F/!*G$G /%GGc                    t        d      }|j                         st        j                  d      S d }t	        j
                  d|      }|rd}nmt	        j
                  d|      }|rd}nRt	        j
                  d|      }|rd}n7t	        j
                  d	|      }|rd}|D cg c]  }|j                          }}|st        j                  d
|       S | j                  t        j                         |      5  t        t        j                               D ]G  \  }}t        j                  j                  |j                        j                  |      }|||   k(  rGJ  	 d d d        y c c}w # 1 sw Y   y xY w)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
)re   who)r   r    r   rK   r4   findall
capitalizesubTestre   r   	enumerater   r   startedr   )rg   r6   tstampr   r   idxr   psutil_values           r)   test_users_startedz!TestSystemAPIs.test_users_started  sX   lyy{;;899**<cB%F jj!BCHG& **%<cB$F !jj)@#FG!(;B"Ca1<<>"C"C;;!HNOO\\S\9 	4#FLLN3 4Q'00>>II (6"  $ws|333	4	4 	4 #D
	4 	4s   "E,:A$E1E11E:c                 h   t        j                  dt        t        j                  d            5 }t        j                  t              5  t        j                  j                  t        j                                d d d        |j                  sJ 	 d d d        y # 1 sw Y   !xY w# 1 sw Y   y xY w)Nzpsutil._psposix.os.killr3   r   )r   r   OSErrorerrnoEBADFr   r   re   _psposix
pid_existsr   getpidr   rg   ms     r)   test_pid_exists_let_raisez(TestSystemAPIs.test_pid_exists_let_raise  s     ZZ%75;;3K
 	w' 8**299;7888O8	 	8 8	 	#   B(
2B<B(B%	!B((B1c                 h   t        j                  dt        t        j                  d            5 }t        j                  t              5  t        j                  j                  t        j                                d d d        |j                  sJ 	 d d d        y # 1 sw Y   !xY w# 1 sw Y   y xY w)Npsutil._psposix.os.waitpidr3   r   )r   r   r  r  r  r   r   re   r  wait_pidr   r  r   r  s     r)   test_os_waitpid_let_raisez(TestSystemAPIs.test_os_waitpid_let_raise  s     ZZ(gekk26N
 	w' 6((5688O8	 	6 6	 	r
  c                    t        j                  dt        t        j                  d            5 }t        j                  t        j                  j                        5  t        j                  j                  t        j                         d       d d d        |j                  sJ 	 d d d        y # 1 sw Y   !xY w# 1 sw Y   y xY w)Nr  r3   r   g{Gz?)timeout)r   r   r  r  EINTRr   r   re   r  TimeoutExpiredr  r   r  r   r  s     r)   test_os_waitpid_eintrz$TestSystemAPIs.test_os_waitpid_eintr  s    ZZ(gekk26N
 	v==> D((d(CD88O8	 	D D	 	s#   .B>4B2B>2B;	7B>>Cc                 8   t        j                  dd      5 }t        j                  t              5  t
        j                  j                  t        j                                d d d        |j                  sJ 	 d d d        y # 1 sw Y   !xY w# 1 sw Y   y xY w)Nr  )r   r   r   )r   r   r   r   r"   re   r  r  r   r  r   r  s     r)   test_os_waitpid_bad_ret_statusz-TestSystemAPIs.test_os_waitpid_bad_ret_status  st    ZZ(w
 	z* 6((5688O8	 	6 6	 	s"   B2B$BB		BBzunreliable on AIXc                    d}t        j                  d      D ]  }t        j                  |j                        }	 t	        |j
                        \  }}}}t        |j                  |z
        |k  sJ t        |j                  |z
        |k  sJ t        |j                  |z
        |k  sJ t        |j                  |z
        dk  rJ  y # t        $ r0}t        |      j                         }d|v sd|v sd|v rY d }~ d }~ww xY w)Ni  @ F)allr   zno such file or directoryzraw devices not supportedzpermission denied)re   disk_partitions
disk_usage
mountpointrT   rM   abstotalusedfreepercentrI   r   rJ   )	rg   	tolerancepartusagerP   rQ   rR   rS   rN   s	            r)   test_disk_usagezTestSystemAPIs.test_disk_usage  s    $	**u5 	=D%%doo6E==?_:	8X{ 5;;23i???5::01I===5::01I===5==;671<<<)	=    #hnn&/362c9*c1s   C	D%D DDN)r   r   r   r   r   r   r   r   r   r
   shutilwhichr   r   r   r   r	  r  r  r  r   r#  r   r0   r)   r   r   >  s	    A A& [[&;<[[LFLL44=NO[[//H
 I P =
 $ $< "4 "4H	 [[$78=  9=r0   r   c                       e Zd Zd Zy)TestMiscc                     t         j                  j                  j                         }|dkD  sJ |t	        j                         k(  sJ |t
        j                  k(  sJ y )Nr   )re   _psplatformcextgetpagesizeresourcemmapPAGESIZE)rg   pagesizes     r)   test_getpagesizezTestMisc.test_getpagesize  sQ    %%**668!||8//11114==(((r0   N)r   r   r   r0  r   r0   r)   r'  r'    s    )r0   r'  ra   )*r   r   r  r   r4   r$  r[   r   unittestr   re   r   r   r   r   r   r	   r
   psutil.testsr   r   r   r   r   r   r   r   r   r   r-  r,  r   r/   r7   r=   rA   rT   r   r   rX   r   r'  r   r0   r)   <module>r3     s      	 	               , # '  )  . & "(n8  Il3i&. i& 4i&X Il3j=^ j= 4j=Z Il3)~ ) 4)r0   