
    ɧdv                        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	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e"          Z( ej)        d d!          Z* G d" d#e"          Z+ e'j,        ej-        .                    e!           d$           G d% d&e"                      Z/e0d'k    rdd(l1m2Z2  e2e3           dS dS ))z
Miscellaneous tests.
    N)LINUX)POSIX)WINDOWS)debug)memoize)memoize_when_activated)supports_ipv6)wrap_numbers)PY3)redirect_stderr)APPVEYOR)
CI_TESTING)HAS_BATTERY)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)
PYTHON_EXE)ROOT_DIR)SCRIPTS_DIR)PsutilTestCase)import_module_by_path)mock)reload_module)sh)unittestc                       e Zd ZefdZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej        ed          d             Zd Zd Zd ZdS )TestMiscc                 8   t          j        |                                 j                  } ||          }|                     d|           |                     d|j        z  |           |                     dt          |                                          z  |                    dd                     |                     d|           |                     d|           |	                                 |
                                  ||          }|                     d|           |                     d|           t          j                            t           j        d	t          j        t          j                              
          5  t          j                    } ||          }|                     d|j        z  |           |                     d|           |                     d|           d d d            n# 1 swxY w Y   t          j                            t           j        d	t          j        t          j                              
          5  t          j                    } ||          }|                     d|j        z  |           |                     d|           |                     d|           d d d            n# 1 swxY w Y   t          j                            t           j        d	t          j        t          j                              
          5  t          j                    } ||          }|                     d|j        z  |           |                     d|           d d d            d S # 1 swxY w Y   d S )Nzpsutil.Processzpid=%sz	name='%s'zname=u'zname='zstatus=z	exitcode=zstatus='terminated'nameside_effectzstatus='zombie'zname=
terminated)psutilProcessspawn_testprocpidassertInstrr!   replaceassertNotIn	terminatewaitr   patchobjectZombieProcessosgetpidNoSuchProcessAccessDenied)selffuncprs       6lib/python3.11/site-packages/psutil/tests/test_misc.pytest_process__repr__zTestMisc.test_process__repr__;   s   N4..00455DGG&***h&***kCMM1ii	844	6 	6 	6i###a(((		DGG+Q///k1%%%Zv~v+1+?	+L+L  N N 	) 	)  AQAMM(QU*A...MM+Q///Wa(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) Zv~v+1+?	+L+L  N N 	) 	)  AQAMM(QU*A...MM,***Wa(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) Zv~v+1+>ry{{+K+K  M M 	) 	)  AQAMM(QU*A...Wa(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s9   A)HH
H
 A)KKK/ANNNc                 <    |                      t                     d S )N)r7   )r;   r*   r6   s    r:   test_process__str__zTestMisc.test_process__str___   s    !!s!+++++    c           	          |                      t          t          j        d                    d           |                      t          t          j        ddd                    d           d S )NA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r!   msgr!   rB   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))assertEqualreprr%   r4   r=   s    r:   test_no_such_process__repr__z%TestMisc.test_no_such_process__repr__b   s    %c**++K	M 	M 	M 	%cEBBBCCC	E 	E 	E 	E 	Er?   c           	          |                      t          t          j        d                    d           |                      t          t          j        ddd                    d           d S )NrA   z"process no longer exists (pid=321)r!   rB   rC   msg (pid=321, name='name'))rD   r*   r%   r4   r=   s    r:   test_no_such_process__str__z$TestMisc.test_no_such_process__str__j   sw    $S))**0	2 	2 	2 	$Sv5AAABB(	* 	* 	* 	* 	*r?   c           
          |                      t          t          j        d                    d           |                      t          t          j        dddd                    d           d S )NrA   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r!   @  foor!   ppidrB   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rD   rE   r%   r1   r=   s    r:   test_zombie_process__repr__z$TestMisc.test_zombie_process__repr__r   s    %c**++*	+ 	+ 	+ 	%cSeLLLMMM	O 	O 	O 	O 	Or?   c           
          |                      t          t          j        d                    d           |                      t          t          j        dddd                    d           d S )NrA   z,PID still exists but it's a zombie (pid=321)r!   rK   rL   rM   z$foo (pid=321, ppid=320, name='name'))rD   r*   r%   r1   r=   s    r:   test_zombie_process__str__z#TestMisc.test_zombie_process__str__{   sy    $S))**:	< 	< 	< 	$SvCUKKKLL2	4 	4 	4 	4 	4r?   c           	          |                      t          t          j        d                    d           |                      t          t          j        ddd                    d           d S )NrA   zpsutil.AccessDenied(pid=321)r!   rB   rC   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rD   rE   r%   r5   r=   s    r:   test_access_denied__repr__z#TestMisc.test_access_denied__repr__   s|    $S))***	, 	, 	, 	$Sv5AAABBB	D 	D 	D 	D 	Dr?   c           	          |                      t          t          j        d                    d           |                      t          t          j        ddd                    d           d S )NrA   z	(pid=321)r!   rB   rC   rH   )rD   r*   r%   r5   r=   s    r:   test_access_denied__str__z"TestMisc.test_access_denied__str__   sw    #C(())	 	 	 	#Cf%@@@AA(	* 	* 	* 	* 	*r?   c           	          |                      t          t          j        d                    d           |                      t          t          j        ddd                    d           d S )N   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rA   r!   r(   r!   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rD   rE   r%   TimeoutExpiredr=   s    r:   test_timeout_expired__repr__z%TestMisc.test_timeout_expired__repr__   s|    &q))**M	O 	O 	O 	&qc???@@-	. 	. 	. 	. 	.r?   c           	          |                      t          t          j        d                    d           |                      t          t          j        ddd                    d           d S )NrW   ztimeout after 5 secondsrA   r!   rX   z.timeout after 5 seconds (pid=321, name='name'))rD   r*   r%   rY   r=   s    r:   test_timeout_expired__str__z$TestMisc.test_timeout_expired__str__   sw    %a(())%	' 	' 	' 	%aSv>>>??<	> 	> 	> 	> 	>r?   c                     t          j                    }t          j                    }|                     ||           d|_        |                     ||           |                     |d           d S )N)r   r   rL   )r%   r&   rD   _identassertNotEqual)r6   p1p2s      r:   test_process__eq__zTestMisc.test_process__eq__   sk    ^^R   	B###B&&&&&r?   c                     t          t          j                    t          j                    g          }|                     t	          |          d           d S )N   )setr%   r&   rD   len)r6   ss     r:   test_process__hash__zTestMisc.test_process__hash__   sF    !!6>#3#3455Q#####r?   c                    t          t                    }|D ]}|dv r|                    d          s	 t          |           -# t          $ rd |t          j        vrSt          t          |          }|Y ^|j        3d|j                                        vr| 	                    d|z             Y w xY wt          j        D ]}| 
                    ||           d S )N)longteststestPermissionErrorProcessLookupError_
deprecatedz%r not in psutil.__all__)dirr%   
startswith
__import__ImportError__all__getattr__doc__lowerfailr)   )r6   
dir_psutilr!   funs       r:   test__all__zTestMisc.test__all__   s%   [[
 	I 	ID . . ??3'' 
I	It$$$$" I I I6>1 I%fd33 %$HK I ,CK4E4E4G4G GI II&@4&GHHHI
I  N 	, 	,DMM$
++++	, 	,s   A/B25:B21B2c                     |                      d                    d t          j        D                       t          j                   d S )N.c                 ,    g | ]}t          |          S  )r*   ).0xs     r:   
<listcomp>z)TestMisc.test_version.<locals>.<listcomp>   s    "G"G"Ga3q66"G"G"Gr?   )rD   joinr%   version_info__version__r=   s    r:   test_versionzTestMisc.test_version   sJ    "G"G63F"G"G"GHH+	- 	- 	- 	- 	-r?   c                     t          j                    }d|_        |                     d|                                           d S )N1rL   )r%   r&   rL   r,   as_dict)r6   r8   s     r:   !test_process_as_dict_no_new_namesz*TestMisc.test_process_as_dict_no_new_names   s:    N		,,,,,r?   c                 >   t           fd            }g t          d          D ]I} |            }di f}|                     ||           |                     t                    d           Jt          d          D ]J} |d          }di f}|                     ||           |                     t                    d           Kt          d          D ]N} |dd          }dddif}|                     ||           |                     t                    d           O|                                  |            }di f}|                     ||           |                     t                    d	           |                     |j        d
           d S )Nc                  6                         d           | |fS )foo docstringNappend)argskwargscallss     r:   rL   z"TestMisc.test_memoize.<locals>.foo   s!     LL&>!r?      r   rd   )rd   )barr         r   )r   rangerD   rf   cache_clearrw   )r6   rL   r   retexpectedr   s        @r:   test_memoizezTestMisc.test_memoize   s   		" 	" 	" 	" 
	"
 q 	, 	,A#%%CBxHS(+++SZZ++++q 	, 	,A#a&&Cr{HS(+++SZZ++++q 	, 	,A#aQ---Cqz*HS(+++SZZ++++cee8h'''UQ'''o66666r?   c                 p    G fdd          } |            }g |                                  |                                  |                     t                    d           g |j                             |           |                                  |                                  |                     t                    d           g |j                             |           |                                  |                                  |                     t                    d           d S )Nc                   *    e Zd Ze fd            ZdS )1TestMisc.test_memoize_when_activated.<locals>.Fooc                 2                         d            d S Nr   )r6   r   s    r:   rL   z5TestMisc.test_memoize_when_activated.<locals>.Foo.foo   s    T"""""r?   N)__name__
__module____qualname__r   rL   )r   s   r:   Foor      s9        ## # # # $## # #r?   r   r   rd   )rL   rD   rf   cache_activatecache_deactivate)r6   r   fr   s      @r:   test_memoize_when_activatedz$TestMisc.test_memoize_when_activated   s)   	# 	# 	# 	# 	# 	# 	# 	# 	# 	# CEE		UQ''' 	Q		UQ''' 	q!!!		UQ'''''r?   c                    ddl m} d }|                      |d           |d          di           |                      |d           |d          d |d          d	i           |                      |d
           |d          d |d          di           |                      |d           |d          d |d          d	i           |                      |d           |d          di           |                      |d           |d          di           |                      |d           |d          di           d S )Nr   )parse_environ_blockc                 <    t           r|                                 n| S r   )r   upper)rg   s    r:   kz,TestMisc.test_parse_environ_block.<locals>.k  s     '.177999Q.r?   za=1 ar   z	a=1 b=2  b2za=1 b=   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)psutil._commonr   rD   )r6   r   r   s      r:   test_parse_environ_blockz!TestMisc.test_parse_environ_block  s   666666	/ 	/ 	/ 	,,W55!C&&#	( 	( 	(,,^<<!C&&#qqvvs3	5 	5 	5,,];;!C&&#qqvvr2	4 	4 	4 	,,-@AA!C&&#qqvvs3	5 	5 	5 	,,\::QQsVVSMJJJ,,];;aaffc]KKK,,Z8811S663-HHHHHr?   c                    |                      t          j                   t                      rt          j        d          5 }d|_        t          j                     t                      rJ 	 d d d            n# 1 swxY w Y   t          j                     t          j        dt          j                  5 }t                      rJ |j        sJ 	 d d d            n# 1 swxY w Y   t          j                     t          j        dt          j	                  5 }t                      rJ t          j                     |j        sJ 	 d d d            n# 1 swxY w Y   t          j                     t          j        dt          j	                  5 }t                      rJ t          j                     |j        sJ 	 d d d            d S # 1 swxY w Y   d S | 
                    t                    5  t          j        t          j        t          j                  }	 |                    d           |                                 n# |                                 w xY w	 d d d            d S # 1 swxY w Y   d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr"   z!psutil._common.socket.socket.bind)z::1r   )
addCleanupr	   r   r   r/   has_ipv6socketerrorcalledgaierrorassertRaises	ExceptionAF_INET6SOCK_STREAMbindclose)r6   rg   socks      r:   test_supports_ipv6zTestMisc.test_supports_ipv6&  s   1222?? 	!344 +"
)+++(??****+ + + + + + + + + + + + + + +
 %''':(.6 6 6  9:(??***x                             
 %''':(.9 9 9  <=(??***)+++x	                              %'''?(.9 9 9  <=(??***)+++x	                                    ""9-- ! !}V_f6HII!IIj)))JJLLLLDJJLLLLL! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !sr   +A;;A?A?9C  C$'C$-EEE-GGG8*I4#I8I4I##I44I8;I8c                 r   ddl m} t          j                            t
                    } ||          sJ  |t          j                            |                    rJ t          j        dt          t          j        d                    5  |                     t          ||           d d d            n# 1 swxY w Y   t          j        dt          t          j        d                    5  |                     t          ||           d d d            n# 1 swxY w Y   t          j        dt          t          j        d                    5   ||          rJ 	 d d d            n# 1 swxY w Y   t          j        dd          5   ||          rJ 	 d d d            d S # 1 swxY w Y   d S )	Nr   )isfile_strictzpsutil._common.os.statrL   r"   zpsutil._common.stat.S_ISREGFreturn_value)r   r   r2   pathabspath__file__dirnamer   r/   OSErrorerrnoEPERMr   EACCESENOENT)r6   r   	this_files      r:   test_isfile_strictzTestMisc.test_isfile_strictI  s   000000GOOH--	}Y''''' =!;!;<<<<<Z0$+EK$?$?A A A 	A 	Ag}i@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A Z0$+EL%$@$@B B B 	A 	Ag}i@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A Z0$+EL%$@$@B B B 	0 	0$}Y//////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 Z5EJJJ 	0 	0$}Y//////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sH   B99B= B=2DD"DE//E36E3F,,F03F0c                      fd} |t          j                                                                |t          j                                |t          j                                |t          j                                |t          j        d                      |t          j                               t          r t          j
                            d          sn#t          s |t          j                                |t          j                                |t          j        t          j                                          |t          j                               d S )Nc                     t           &t          j        t          j        |                      t          j        |           }t          j        |          }                    | |           d S r   )jsonloadsdumpspicklerD   )r   r   r   r6   s      r:   checkz*TestMisc.test_serialization.<locals>.check[  s[     ,
4:c??+++S!!AQAS!$$$$$r?   r   )intervalz/proc/diskstats)r%   r&   r   virtual_memoryswap_memory	cpu_timescpu_times_percentnet_io_countersr   r2   r   existsr   disk_io_countersdisk_partitions
disk_usagegetcwdusers)r6   r   s   ` r:   test_serializationzTestMisc.test_serializationZ  s\   	% 	% 	% 	% 	% 	fn&&(()))f#%%&&&f ""###f  !!!f&222333f$&&''' 	1(9:: 	1 1f-//000f$&&'''f	,,---flnnr?   z*temporarily disabled due to setuptools bugc                    t           j                            t          d          }t          r4t           j                            |          s|                     d          S t          |          }|                     t          |j
                   |                     |                                t          j                   d S )Nzsetup.pyzcan't find setup.py)r2   r   r   r   r   r   skipTestr   r   
SystemExitsetuprD   get_versionr%   r   )r6   setup_pymodules      r:   test_setup_scriptzTestMisc.test_setup_scriptr  s    7<<*55 	8bgnnX66 	8==!6777&x00*fl333++--v/ABBBBBr?   c                    t           j                            t          j        dt          j                  5 }t          j                     |j        sJ 	 d d d            n# 1 swxY w Y   t           j                            t          j        dt          j        d                    5 }t          j                     |j        sJ 	 d d d            n# 1 swxY w Y   t           j                            t          j        dt                    5 }| 	                    t                    5  t          j                     d d d            n# 1 swxY w Y   |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Ncreate_timer"   rd   )
r   r/   r0   r%   r&   r5   r   r1   
ValueErrorr   )r6   meths     r:   test_ad_on_process_creationz$TestMisc.test_ad_on_process_creation{  sZ    Zv~}+1+>  @ @ 	CGN;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Zv~}+1+?+B+B  D D 	GKN;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Zv~}+5  7 7 	:>"":.. ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !;		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sY   A!!A%(A%*CCCE-+E?E-E	E-E	E--E14E1c                 d   t          j        dd          5  |                     t                    5 }t	          t
                     d d d            n# 1 swxY w Y   |                     dt          |j                  	                                           d d d            d S # 1 swxY w Y   d S )Nzpsutil._psplatform.cext.versionz0.0.0r   zversion conflict)
r   r/   r   rt   r   r%   r)   r*   	exceptionrx   )r6   cms     r:   test_sanity_version_checkz"TestMisc.test_sanity_version_check  s8   Z1I I I 	I 	I"";// &2f%%%& & & & & & & & & & & & & & &MM,c",.?.?.E.E.G.GHHH		I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is4   B%AB%A	B%A	=B%%B),B)c                    t           rddlm} nddlm} t           |                      5 }t	          d           d d d            n# 1 swxY w Y   |                                }|                    d          s
J |            |                     d|           |                     t          	                    dd          |           t           |                      5 }t	          t          d                     d d d            n# 1 swxY w Y   |                                }|                     d|           |                     d	|           t           |                      5 }t          d
d          }d|_        t	          |           d d d            n# 1 swxY w Y   |                                }|                     d|           |                     d|           d S )Nr   )StringIOhellozpsutil-debugz.pyc.pyzthis is an errorzignoring ValueErrorz'this is an error'r   zno such filez/foo)r   ior   r   r   getvaluerr   r)   r   r+   r   r   filename)r6   r   r   rB   excs        r:   
test_debugzTestMisc.test_debug  s    	*#######))))))XXZZ(( 	A'NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	jjll~~n--22s222gs###h&&vu55s;;; XXZZ(( 	2A*/00111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2jjll+S111*C000 XXZZ(( 	A!^,,C!CL#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 jjllnc***fc"""""s5   AAA"DDD-'F  F$'F$N) r   r   r   rE   r;   r>   rF   rI   rO   rQ   rS   rU   rZ   r\   rb   rh   r|   r   r   r   r   r   r   r   r   r   skipIfr   r   r   r   r   r   r?   r:   r   r   9   s       (, ") ") ") ")H, , ,E E E* * *O O O4 4 4D D D* * *. . .> > >' ' '$ $ $, , ,2- - -- - -!7 !7 !7F( ( (6I I I*!! !! !!F0 0 0"  0 X_XKLLC C MLC  "I I I# # # # #r?   r   rL   za b cc                       e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Z ej        e d          d             ZdS )TestWrapNumbersc                 ,    t          j                     d S r   )r
   r   r=   s    r:   setUpzTestWrapNumbers.setUp  s     """""r?   c                 t    dt          ddd          i}|                     t          |d          |           d S Ndisk1rW   disk_iontrD   r
   r6   inputs     r:   test_first_callzTestWrapNumbers.test_first_call  s<    "Q1++&eY77?????r?   c                     dt          ddd          i}|                     t          |d          |           |                     t          |d          |           d S r  r
  r  s     r:   test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changed  s\    "Q1++&eY77???eY77?????r?   c                    dt          ddd          i}|                     t          |d          |           dt          ddd          i}|                     t          |d          |           dt          ddd          i}|                     t          |d          |           dt          ddd          i}|                     t          |d          |           d S )	Nr  rW   r	  
               r
  r  s     r:   test_increase_but_no_wrapz)TestWrapNumbers.test_increase_but_no_wrap  s    "Q1++&eY77???"RR..)eY77???"RR..)eY77???"RR..)eY77?????r?   c           	         dt          ddd          i}|                     t          |d          |           dt          ddd          i}|                     t          |d          dt          ddd          i           dt          ddd          i}|                     t          |d          dt          ddd          i           dt          ddd          i}|                     t          |d          dt          ddd          i           dt          ddd          i}|                     t          |d          dt          ddd	          i           dt          ddd          i}|                     t          |d          dt          ddd	          i           dt          d
dd          i}|                     t          |d          dt          ddd	          i           dt          ddd          i}|                     t          |d          dt          ddd	          i           dt          ddd          i}|                     t          |d          dt          ddd	          i           d S )Nr  d   r	  r  n   Z      r     2      (   r
  r  s     r:   	test_wrapzTestWrapNumbers.test_wrap  s   "S#s++,eY77???"S#r**+eY77!2c3#4#45	7 	7 	7 "S#r**+eY77!2c3#4#45	7 	7 	7 "S#r**+eY77!2c3#4#45	7 	7 	7 "S#r**+eY77!2c3#4#45	7 	7 	7 "S#r**+eY77!2c3#4#45	7 	7 	7 "Rb//*eY77!2c3#4#45	7 	7 	7 "Rb//*eY77!2c3#4#45	7 	7 	7 "Rb//*eY77!2c3#4#45	7 	7 	7 	7 	7r?   c                 p   dt          ddd          i}|                     t          |d          |           t          ddd          t          ddd          d}|                     t          |d          |           dt          ddd          i}|                     t          |d          |           d S )Nr  rW   r	     r  disk2   r
  r  s     r:   test_changing_keysz"TestWrapNumbers.test_changing_keys  s     "Q1++&eY77???Q1++Q1++' 'eY77???"Q1++&eY77?????r?   c           	         t          ddd          t          ddd          d}|                     t          |d          |           t          ddd          t          ddd          d}|                     t          |d          t          ddd          t          ddd          d           dt          ddd          i}|                     t          |d          |           t          ddd          t          ddd          d}|                     t          |d          |           t          ddd          t          ddd          d}|                     t          |d          |           t          ddd          t          ddd          d}|                     t          |d          t          ddd          t          ddd          d           d S )Nr  r  r$  r	  r  r  r  r
  r  s     r:   test_changing_keys_w_wrapz)TestWrapNumbers.test_changing_keys_w_wrap  s    RR..S#s++- -eY77???RR..S#r**, ,eY77#%b"b>>#%c3#4#46 6	7 	7 	7 "RR..)eY77??? RR..S#s++- -eY77???RR..S#s++- -eY77???RR..S#r**, ,eY77#%b"b>>#%c3#4#46 6	7 	7 	7 	7 	7r?   c                    ddddd}|                      t          |d          |           |                      t          |d          |           ddddd}t          |d          }|                      |d         d	         d
           d S )N)	i,      #  R       ȷ  )	i  r   i tU i   i  r   r   r   r&  )	6   r3  i $ i N r      r  i     )	iU	  i  i"  r  i  i4  i  i  i\  )nvme0n1	nvme0n1p1	nvme0n1p2	nvme0n1p3r	  )	r  r+  r,  r-  r.  r/  r0  r1  r2  r6  r   i  )rD   r
   )r6   douts      r:   test_real_datazTestWrapNumbers.test_real_data#  s    NCIMO O 	a33Q777a33Q777NCIMO O 1i((Y*C00000r?   c                 &   dt          ddd          i}t          |d           t          j                    }|                     |d         d|i           |                     |d         di i           |                     |d         di i           d S )Nr  rW   r	  r   rd   r   r  r
   
cache_inforD   r6   r  caches      r:   test_cache_first_callz%TestWrapNumbers.test_cache_first_call4  s    "Q1++&UI&&&'))qIu#5666qIr?333qIr?33333r?   c                 t   dt          ddd          i}t          |d           dt          ddd          i}t          |d           t          j                    }|                     |d         d|i           |                     |d         dddddi           |                     |d         di i           d S )	Nr  rW   r	  r  r   rd   )r  r   )r  rd   r  r   r   r>  r@  s      r:   test_cache_call_twicez%TestWrapNumbers.test_cache_call_twice<  s    "Q1++&UI&&&"RR..)UI&&&'))qIu#5666!HqKKL	N 	N 	N 	qIr?33333r?   c                 `    dt          ddd          i}t          |d           dt          ddd          i}t          |d           t          j                    }                     |d         d|i                                |d         dddddi                                |d         ddt	          d	g          ii            fd
}dt          ddd          i}t          |d           t          j                    }                     |d         d|i            |             dt          ddd          i}t          |d           t          j                    }                     |d         d|i            |             dt          ddd          i}t          |d           t          j                    }                     |d         d|i                                |d         dddddi                                |d         ddt	          d	g          ii           d S )Nr  r  r	  r  r   rd   rD  r   rE  c                      t          j                    }                     | d         dddddi                               | d         ddt          dg          ii           d S )	Nrd   r	  r   r  rD  r   r  rE  )r
   r?  rD   re   )rA  r6   s    r:   assert_z0TestWrapNumbers.test_cache_wrap.<locals>.assert_W  s     +--Ea1A+.0 0 12 2 2 U1X''3~3F3F)GHJ J J J Jr?   r  r  r  )r  r
   r?  rD   re   )r6   r  rA  rI  s   `   r:   test_cache_wrapzTestWrapNumbers.test_cache_wrapH  s   "S#s++,UI&&& "S#r**+UI&&&'))qIu#5666!HqMMN	P 	P 	P 	qIl^9L9L/M#NOOO	J 	J 	J 	J 	J "S#r**+UI&&&'))qIu#5666			 "S#r**+UI&&&'))qIu#5666			 "S#r**+UI&&&'))qIu#5666!HqMMN	P 	P 	P 	qIl^9L9L/M#NOOOOOr?   c                    dt          ddd          i}t          |d           t          ddd          t          ddd          d}t          |d           t          j                    }|                     |d         d|i           |                     |d         dddddi           |                     |d	         di i           d S )
Nr  rW   r	  r#  r$  r   rd   rD  r   r>  r@  s      r:   test_cache_changing_keysz(TestWrapNumbers.test_cache_changing_keysx  s    "Q1++&UI&&&Q1++Q1++' 'UI&&&'))qIu#5666!HqKKL	N 	N 	N 	qIr?33333r?   c                 8   dt          ddd          i}t          |d           t          |d           t          j        d           |                     t          j                    i i i f           t          j        d           t          j        d           d S )Nr  rW   r	  z?!?)r  r
   r   rD   r?  r  s     r:   test_cache_clearz TestWrapNumbers.test_cache_clear  s    "Q1++&UI&&&UI&&& +++022RRLAAA +++ '''''r?   not supportedc                    t          j                    rt          j                    s|                     d          S t          j                     t          j                     t	          j                    }|D ].}|                     d|           |                     d|           /t           j                                         t	          j                    }|D ].}|                     d|           |                     d|           /t           j                                         t	          j                    }| 	                    |i i i f           d S )Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)
r%   r   r   r   r
   r?  r)   r   r,   rD   )r6   cachesrA  s      r:   test_cache_clear_public_apisz,TestWrapNumbers.test_cache_clear_public_apis  sD   &(( 	?0F0H0H 	?==!=>>>!!!   (** 	; 	;EMM3U;;;MM2E::::++---(** 	? 	?EMM2E:::6>>>>**,,,(**"b".....r?   N)r   r   r   r  tearDownr  r  r  r!  r'  r)  r<  rB  rF  rJ  rL  rN  r   r  r   rR  r   r?   r:   r  r    s       # # # H@ @ @@ @ @
@ @ @#7 #7 #7J
@ 
@ 
@7 7 7<1 1 1"4 4 4
4 
4 
4.P .P .P`4 4 4( ( ( X_,,o>>/ / ?>/ / /r?   r  zcan't locate scripts directoryc                      e Zd ZdZed             Zed"d            Zd Z ej	        e
 d          d             Zd Zd	 Zd
 Zd Z ej	        eo ej                     d          d             Zd Zd Zd Zd Z ej	        e d          d             Zd Zd Zd Zd Zd Zd Z ej	        e  d          d             Z!d Z" ej	        e# d          d             Z$ ej	        e% d          d             Z& ej	        e' d           ej	        e( d          d                          Z) ej	        e' d           ej	        e( d          d!                         Z*dS )#TestScriptsz-Tests for scripts in the "scripts" directory.c                 f   dt           j                            t          |           z  } t          | g}|D ]}|                    |           	 t          |fi |                                }n8# t          $ r+}dt          |          v rt          |          cY d }~S  d }~ww xY w|s
J |            |S )Nz%sr5   )
r2   r   r   r   r   r   r   stripRuntimeErrorr*   )exer   r   cmdargr;  errs          r:   assert_stdoutzTestScripts.assert_stdout  s    RW\\+s3333 	 	CJJsOOOO	S##F##))++CC 	 	 	S) 3xx		
 C
s$   A- -
B"7BB"BB"Nc                 (   t           j                            t          |           } t          rt          | dd          }nt          | d          }|5  |                                }d d d            n# 1 swxY w Y   t          j        |           d S )Nrtutf8)encoding)	r2   r   r   r   r   openreadastparse)rY  r   r   srcs       r:   assert_syntaxzTestScripts.assert_syntax  s    gll;,, 	 S$000AAS$A 	 	&&((C	 	 	 	 	 	 	 	 	 	 	 	 	 	 		#s   A33A7:A7c                 P   t          |           }t          j        t                    D ]|}|                    d          redt          j                            |          d         z   |vr;|                     dt          j                            t          |          z             }d S )Nr   test_r   zno test defined for %r script)	rq   r2   listdirr   endswithr   splitextry   r   )r6   methsr!   s      r:   test_coveragezTestScripts.test_coverage  s    D		J{++ 	A 	AD}}U## ARW--d33A66eC AII= "[$ ? ?@ A A A		A 	Ar?   z
POSIX onlyc                 L   t          j        t                    D ]\  }}}|D ]}|                    d          rit           j                            ||          }t          j        t          j        |          t          j                 z  s| 	                    d|z            d S )Nr   z%r is not executable)
r2   walkr   rk  r   r   statS_IXUSRST_MODEry   )r6   rootdirsfilesfiler   s         r:   test_executablezTestScripts.test_executable  s    !#!5!5 	G 	GD$ G G=='' G7<<d33D<"'$--*EE G"ii(>(EFFF	G	G 	Gr?   c                 0    |                      d           d S )Nzdisk_usage.pyr]  r=   s    r:   test_disk_usagezTestScripts.test_disk_usage  s    ?+++++r?   c                 0    |                      d           d S )Nzfree.pyrz  r=   s    r:   	test_freezTestScripts.test_free  s    9%%%%%r?   c                 0    |                      d           d S )Nz
meminfo.pyrz  r=   s    r:   test_meminfozTestScripts.test_meminfo      <(((((r?   c                 n    |                      dt          t          j                                         d S )Nzprocinfo.pyr]  r*   r2   r3   r=   s    r:   test_procinfozTestScripts.test_procinfo  s,    =#bikk*:*:;;;;;r?   zno usersc                 0    |                      d           d S )Nzwho.pyrz  r=   s    r:   test_whozTestScripts.test_who  s    8$$$$$r?   c                 0    |                      d           d S )Nzps.pyrz  r=   s    r:   test_pszTestScripts.test_ps  s    7#####r?   c                 0    |                      d           d S )Nz	pstree.pyrz  r=   s    r:   test_pstreezTestScripts.test_pstree      ;'''''r?   c                 0    |                      d           d S )Nz
netstat.pyrz  r=   s    r:   test_netstatzTestScripts.test_netstat  r  r?   c                 0    |                      d           d S )Nzifconfig.pyrz  r=   s    r:   test_ifconfigzTestScripts.test_ifconfig  s    =)))))r?   rO  c                 n    |                      dt          t          j                                         d S )Nzpmap.pyr  r=   s    r:   	test_pmapzTestScripts.test_pmap  s,    9c")++&6&677777r?   c                     dt          j                                                    j        vr|                     d          |                     d           d S )NussrO  zprocsmem.py)r%   r&   memory_full_info_fieldsr   r]  r=   s    r:   test_procsmemzTestScripts.test_procsmem  sR    ((99;;CC 	1--000=)))))r?   c                 0    |                      d           d S )Nz
killall.pyrg  r=   s    r:   test_killallzTestScripts.test_killall  r  r?   c                 0    |                      d           d S )Nz	nettop.pyr  r=   s    r:   test_nettopzTestScripts.test_nettop  r  r?   c                 0    |                      d           d S )Nztop.pyr  r=   s    r:   test_topzTestScripts.test_top  s    8$$$$$r?   c                 0    |                      d           d S )Nziotop.pyr  r=   s    r:   
test_iotopzTestScripts.test_iotop
  s    :&&&&&r?   c                     |                      dt          j                                                              }|                     t          t          j                              |           d S )Nzpidof.py)r]  r%   r&   r!   r)   r*   r2   r3   )r6   outputs     r:   
test_pidofzTestScripts.test_pidof  sS    ##J0@0@0E0E0G0GHHc")++&&/////r?   zWINDOWS onlyc                 0    |                      d           d S )Nzwinservices.pyrz  r=   s    r:   test_winserviceszTestScripts.test_winservices  s    +,,,,,r?   c                 0    |                      d           d S )Nzcpu_distribution.pyr  r=   s    r:   test_cpu_distributionz!TestScripts.test_cpu_distribution  s    011111r?   c                     t          j                    s|                     d           |                     d           d S )Nzno temperaturesztemperatures.py)r%   sensors_temperaturesr   r]  r=   s    r:   test_temperatureszTestScripts.test_temperatures  sA    *,, 	-MM+,,,,-----r?   c                     t          j                    s|                     d           |                     d           d S )Nzno fanszfans.py)r%   sensors_fansr   r]  r=   s    r:   	test_fanszTestScripts.test_fans  s?    "$$ 	%MM)$$$9%%%%%r?   z
no batteryc                 0    |                      d           d S )Nz
battery.pyrz  r=   s    r:   test_batteryzTestScripts.test_battery$       	<(((((r?   c                 0    |                      d           d S )Nz
sensors.pyrz  r=   s    r:   test_sensorszTestScripts.test_sensors)  r  r?   r   )+r   r   r   rw   staticmethodr]  rg  rn  r   r  r   rx  r{  r}  r  r  r   r%   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r   r  r  r   r  r   r  r   r   r  r  r   r?   r:   rU  rU    s        87  \    \A A A X_Y--G G .-G, , ,& & &) ) )< < < X_Z6$6
CC% % DC%$ $ $( ( () ) )* * * X_(/::8 8 ;:8* * *
) ) )( ( (% % %' ' '0 0 0 X_[.11- - 21-2 2 2 X_11?CC. . DC.
 X_))?;;& & <;&
 X_,,o>>X__l33) ) 43 ?>) X_,,o>>X__l33) ) 43 ?>) ) )r?   rU  __main__)run_from_name)4rw   rd  collectionsr   r   r2   r   r   rq  r%   psutil.testsr   r   r   r   r   r   r   r	   r
   psutil._compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
namedtupler  r  r  r   r   rU  r   psutil.tests.runnerr  r   r   r?   r:   <module>r     sz    


       				                                       " " " " " " 1 1 1 1 1 1 ( ( ( ( ( ( ' ' ' ' ' '       * * * * * * ! ! ! ! ! ! # # # # # # $ $ $ $ $ $ ( ( ( ( ( ( , , , , , , , , , , , , ) ) ) ) ) ) 1 1 1 1 1 1 # # # # # # ! ! ! ! ! ! $ $ $ $ $ $ ' ' ' ' ' ' . . . . . .       & & & & & &       ! ! ! ! ! !v# v# v# v# v#~ v# v# v#| [E7++g/ g/ g/ g/ g/n g/ g/ g/^ RW^^K00013 3A) A) A) A) A). A) A)3 3A)H z 111111M( r?   