o
    il                     @   sz  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Zddl	Z	ddl
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 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. G d$d% d%e'Z/G d&d' d'e'Z0G d(d) d)e'Z1G d*d+ d+e'Z2G d,d- d-e'Z3d.d/ Z4e.G d0d1 d1e'Z5e6d2kr;dd3l7m8Z8 e8e9 dS dS )4zContracts tests. These tests mainly check API sanity in terms of
returned types and APIs availability.
Some of these are duplicates of tests test_system.py and test_process.py
    N)AIX)BSD)FREEBSD)LINUX)MACOS)NETBSD)OPENBSD)OSX)POSIX)SUNOS)WINDOWS)FileNotFoundError)long)range)unicode)APPVEYOR)
CI_TESTING)GITHUB_ACTIONS)HAS_CPU_FREQ)HAS_NET_IO_COUNTERS)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)PYPY)SKIP_SYSCONS)VALID_PROC_STATUSES)PsutilTestCase)check_connection_ntuple)create_sockets)enum)is_namedtuple)kernel_version)process_namespace)	serialrunc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zee	oe
d	d
d ZdS )TestAvailConstantsAPIsc                 C   s   |  ttdtptpt d S )NPROCFS_PATH)assertEqualhasattrpsutilr   r   r   self r*   V/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/psutil/tests/test_contracts.pytest_PROCFS_PATHD   s   
z'TestAvailConstantsAPIs.test_PROCFS_PATHc                 C   sj   | j }|ttdt |ttdt |ttdt |ttdt |ttdt |ttdt d S )NABOVE_NORMAL_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSIDLE_PRIORITY_CLASSNORMAL_PRIORITY_CLASSREALTIME_PRIORITY_CLASSr%   r&   r'   r   r)   aer*   r*   r+   test_win_priorityH   s   z(TestAvailConstantsAPIs.test_win_priorityc                 C   J   | j }|ttdt |ttdt |ttdt |ttdt d S )NIOPRIO_CLASS_NONEIOPRIO_CLASS_RTIOPRIO_CLASS_BEIOPRIO_CLASS_IDLEr%   r&   r'   r   r4   r*   r*   r+   test_linux_ioprio_linuxQ   
   z.TestAvailConstantsAPIs.test_linux_ioprio_linuxc                 C   r7   )NIOPRIO_HIGHIOPRIO_NORMAL
IOPRIO_LOWIOPRIO_VERYLOWr3   r4   r*   r*   r+   test_linux_ioprio_windowsX   r>   z0TestAvailConstantsAPIs.test_linux_ioprio_windows%unsupported on GITHUB_ACTIONS + LINUXc                 C   s  | j }|ttdtpt |ttdtpt |ttdtpt |ttdtp)t |ttdtp3t |ttdtp=t |ttdtpGt |ttdtpQt |ttd	tp[t |ttd
tpet |ttdtpot |ttdt trt dkr|ttdt t dkr|ttdt t dkr|ttdt t dkr|ttdt t dkr|ttdt |ttdt |ttdt |ttdt d S )NRLIM_INFINITY	RLIMIT_ASRLIMIT_CORE
RLIMIT_CPURLIMIT_DATARLIMIT_FSIZERLIMIT_MEMLOCKRLIMIT_NOFILERLIMIT_NPROC
RLIMIT_RSSRLIMIT_STACKRLIMIT_LOCKS)         RLIMIT_MSGQUEUE)rQ   rR      RLIMIT_NICERLIMIT_RTPRIO)rQ   rR      RLIMIT_RTTIMERLIMIT_SIGPENDINGRLIMIT_SWAPRLIMIT_SBSIZERLIMIT_NPTS)r%   r&   r'   r   r   r
   r    r4   r*   r*   r+   test_rlimit_   s6   




z"TestAvailConstantsAPIs.test_rlimitN)__name__
__module____qualname__r,   r6   r=   rC   unittestskipIfr   r   r^   r*   r*   r*   r+   r#   B   s    	
r#   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestAvailSystemAPIsc                 C      |  ttdt d S )Nwin_service_iterr3   r(   r*   r*   r+   test_win_service_iter      z)TestAvailSystemAPIs.test_win_service_iterc                 C   re   )Nwin_service_getr3   r(   r*   r*   r+   test_win_service_get   rh   z(TestAvailSystemAPIs.test_win_service_getc                 C   s&   |  ttdtptptptpt d S )Ncpu_freq)r%   r&   r'   r   r   r   r   r   r(   r*   r*   r+   test_cpu_freq   s   z!TestAvailSystemAPIs.test_cpu_freqc                 C   s   |  ttdtp	t d S )Nsensors_temperatures)r%   r&   r'   r   r   r(   r*   r*   r+   test_sensors_temperatures   s   z-TestAvailSystemAPIs.test_sensors_temperaturesc                 C   re   )Nsensors_fansr<   r(   r*   r*   r+   test_sensors_fans   rh   z%TestAvailSystemAPIs.test_sensors_fansc                 C   s"   |  ttdtptptpt d S )Nsensors_battery)r%   r&   r'   r   r   r   r   r(   r*   r*   r+   test_battery   s   z TestAvailSystemAPIs.test_batteryN)	r_   r`   ra   rg   rj   rl   rn   rp   rr   r*   r*   r*   r+   rd      s    rd   c                   @   s|   e Zd Zdd Zdd Zdd Zdd Zd	d
 Ze	e
oeddd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestAvailProcessAPIsc                 C   s4   |  ttjdtptptptptpt	pt
pt d S )Nenviron)r%   r&   r'   Processr   r   r   r   r   r   r   r   r(   r*   r*   r+   test_environ   s   z!TestAvailProcessAPIs.test_environc                 C      |  ttjdt d S Nuidsr%   r&   r'   ru   r
   r(   r*   r*   r+   	test_uids      zTestAvailProcessAPIs.test_uidsc                 C   rw   rx   rz   r(   r*   r*   r+   	test_gids   r|   zTestAvailProcessAPIs.test_gidsc                 C   rw   )Nterminalrz   r(   r*   r*   r+   test_terminal   r|   z"TestAvailProcessAPIs.test_terminalc                 C      |  ttjdtp
t d S )Nionice)r%   r&   r'   ru   r   r   r(   r*   r*   r+   test_ionice   s   z TestAvailProcessAPIs.test_ionicerD   c                 C   r   )Nrlimit)r%   r&   r'   ru   r   r   r(   r*   r*   r+   r^      s   z TestAvailProcessAPIs.test_rlimitc                 C   s.   t tjd}| |tstrd d S d d S )Nio_countersFT)r&   r'   ru   r%   r   r   r)   hasitr*   r*   r+   test_io_counters   s   "z%TestAvailProcessAPIs.test_io_countersc                 C   rw   )Nnum_fdsrz   r(   r*   r*   r+   test_num_fds   r|   z!TestAvailProcessAPIs.test_num_fdsc                 C   rw   )Nnum_handles)r%   r&   r'   ru   r   r(   r*   r*   r+   test_num_handles   r|   z%TestAvailProcessAPIs.test_num_handlesc                 C       |  ttjdtptpt d S )Ncpu_affinity)r%   r&   r'   ru   r   r   r   r(   r*   r*   r+   test_cpu_affinity      
z&TestAvailProcessAPIs.test_cpu_affinityc                 C   r   )Ncpu_num)r%   r&   r'   ru   r   r   r   r(   r*   r*   r+   test_cpu_num   r   z!TestAvailProcessAPIs.test_cpu_numc                 C   s6   t tjd}| |tstststrd d S d d S )Nmemory_mapsFT)r&   r'   ru   r%   r   r   r   r   r   r*   r*   r+   test_memory_maps   s   z%TestAvailProcessAPIs.test_memory_mapsN)r_   r`   ra   rv   r{   r}   r   r   rb   rc   r   r   r^   r   r   r   r   r   r   r*   r*   r*   r+   rs      s     

rs   c                   @   s   e Zd ZdZedd ZedfddZdd Zd	d
 Z	dd Z
dd Zeeo,e dkdee ddd Zdd Zdd Zeeddd Zdd Zdd Zee ddd  Zee dd!d" Zee dd#d$ Zd%d& Zd'd( Z d)S )*TestSystemAPITypeszCheck the return types of system related APIs.
    Mainly we want to test we never return unicode on Python 2, see:
    https://github.com/giampaolo/psutil/issues/1039
    c                 C   s   t  | _d S N)r'   ru   proc)clsr*   r*   r+   
setUpClass   s   zTestSystemAPITypes.setUpClassTc                 C   s6   t |sJ |D ]}| || |r| |d qd S Nr   )r   assertIsInstanceassertGreaterEqual)r)   nttype_gezeronr*   r*   r+   assert_ntuple_of_nums   s   z(TestSystemAPITypes.assert_ntuple_of_numsc                 C   s.   |  t  tjddD ]}|  | qd S )NT)percpu)r   r'   	cpu_times)r)   r   r*   r*   r+   test_cpu_times   s   z!TestSystemAPITypes.test_cpu_timesc                 C   s,   |  tjd dt |  tjddt d S )Nintervalgh㈵>)r   r'   cpu_percentfloatr(   r*   r*   r+   test_cpu_percent   s   z#TestSystemAPITypes.test_cpu_percentc                 C   s(   |  tjd d |  tjdd d S )Nr   g-C6?)r   r'   cpu_times_percentr(   r*   r*   r+   test_cpu_times_percent   s   z)TestSystemAPITypes.test_cpu_times_percentc                 C      |  t t d S r   )r   r'   	cpu_countintr(   r*   r*   r+   test_cpu_count   s   z!TestSystemAPITypes.test_cpu_countarm64zskipped due to #1892znot supportedc                 C   s2   t  d u r| d| jt  tttfd d S )Nzcpu_freq() returns Noner   )r'   rk   skipTestr   r   r   r   r(   r*   r*   r+   rl      s   
z TestSystemAPITypes.test_cpu_freqc                 C   s<   t jdd D ]\}}| |t | j|ttfd qd S )NT)perdiskr   )r'   disk_io_countersitemsr   strr   r   r   )r)   kvr*   r*   r+   test_disk_io_counters   s   z(TestSystemAPITypes.test_disk_io_countersc                 C   sf   t  D ],}| |jt | |jt | |jt | |jt | |jt	 | |j
t	 qd S r   )r'   disk_partitionsr   devicer   
mountpointfstypeoptsmaxfiler   maxpath)r)   diskr*   r*   r+   test_disk_partitions   s   z'TestSystemAPITypes.test_disk_partitionszrequires rootc                 C   sd   t  % td}| t|tt| |D ]}t|sJ qW d    d S 1 s+w   Y  d S )Nall)r   r'   net_connectionsr%   lensetr   )r)   retconnr*   r*   r+   test_net_connections  s   
"z'TestSystemAPITypes.test_net_connectionsc                 C   s   t   D ]B\}}| |t |D ]5}td ur#ts#| |jtj n| |jt	 | |j
t | |jttd f | |jttd f qqd S r   )r'   net_if_addrsr   r   r   r   r   familyIntEnumr   addressnetmasktype	broadcast)r)   ifnameaddrsaddrr*   r*   r+   test_net_if_addrs  s   z$TestSystemAPITypes.test_net_if_addrsc                 C   sx   t   D ]3\}}| |t | |jt td ur$| |jtj	 n| |jt
 | |jt
 | |jt
 qd S r   )r'   net_if_statsr   r   r   isupboolr   duplexr   r   speedmtu)r)   r   infor*   r*   r+   test_net_if_stats  s   z$TestSystemAPITypes.test_net_if_statsc                 C   s*   t jdd D ]
\}}| |t qd S )NT)pernic)r'   net_io_countersr   r   r   )r)   r   _r*   r*   r+   test_net_io_counters)  s   z'TestSystemAPITypes.test_net_io_countersc              	   C   sV   t   D ]"\}}| |t |D ]}| |jt | |jttt	d f qqd S r   )
r'   ro   r   r   r   labelcurrentr   r   r   r)   nameunitsunitr*   r*   r+   rp   /  s   z$TestSystemAPITypes.test_sensors_fansc              	   C   s   t   D ]:\}}| |t |D ]-}| |jt | |jttt	d f | |j
ttt	d f | |jttt	d f qqd S r   )r'   rm   r   r   r   r   r   r   r   r   highcriticalr   r*   r*   r+   rn   8  s   z,TestSystemAPITypes.test_sensors_temperaturesc                 C   r   r   )r   r'   	boot_timer   r(   r*   r*   r+   test_boot_timeC  s   z!TestSystemAPITypes.test_boot_timec                 C   sb   t  D ]*}| |jt | |jttd f | |jttd f | |jt	td f qd S r   )
r'   usersr   r   r   r~   r   hostpidr   )r)   userr*   r*   r+   
test_usersG  s   zTestSystemAPITypes.test_usersN)!r_   r`   ra   __doc__classmethodr   r   r   r   r   r   r   rb   rc   r   platformmachiner   rl   r   r   r   r   r   r   r   r   r   rp   r   rn   r   r   r*   r*   r*   r+   r      s8    







r   c                   @   s"   e Zd Zee ddd ZdS )TestProcessWaitTypez	not POSIXc                 C   sZ   t |  j}|  | }| |tj  t	d ur%| 
|t	j d S | 
|t d S r   )r'   ru   spawn_testprocr   	terminatewaitr%   signalSIGTERMr   r   r   r   )r)   pcoder*   r*   r+   test_negative_signalR  s   z(TestProcessWaitType.test_negative_signalN)r_   r`   ra   rb   rc   r
   r   r*   r*   r*   r+   r   P  s    r   c                    s   t  fdd  fdd}ztddg}W n tjy.   i  Y S w |d |d dji}t}|j|jdd	D ]%\}}z| ||< W qI tj	yn } z | W Y d }~qId }~ww |  |S )
Nc                    sr    | j   | j| t| tjr(| jd ur'| jd  | j| nt| tjr3	| t
|  d S r   )r%   r   r   
isinstancer'   ZombieProcessppidr   NoSuchProcessassertProcessGoner   )excr   r   r   )r   tcaser*   r+   check_exceptionf  s   

z"proc_info.<locals>.check_exceptionc               
      sT   dkr(z d W d S  tjy' }  z |  W Y d } ~ d S d } ~ ww d S r   )r   r'   Error)r  )r  r   r   r   r   r*   r+   do_waitq  s   zproc_info.<locals>.do_waitr   r   r   F)clear_cache)
r   r'   ru   as_dictr   r   r!   itergettersr  )r   r  dr   nsfunfun_namer  r*   )r  r   r   r   r   r  r+   	proc_infoc  s,   

r  c                   @   s8  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLS )MTestFetchAllProcesseszTest 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                 C   s   t s	t | _d S d S r   )r   multiprocessingPoolpoolr(   r*   r*   r+   setUp  s   zTestFetchAllProcesses.setUpc                 C   s    t s| j  | j  d S d S r   )r   r  r   joinr(   r*   r*   r+   tearDown  s   
zTestFetchAllProcesses.tearDownc                 C   sF   ddl m} ts| j|t S g }t D ]	}||| q|S )Nr   )r  )psutil.tests.test_contractsr  r   r  imap_unorderedr'   pidsappend)r)   r  lsr   r*   r*   r+   iter_proc_info  s   z$TestFetchAllProcesses.iter_proc_infoc                 C   s   g }|   D ]a}| D ]Z\}}t| |}z||| W n9 tyU   d}|d||d t|f 7 }|d7 }|dt  7 }ddd | D }|d7 }|	| Y qw |d	d
g d di fvrf|sfJ |qq|rr| 
d|d S )NzH
======================================================================
zFAIL: test_%s pid=%s, ret=%s
r   zF----------------------------------------------------------------------z
%s
c                 s   s    | ]}d | V  qdS )z    Nr*   ).0ir*   r*   r+   	<genexpr>  s    z1TestFetchAllProcesses.test_all.<locals>.<genexpr>r            )r  r   getattrAssertionErrorrepr	traceback
format_excr  
splitlinesr  fail)r)   failuresr   r   valuemethsr*   r*   r+   test_all  s0   

zTestFetchAllProcesses.test_allc                 C   s&   |  |t |D ]}|  |t qd S r   )r   listr   )r)   r   r   partr*   r*   r+   cmdline  s   zTestFetchAllProcesses.cmdlinec                 C   s   |  |tttd f |s| |d d S tr|dsd S tj	|s(J |t
r]tj|r_ttdrattdrczt|tjsDJ W d S  ty\   tj|rVtsY Y d S Y d S w d S d S d S d S )Nr!  z.exeaccessX_OK)r   r   r   r   r%   r   endswithospathisabsr
   isfiler&   r1  r2  r#  existsr   r)   r   r   r*   r*   r+   exe  s"   zTestFetchAllProcesses.exec                 C      |  |t | |d d S r   r   r   r   r9  r*   r*   r+   r        zTestFetchAllProcesses.pidc                 C   s    |  |ttf | |d d S r   )r   r   r   r   r9  r*   r*   r+   r     s   zTestFetchAllProcesses.ppidc                 C   s<   |  |ttf tr|s|d dkrd S ts|sJ d S d S )Nstatusstopped)r   r   r   r   r   r9  r*   r*   r+   r     s   zTestFetchAllProcesses.namec                 C   s\   |  |t z| |d W n ty"   tr|d tjkrn Y nw tdt	| d S )Nr   r>  z%Y %m %d %H:%M:%S)
r   r   r   r#  r   r'   STATUS_ZOMBIEtimestrftime	localtimer9  r*   r*   r+   create_time  s   
z!TestFetchAllProcesses.create_timec                 C   2   t |sJ |D ]}| |t | |d qd S r   )r   r   r   r   )r)   r   r   uidr*   r*   r+   ry     
   zTestFetchAllProcesses.uidsc                 C   s:   t |sJ |D ]}| |t tsts| |d qd S r   )r   r   r   r   r   r   )r)   r   r   gidr*   r*   r+   gids  s   zTestFetchAllProcesses.gidsc                 C   s   |  |t |s
J d S r   )r   r   r9  r*   r*   r+   username
  s   zTestFetchAllProcesses.usernamec                 C   s0   |  |t |s
J | |d | |t d S )N?)r   r   assertNotEqualassertInr   r9  r*   r*   r+   r>    s   zTestFetchAllProcesses.statusc                 C   s>   t |sJ |D ]}| |ttf |dkr| |d qd S )Nr   r   r   r   r   r   )r)   r   r   fieldr*   r*   r+   r     s   z!TestFetchAllProcesses.io_countersc                 C   s|   t r | |jt | |jt | |jd | |jd d S tjtjtj	tj
g}| |t | |d | || d S r   )r   r   ioclassr   r*  r   r'   rB   rA   r@   r?   rM  )r)   r   r   choicesr*   r*   r+   r     s   zTestFetchAllProcesses.ionicec                 C   s4   |  |t tr|s|d dkrd S | |d d S )Nr>  r?     )r   r   r   r   r9  r*   r*   r+   num_threads+  s   z!TestFetchAllProcesses.num_threadsc                 C   sj   |  |t |D ]*}t|sJ | |jd | |jd | |jd |D ]
}|  |ttf q'qd S r   )	r   r.  r   r   id	user_timesystem_timer   r   )r)   r   r   trP  r*   r*   r+   threads1  s   zTestFetchAllProcesses.threadsc                 C   rE  r   )r   r   r   r   )r)   r   r   r   r*   r*   r+   r   ;  rG  zTestFetchAllProcesses.cpu_timesc                 C   4   |  |t d|  krdksJ | J |d S )Nr   g      Y@r   r   r9  r*   r*   r+   r   B     (z!TestFetchAllProcesses.cpu_percentc                 C   s\   |  |t tr|dkrd S | |d t dkr | |d | |tt	t  d S )NrN  r   rS  )
r   r   r   r   r'   r   r%   rM  r.  r   r9  r*   r*   r+   r   F  s   zTestFetchAllProcesses.cpu_numc                 C   s~   t |sJ |D ]}| |ttf | |d qtr=| |j|j | |j|j	 | |j
|j | |j|j d S d S r   )r   r   r   r   r   r   	peak_wsetwsetpeak_paged_pool
paged_poolpeak_nonpaged_poolnonpaged_poolpeak_pagefilepagefiler)   r   r   r*  r*   r*   r+   memory_infoO  s   z!TestFetchAllProcesses.memory_infoc                 C   s   t |sJ t j}|jD ]-}t||}| |ttf | j	|d||fd t
s/tr0|dv r0q| j|||||fd qt
rH| 	|j|j d S d S )Nr   )msg)vmsdata)r   r'   virtual_memorytotal_fieldsr"  r   r   r   r   r   r	   assertLessEqualpssuss)r)   r   r   rk  r   r*  r*   r*   r+   memory_full_infoZ  s   


z&TestFetchAllProcesses.memory_full_infoc              	   C   s   |  |t |D ]t}|  |jt |  |jt tr"| |jd n3trO|  |j	t |  |j
t |  |jt | |j	d | |j
d | |jd ntrU|jsUqtj|js`J |zt|j}W n	 tyq   Y qw t|js|J |qd S )NrN  r   )rwazr+za+)r   r.  fdr   r5  r   r   r%   r   positionmodeflagsr   rM  assertGreaterr   r4  r6  statr   S_ISREGst_mode)r)   r   r   fstr*   r*   r+   
open_filesj  s.   
z TestFetchAllProcesses.open_filesc                 C   r;  r   r<  r9  r*   r*   r+   r     r=  zTestFetchAllProcesses.num_fdsc                 C   sb   t  $ | t|tt| |D ]}t|sJ t| qW d    d S 1 s*w   Y  d S r   )r   r%   r   r   r   r   )r)   r   r   r   r*   r*   r+   connections  s   
"z!TestFetchAllProcesses.connectionsc              
   C   s   |rM|  |t tj|sJ |zt|}W n+ tyD } ztr+|jt	j
jv r+n|jtjkr2 W Y d }~d S W Y d }~d S d }~ww t|jsOJ d S d S r   )r   r   r4  r5  r6  ry  OSErrorr   errnor'   _psplatformACCESS_DENIED_SETENOENTS_ISDIRr{  )r)   r   r   r}  errr*   r*   r+   cwd  s&   zTestFetchAllProcesses.cwdc                 C   rZ  )Nr   d   r[  r9  r*   r*   r+   memory_percent  r\  z$TestFetchAllProcesses.memory_percentc                 C   s   |  |t d S r   )r   r   r9  r*   r*   r+   
is_running  s   z TestFetchAllProcesses.is_runningc                 C   sR   |  |t |g ksJ |ttt }|D ]}|  |t | || qd S r   )r   r.  r   r'   r   r   rM  )r)   r   r   cpusr   r*   r*   r+   r     s   z"TestFetchAllProcesses.cpu_affinityc                 C   sL   |  |ttd f |d ur"tj|sJ |tj|s$J |d S d S r   )r   r   r   r4  r5  r6  r8  r9  r*   r*   r+   r~     s   zTestFetchAllProcesses.terminalc                 C   s   |D ]b}|  |jt |  |jt |  |jt |jD ]G}t||}|dkr9|ds8tj	|js8J |jq|dkrF|sEJ t
|q|dkrUtsT|sTJ t
|q|  |ttf | |d qqd S )Nr5  )[zanon_inode:r   permsr   )r   r   r   r  r5  rl  r"  
startswithr4  r6  r$  r   r   r   r   )r)   r   r   r   fnamer*  r*   r*   r+   r     s(   


z!TestFetchAllProcesses.memory_mapsc                 C   r;  r   r<  r9  r*   r*   r+   r     r=  z!TestFetchAllProcesses.num_handlesc                 C   s   |  |t trd|  krdksJ | J |d S dd ttD }| || tjdkr9|  |tj	 d S |  |t d S )Ni   c                 S   s    g | ]}| d rtt|qS )_PRIORITY_CLASS)r3  r"  r'   )r  xr*   r*   r+   
<listcomp>  s    z.TestFetchAllProcesses.nice.<locals>.<listcomp>)      )
r   r   r
   dirr'   rM  sysversion_infor   r   )r)   r   r   
prioritiesr*   r*   r+   nice  s   (
zTestFetchAllProcesses.nicec                 C   s6   t |sJ |D ]}| |ttf | |d qd S r   rO  re  r*   r*   r+   num_ctx_switches  s
   z&TestFetchAllProcesses.num_ctx_switchesc                 C   s@   |  |t | t|d | |d d | |d d d S )NrQ   r   rN  rS  )r   tupler%   r   r   r9  r*   r*   r+   r     s   zTestFetchAllProcesses.rlimitc                 C   s:   |  |t | D ]\}}|  |t |  |t q
d S r   )r   dictr   r   )r)   r   r   r   r   r*   r*   r+   rt     s
   zTestFetchAllProcesses.environN))r_   r`   ra   r   r  r  r  r-  r0  r:  r   r   r   rD  ry   rI  rJ  r>  r   r   rT  rY  r   r   r   rf  rp  r~  r   r  r  r  r  r   r~   r   r   r  r  r   rt   r*   r*   r*   r+   r    sN    	
	r  __main__)run_from_name):r   r  r  r4  r   r   ry  r  rA  r%  rb   r'   r   r   r   r   r   r   r   r	   r
   r   r   psutil._compatr   r   r   r   psutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   rd   rs   r   r   r  r  r_   psutil.tests.runnerr  __file__r*   r*   r*   r+   <module>   sx   
?5 *  
a