
    g                     "   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-  G d# d$e'          Z. G d% d&e'          Z/ G d' d(e'          Z0 G d) d*e'          Z1 ej2        d+d,          Z3 G d- d.e'          Z4e*j5        6                    ej7        8                    e&           d/0           G d1 d2e'                      Z9dS )3zMiscellaneous tests.    N)POSIX)WINDOWS)bcat)cat)debug)isfile_strict)memoize)memoize_when_activatedparse_environ_block)supports_ipv6wrap_numbers)PY3)FileNotFoundError)redirect_stderr)
CI_TESTING)HAS_BATTERY)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)
PYTHON_EXE)PYTHON_EXE_ENV)	QEMU_USER)SCRIPTS_DIR)PsutilTestCase)mock)process_namespace)pytest)reload_module)sh)system_namespacec                   l    e Zd 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S )TestSpecialMethodsc                 R   t          j        t                    5  t          j        j                            ddz             d d d            n# 1 swxY w Y   t          j        t          j                  5  t          j        ddz             d d d            d S # 1 swxY w Y   d S )N      )	r!   raisesOverflowErrorpsutil_psplatformcextcheck_pid_rangeNoSuchProcessProcessselfs    R/var/www/html/ai-engine/env/lib/python3.11/site-packages/psutil/tests/test_misc.pytest_check_pid_rangez'TestSpecialMethods.test_check_pid_range>   s   ]=)) 	< 	<#33AsF;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<]6/00 	# 	#N1c6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s#   (AAA7BB #B c                 ^   t          j        |                                 j                  } ||          }d|v sJ d|j        z  |v sJ dt	          |                                          z  |                    dd          v sJ d|v sJ d|vsJ |                                 |                                  ||          }d|v sJ d|v sJ t          j
                            t           j        d	t          j        t          j                              
          5  t          j                    } ||          }d|j        z  |v sJ d|v sJ d|vsJ 	 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  |v sJ d|v sJ d|vsJ 	 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  |v sJ d|vsJ 	 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)r,   r1   spawn_testprocpidstrr7   replace	terminatewaitr   patchobjectZombieProcessosgetpidr0   AccessDenied)r3   funcprs       r4   test_process__repr__z'TestSpecialMethods.test_process__repr__D   s   N4..00455DGG1$$$$!%1$$$$S]]*aii	8.L.LLLLLA~~~~!####		DGG$))))aZN,RY[[99  
 
 		$ 		$
   AQAae#q(((($))))!#####		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ ZN,RY[[99  
 
 		$ 		$
   AQAae#q((((1$$$$!#####		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ ZN+BIKK88  
 
 	$ 	$
   AQAae#q((((!#####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s6   !9E''E+.E+9HHH!3J""J&)J&c                 <    |                      t                     d S )N)rG   )rJ   r=   r2   s    r4   test_process__str__z&TestSpecialMethods.test_process__str__p   s    !!s!+++++    c                 R    t          t          j                              dk    sJ d S )Nzpsutil.Error())reprr,   Errorr2   s    r4   test_error__repr__z%TestSpecialMethods.test_error__repr__s   s(    FLNN##'7777777rM   c                 R    t          t          j                              dk    sJ d S )N )r=   r,   rP   r2   s    r4   test_error__str__z$TestSpecialMethods.test_error__str__v   s'    6<>>""b((((((rM   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )NA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r7   msgr7   rW   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rO   r,   r0   r2   s    r4   test_no_such_process__repr__z/TestSpecialMethods.test_no_such_process__repr__y   sy    %c**++NO O O O %cEBBBCCFG G G G G GrM   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )NrV   z"process no longer exists (pid=321)r7   rW   rX   msg (pid=321, name='name'))r=   r,   r0   r2   s    r4   test_no_such_process__str__z.TestSpecialMethods.test_no_such_process__str__   so    $S))**34 4 4 4 $Sv5AAABB+, , , , , ,rM   c                     t          t          j        d                    dk    sJ t          t          j        dddd                    dk    sJ d S )NrV   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r7   @  foor7   ppidrW   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rO   r,   rC   r2   s    r4   test_zombie_process__repr__z.TestSpecialMethods.test_zombie_process__repr__   su    %c**++** * * *
 %cSeLLLMM     rM   c                     t          t          j        d                    dk    sJ t          t          j        dddd                    dk    sJ d S )NrV   z,PID still exists but it's a zombie (pid=321)r7   r^   r_   r`   z$foo (pid=321, ppid=320, name='name'))r=   r,   rC   r2   s    r4   test_zombie_process__str__z-TestSpecialMethods.test_zombie_process__str__   sq    $S))**=> > > > $SvCUKKKLL56 6 6 6 6 6rM   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )NrV   zpsutil.AccessDenied(pid=321)r7   rW   rX   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rO   r,   rF   r2   s    r4   test_access_denied__repr__z-TestSpecialMethods.test_access_denied__repr__   sk    F',,--1OOOOO$Sv5AAABBEF F F F F FrM   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )NrV   z	(pid=321)r7   rW   rX   r[   )r=   r,   rF   r2   s    r4   test_access_denied__str__z,TestSpecialMethods.test_access_denied__str__   sd    6&s++,,;;;;#Cf%@@@AA+, , , , , ,rM   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )N   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rV   r7   r<   r7   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rO   r,   TimeoutExpiredr2   s    r4   test_timeout_expired__repr__z/TestSpecialMethods.test_timeout_expired__repr__   ss    &q))**   
 &qc???@@-- - - - - -rM   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )Nrj   ztimeout after 5 secondsrV   r7   rk   z.timeout after 5 seconds (pid=321, name='name'))r=   r,   rl   r2   s    r4   test_timeout_expired__str__z.TestSpecialMethods.test_timeout_expired__str__   sk    6(++,,0IIIII%aSv>>>???@ @ @ @ @ @rM   c                     t          j                    }t          j                    }||k    sJ d|_        ||k    sJ |dk    sJ d S )N)r   r   r_   )r,   r1   _ident)r3   p1p2s      r4   test_process__eq__z%TestSpecialMethods.test_process__eq__   sN    ^^Rxxxx	RxxxxU{{{{{{rM   c                     t          t          j                    t          j                    g          }t          |          dk    sJ d S )N   )setr,   r1   len)r3   ss     r4   test_process__hash__z'TestSpecialMethods.test_process__hash__   s;    !!6>#3#34551vv{{{{{{rM   N)__name__
__module____qualname__r5   rO   rJ   rL   rQ   rT   rY   r\   rb   rd   rf   rh   rm   ro   rt   rz    rM   r4   r&   r&   =   s        # # # )- *$ *$ *$ *$X, , ,8 8 8) ) )
 
 

 
 


 

 


 
 

 
 

 
 


 

 


 
 
      rM   r&   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestMiscc                    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 ]}||v sJ 	d S )N)r   longteststestPermissionErrorProcessLookupError_
deprecatedz%r not in psutil.__all__)
dirr,   
startswith
__import__ImportError__all__getattr__doc__lowerfail)r3   
dir_psutilr7   funs       r4   test__all__zTestMisc.test__all__   s   [[
 	O 	OD    ??3'' OOt$$$$" 	O 	O 	O6>11%fd33;$HK3 ,CK4E4E4G4G G G"&)),F,M"N"NN	OO$ N 	& 	&D:%%%%%	& 	&s   A/B25:B21B2c                 x    d                     d t          j        D                       t          j        k    sJ d S )N.c                 ,    g | ]}t          |          S r~   )r=   ).0xs     r4   
<listcomp>z)TestMisc.test_version.<locals>.<listcomp>   s    :::c!ff:::rM   )joinr,   version_info__version__r2   s    r4   test_versionzTestMisc.test_version   sG    HH::f&9:::;;!" " " " " "rM   c                 j    t          j                    }d|_        d|                                vsJ d S )N1r_   )r,   r1   r_   as_dict)r3   rH   s     r4   !test_process_as_dict_no_new_namesz*TestMisc.test_process_as_dict_no_new_names   s5    NAIIKK''''''rM   c           
         d }t          j                    } |t          j                                                               t          |          }|                    |j        d          D ]`\  }}|                     ||          5  	  |            } ||           n# t           j        $ r Y nw xY wd d d            n# 1 swxY w Y   at                      }|                    |j                  D ]r\  }}|dv r
t          r|dk    r|                     |          5  	  |            } ||           n# t           j
        $ r Y nw xY wd d d            n# 1 swxY w Y   st          j        t          j        t          j        dd	d
                              }t          |t           j                  sJ |j        dk    sJ |j        d	k    sJ |j        d
k    sJ t          j        t          j        t          j        dd	dd
                              }t          |t           j                  sJ |j        dk    sJ |j        dk    sJ |j        d	k    sJ |j        d
k    sJ t          j        t          j        t          j
        dd	d
                              }t          |t           j
                  sJ |j        dk    sJ |j        d	k    sJ |j        d
k    sJ t          j        t          j        t          j        ddd	                              }t          |t           j                  sJ |j        dk    sJ |j        dk    sJ |j        d	k    sJ d S )Nc                     t          j        t          j        |                      t          j        |           }t          j        |          }| |k    sJ d S N)jsonloadsdumpspickle)retabs      r4   checkz*TestMisc.test_serialization.<locals>.check  sG    Jtz#'''S!!AQA!888888rM   T)clear_cache)procr7   >   win_service_getwin_service_iternet_if_stats)r7   i  r7   rW   )r<   r7   rW   *   )r<   r7   ra   rW   {   !   )secondsr<   r7   )r,   r1   r   r    itergetterssubTestrP   r$   r   rF   r   r   r   r0   
isinstancer<   r7   rW   rC   ra   rl   r   )r3   r   r   nsr   r7   r   r   s           r4   test_serializationzTestMisc.test_serialization  sA   	 	 	 ~fn&&(()))t$$>> 	 	IC4d33  #%%C E#JJJJ |   D               ,, 	 	IC>>> T^334((  #%%C E#JJJJ *   D               LL$FFFF 
 

 !V122222u}}}}vu~~~~LL$FOOO 
 

 !V122222u}}}}v||||vu~~~~LL,6uMMMNN
 
 !V011111u||||vu~~~~LL%bdHHH 
 

 !V233333yBu}}}}vsl   C
B$C$B63C5B66CC		C		'E )
D?3E ?EE EE  E$	'E$	c                 F   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          j
        t                    5  t          j                     d d d            n# 1 swxY w Y   |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                  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
_get_identr8   rv   )r   rA   rB   r,   r1   rF   calledrC   
ValueErrorr!   r*   r0   assertRaises)r3   meths     r4   test_ad_on_process_creationz$TestMisc.test_ad_on_process_creationa  sc    ZNLf6I  
 
 	N;		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ZNLf6J16M6M  
 
 	N;		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ZNLj  
 
 	z** ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ZNLf6J16M6M  
 
 	""6#788 ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A!!A%(A%*CCCE+*E
>E+
E	E+E	E++E/2E/4 HG4(H4G8	8H;G8	<HHHc                 D   t          j        dd          5  t          j        t                    5 }t          t                     d d d            n# 1 swxY w Y   dt          |j                  	                                v sJ 	 d d d            d S # 1 swxY w Y   d S )Nzpsutil._psplatform.cext.versionz0.0.0return_valuezversion conflict)
r   rA   r!   r*   r   r"   r,   r=   valuer   )r3   cms     r4   test_sanity_version_checkz"TestMisc.test_sanity_version_check~  s   Z-G
 
 
 	? 	? {++ &rf%%%& & & & & & & & & & & & & & &%RX)<)<)>)>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s4   BABA	BA	-BBBN)	r{   r|   r}   r   r   r   r   r   r   r~   rM   r4   r   r      ss        & & &B
 
 
( ( (O  O  O z  :? ? ? ? ?rM   r   c                   D    e Zd Zd ZeZd
dZd Zd Zd Zd Z	d Z
d	 ZdS )TestMemoizeDecoratorc                     g | _         d S r   callsr2   s    r4   setUpzTestMemoizeDecorator.setUp  s    


rM   Nc                 :   t          d          D ]&} |            }| j        di fgk    sJ |||k    sJ 't          d          D ]*} |d          }| j        di fdi fgk    sJ |||k    sJ +t          d          D ]1} |dd          }| j        di fdi fdddifgk    sJ |||k    sJ 2t          | j                  dk    sJ |                                  |            }|||k    sJ t          | j                  dk    sJ |j        d	k    sJ d S )
Nr(   r~   rv   rv   barr         My docstring.)ranger   rx   cache_clearr   )r3   objexpected_retvalr   r   s        r4   run_againstz TestMemoizeDecorator.run_against  s   q 	. 	.A#%%C:2r(++++*o----q 	. 	.A#a&&C:2r(T2J!77777*o----q 	. 	.A#aQ---C:2r(T2Jqz8J!KKKKK*o----4:!####cee&/))))4:!####{o------rM   c                 ^    t           fd            }| |                     |d           d S )Nc                  @    j                             | |f           dS r      r   appendargskwargs	baseclasss     r4   r_   z/TestMemoizeDecorator.test_function.<locals>.foo  s$     O""D&>2222rM   r   r   )r	   r   )r3   r_   r   s     @r4   test_functionz"TestMemoizeDecorator.test_function  sL    		 	 	 	 
	
 	b11111rM   c                     t            G fdd                      }| |                     |d             |                                            dk    sJ d S )Nc                   $    e Zd ZdZ fdZd ZdS ),TestMemoizeDecorator.test_class.<locals>.Foor   c                 @    j                             ||f           d S r   r   )r3   r   r   r   s      r4   __init__z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__  s#    &&f~66666rM   c                     dS )Nr   r~   r2   s    r4   r   z0TestMemoizeDecorator.test_class.<locals>.Foo.bar  s    rrM   N)r{   r|   r}   r   r   r   r   s   r4   Foor     sC        7 7 7 7 7    rM   r   r   r   )r	   r   r   r3   r   r   s     @r4   
test_classzTestMemoizeDecorator.test_class  s    		 	 	 	 	 	 	 	 	 
	 	d333suuyy{{b      rM   c                 
   t            G d d                      } |             |            u sJ t           |                      t           |                      k    sJ t           |d                    t           |d                    k    sJ t           |dd                    t           |dd                    k    sJ t           |d                    t           |d                    k    sJ d S )Nc                       e Zd Zd ZdS )6TestMemoizeDecorator.test_class_singleton.<locals>.Barc                     d S r   r~   )r3   r   r   s      r4   r   z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__  s    rM   N)r{   r|   r}   r   r~   rM   r4   Barr     s#            rM   r   rv   r   )r_   r(   )r	   id)r3   r   s     r4   test_class_singletonz)TestMemoizeDecorator.test_class_singleton  s   		 	 	 	 	 	 	 
	 suu~~~~##%%yyBssuuII%%%%##a&&zzRAZZ''''##aQ---  Bss1!}}}$5$55555##a&&zzRAZZ''''''rM   c                 r     G fdd          }| |                       |            j        d           d S )Nc                   :    e Zd Zee fd                        ZdS )3TestMemoizeDecorator.test_staticmethod.<locals>.Fooc                  @    j                             | |f           dS r   r   r   s     r4   r   z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.bar  $     &&f~666rrM   N)r{   r|   r}   staticmethodr	   r   r   s   r4   r   r     sB            W \  rM   r   r   r   r   r   r   s     @r4   test_staticmethodz&TestMemoizeDecorator.test_staticmethod  c    	 	 	 	 	 	 	 	 	 	 	B77777rM   c                 r     G fdd          }| |                       |            j        d           d S )Nc                   :    e Zd Zee fd                        ZdS )2TestMemoizeDecorator.test_classmethod.<locals>.Fooc                 @    j                             ||f           dS r   r   )clsr   r   r   s      r4   r   z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.bar  r   rM   N)r{   r|   r}   classmethodr	   r   r   s   r4   r   r    sB            W [  rM   r   r   r   r   r   s     @r4   test_classmethodz%TestMemoizeDecorator.test_classmethod  r  rM   c                 B   t           fd            }g t          d          D ]-} |            }di f}||k    sJ t                    dk    sJ .t          d          D ].} |d          }di f}||k    sJ t                    dk    sJ /t          d          D ]2} |dd          }dddif}||k    sJ t                    dk    sJ 3|                                  |            }di f}||k    sJ t                    d	k    sJ |j        d
k    sJ d S )Nc                  6                         d           | |fS )Foo docstring.Nr   )r   r   r   s     r4   r_   z/TestMemoizeDecorator.test_original.<locals>.foo  s!     LL&>!rM   r(   r~   rv   r   r   r   r   r   r  )r	   r   rx   r   r   )r3   r_   r   r   expectedr   s        @r4   test_originalz"TestMemoizeDecorator.test_original  s{    
	" 	" 	" 	" 
	"
 q 	# 	#A#%%CBxH(????u::?????q 	# 	#A#a&&CbzH(????u::?????q 	# 	#A#aQ---Cuaj)H(????u::?????cee8h5zzQ{.......rM   r   )r{   r|   r}   r   tearDownr   r   r   r   r   r  r  r~   rM   r4   r   r     s           H. . . .:2 2 2! ! !( ( (
8 
8 
8
8 
8 
8#/ #/ #/ #/ #/rM   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestCommonModulec                     G fdd          } |            }g |                                  |                                  t                    dk    sJ g |j                             |           |                                  |                                  t                    dk    sJ g |j                             |           |                                  |                                  t                    dk    sJ d S )Nc                   *    e Zd Ze fd            ZdS )9TestCommonModule.test_memoize_when_activated.<locals>.Fooc                 2                         d            d S r   r  )r3   r   s    r4   r_   z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.foo  s    T"""""rM   N)r{   r|   r}   r
   r_   r   s   r4   r   r    s9        ## # # # $## # #rM   r   r(   rv   )r_   rx   cache_activatecache_deactivate)r3   r   fr   s      @r4   test_memoize_when_activatedz,TestCommonModule.test_memoize_when_activated  s   	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 CEE		5zzQ 	Q		5zzQ 	q!!!		5zzQrM   c                    d }t          d           |d          dik    sJ t          d           |d          d |d          dik    sJ t          d           |d          d |d          d	ik    sJ t          d
           |d          d |d          dik    sJ t          d           |d          dik    sJ t          d           |d          dik    sJ t          d           |d          dik    sJ d S )Nc                 <    t           r|                                 n| S r   )r   upper)ry   s    r4   kz4TestCommonModule.test_parse_environ_block.<locals>.k0  s     '.177999Q.rM   za=1 r   r   z	a=1 b=2  r   2za=1 b=  rS   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2r   )r3   r  s     r4   test_parse_environ_blockz)TestCommonModule.test_parse_environ_block/  s`   	/ 	/ 	/ #7++#}<<<<">22AcFFCAcFFC7
 
 
 
 
 #=11aaffc11S6625NNNNN"#677AcFFCAcFFC<
 
 
 
 

 #<00QQsVVSMAAAA"=11aaffc]BBBB":..11S663-??????rM   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          j        t          j                  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.socketr8   z!psutil._common.socket.socket.bind)z::1r   )
addCleanupr   r   r   rA   has_ipv6socketerrorr   gaierrorr!   r*   AF_INET6SOCK_STREAMbindclose)r3   ry   socks      r4   test_supports_ipv6z#TestCommonModule.test_supports_ipv6D  s   1222?? #	!344 +"
)+++(??****+ + + + + + + + + + + + + + +
 %'''.FL    (??***x	                              %'''.FO    (??***)+++x                              %'''3"O     (??***)+++x                                    v|,, ! !}V_f6HII!IIj)))JJLLLLDJJLLLLL! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !sr   +A;;A?A?9C  C$'C$-EEE-GGG<*I8'I<I8I''I88I<?I<c                    t           j                            t                    }t	          |          sJ t	          t           j                            |                    rJ t          j        dt          t          j
        d                    5  t          j        t                    5  t	          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dt          t          j        d                    5  t          j        t                    5  t	          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dt          t          j        d                    5  t	          |          rJ 	 d d d            n# 1 swxY w Y   t          j        dd          5  t	          |          rJ 	 d d d            d S # 1 swxY w Y   d S )Nzpsutil._common.os.statr_   r8   zpsutil._common.stat.S_ISREGFr   )rD   pathabspath__file__r   dirnamer   rA   OSErrorerrnoEPERMr!   r*   EACCESENOENT)r3   	this_files     r4   test_isfile_strictz#TestCommonModule.test_isfile_strictk  s\   GOOH--	Y''''' !;!;<<<<<Z$'%+u2M2M
 
 
 	) 	) w'' ) )i((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)
 Z$'%,2N2N
 
 
 	) 	) w'' ) )i((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)
 Z$'%,2N2N
 
 
 	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 	0s   C,C<CC	CC	CC#&C#E%2EE%E	E%E	E%%E),E)F==GGG>>HHc                    t           rddlm} nddlm} t          j                            t          j        dd          5  t           |                      5 }t          d           t          j                                         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                }|                    d          s
J |            d|v sJ t                              dd          |v sJ t          j                            t          j        dd          5  t           |                      5 }t          t#          d	                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                }d
|v sJ d|v sJ t          j                            t          j        dd          5  t           |                      5 }t%          dd          }d|_        t          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                }d|v sJ d|v sJ d S )Nr   )StringIOPSUTIL_DEBUGThellozpsutil-debugz.pyc.pyzthis is an errorzignoring ValueErrorz'this is an error'r(   zno such filez/foo)r   ior9  r   rA   rB   r,   _commonr   r   sysstderrflushgetvaluer   r/  r>   r   r1  filename)r3   r9  r  rW   excs        r4   
test_debugzTestCommonModule.test_debug  s    	*#######))))))Zv~~tDD 	# 	# ,, #g
  """# # # # # # # # # # # # # # #	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# jjll~~n--22s222#~~~~..#5555 Zv~~tDD 	6 	6 ,, 6j!3445556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 jjll$++++#s**** Zv~~tDD 	 	 ,, a00%c


              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 jjll$$$$}}}}}}s    B).BB)B	B)B	B))B-0B-7FE8,F8E<	<F?E<	 FFF%I='H0$I0H4	4I7H4	8IIIc                 p   |                                  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          |          dk    sJ t	          |          dk    sJ t          j        t                    5  t          |dz              d d d            n# 1 swxY w Y   t          j        t                    5  t	          |dz              d d d            n# 1 swxY w Y   t          |dz   d          dk    sJ t	          |dz   d          dk    sJ d S )Nwr_   s   fooz-invalidr   )fallback)
get_testfnopenwriter   r   r!   r*   r   )r3   testfnr  s      r4   test_cat_bcatzTestCommonModule.test_cat_bcat  s   ""&# 	!GGENNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6{{e####F||v%%%%],-- 	% 	%#$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%],-- 	& 	&*$%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&6J&7775@@@@FZ'%888EAAAAAAs5   AAAB44B8;B8C77C;>C;N)	r{   r|   r}   r  r  r+  r7  rE  rM  r~   rM   r4   r  r    sx          4@ @ @*%! %! %!N0 0 0*  BB B B B BrM   r  r_   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   r2   s    r4   r   zTestWrapNumbers.setUp  s     """""rM   c                 X    dt          ddd          i}t          |d          |k    sJ d S Ndisk1rj   disk_iontr   r3   inputs     r4   test_first_callzTestWrapNumbers.test_first_call  s7    "Q1++&E9--666666rM   c                     dt          ddd          i}t          |d          |k    sJ t          |d          |k    sJ d S rR  rU  rW  s     r4   test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changed  sR    "Q1++&E9--6666E9--666666rM   c                 N   dt          ddd          i}t          |d          |k    sJ dt          ddd          i}t          |d          |k    sJ dt          ddd          i}t          |d          |k    sJ dt          ddd          i}t          |d          |k    sJ d S )	NrS  rj   rT  
               rU  rW  s     r4   test_increase_but_no_wrapz)TestWrapNumbers.test_increase_but_no_wrap  s    "Q1++&E9--6666"RR..)E9--6666"RR..)E9--6666"RR..)E9--666666rM   c                    dt          ddd          i}t          |d          |k    sJ dt          ddd          i}t          |d          dt          ddd          ik    sJ dt          ddd          i}t          |d          dt          ddd          ik    sJ dt          ddd          i}t          |d          dt          ddd          ik    sJ dt          ddd          i}t          |d          dt          ddd	          ik    sJ dt          ddd          i}t          |d          dt          ddd	          ik    sJ dt          d
dd          i}t          |d          dt          ddd	          ik    sJ dt          ddd          i}t          |d          dt          ddd	          ik    sJ dt          ddd          i}t          |d          dt          ddd	          ik    sJ d S )NrS  d   rT  r]  n   Z      r_     2      (   rU  rW  s     r4   	test_wrapzTestWrapNumbers.test_wrap  sC   "S#s++,E9--6666"S#r**+E9--'2c3;L;L1MMMMM"S#r**+E9--'2c3;L;L1MMMMM"S#r**+E9--'2c3;L;L1MMMMM"S#r**+E9--'2c3;L;L1MMMMM"S#r**+E9--'2c3;L;L1MMMMM"Rb//*E9--'2c3;L;L1MMMMM"Rb//*E9--'2c3;L;L1MMMMM"Rb//*E9--'2c3;L;L1MMMMMMMrM   c                    dt          ddd          i}t          |d          |k    sJ t          ddd          t          ddd          d}t          |d          |k    sJ dt          ddd          i}t          |d          |k    sJ d S )NrS  rj   rT     rS  disk2   rU  rW  s     r4   test_changing_keysz"TestWrapNumbers.test_changing_keys  s     "Q1++&E9--6666Q1++1a<<E9--6666"Q1++&E9--666666rM   c                    t          ddd          t          ddd          d}t          |d          |k    sJ t          ddd          t          ddd          d}t          |d          t          ddd          t          ddd          dk    sJ dt          ddd          i}t          |d          |k    sJ t          ddd          t          ddd          d}t          |d          |k    sJ t          ddd          t          ddd          d}t          |d          |k    sJ t          ddd          t          ddd          d}t          |d          t          ddd          t          ddd          dk    sJ d S )Nri  rd  ro  rT  r]  re  rS  rU  rW  s     r4   test_changing_keys_w_wrapz)TestWrapNumbers.test_changing_keys_w_wrap  s   RR..2c33D3DEEE9--6666RR..2c33C3CDDE9--B^^S#&&2
 2
 
 
 
 

 "RR..)E9--6666 RR..2c33D3DEEE9--6666RR..2c33D3DEEE9--6666RR..2c33C3CDDE9--B^^S#&&2
 2
 
 
 
 
 
 
rM   c                     ddddd}t          |d          |k    sJ t          |d          |k    sJ ddddd}t          |d          }|d         d	         d
k    sJ d S )N)	i,      #  R       ȷ  )	i  r(   i tU i   i  r   r   r   rq  )	6   r~  i $ i N r      ra  i     )	iU	  i  i"  rj  i  i4  i  i  i\  )nvme0n1	nvme0n1p1	nvme0n1p2	nvme0n1p3rT  )	rd  rv  rw  rx  ry  rz  r{  r|  r}  r  r   i  r   )r3   douts      r4   test_real_datazTestWrapNumbers.test_real_data  s    MBHL	
 
 Ay))Q....Ay))Q.... NBHL	
 
 1i((9~a C''''''rM   c                     dt          ddd          i}t          |d           t          j                    }|d         d|ik    sJ |d         di ik    sJ |d         di ik    sJ d S )NrS  rj   rT  r   rv   r(   rV  r   
cache_infor3   rX  caches      r4   test_cache_first_callz%TestWrapNumbers.test_cache_first_call(  s    "Q1++&UI&&&'))QxIu-----QxIr?****QxIr?******rM   c                     dt          ddd          i}t          |d           dt          ddd          i}t          |d           t          j                    }|d         d|ik    sJ |d         dddddik    sJ |d         di ik    sJ d S )	NrS  rj   rT  r]  r   rv   )rS  r   )rS  rv   rS  r(   r(   r  r  s      r4   test_cache_call_twicez%TestWrapNumbers.test_cache_call_twice0  s    "Q1++&UI&&&"RR..)UI&&&'))QxIu-----QxaqJJ
 
 
 
 
 QxIr?******rM   c                 z   dt          ddd          i}t          |d           dt          ddd          i}t          |d           t          j                    }|d         d|ik    sJ |d         dddddik    sJ |d         ddt          d	g          iik    sJ d
 }dt          ddd          i}t          |d           t          j                    }|d         d|ik    sJ  |             dt          ddd          i}t          |d           t          j                    }|d         d|ik    sJ  |             dt          ddd          i}t          |d           t          j                    }|d         d|ik    sJ |d         dddddik    sJ |d         ddt          d	g          iik    sJ d S )NrS  rd  rT  r]  r   rv   r  r(   r  c                      t          j                    } | d         dddddik    sJ | d         ddt          dg          iik    sJ d S )	Nrv   rT  r   rd  r  r(   rS  r  )r   r  rw   )r  s    r4   check_cache_infoz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_infoK  sw     +--E8"#"#"%       8	GS,5H5H+IJJJJJJJrM   rf  r_  rg  )rV  r   r  rw   )r3   rX  r  r  s       r4   test_cache_wrapzTestWrapNumbers.test_cache_wrap<  sR   "S#s++,UI&&& "S#r**+UI&&&'))QxIu-----QxaqLL
 
 
 
 
 QxIl^1D1D'EFFFFF		K 		K 		K "S#r**+UI&&&'))QxIu----- "S#r**+UI&&&'))QxIu----- "S#r**+UI&&&'))QxIu-----QxaqLL
 
 
 
 
 QxIl^1D1D'EFFFFFFFrM   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k    sJ |d         dddddik    sJ |d	         di ik    sJ d S )
NrS  rj   rT  rn  ro  r   rv   r  r(   r  r  s      r4   test_cache_changing_keysz(TestWrapNumbers.test_cache_changing_keysn  s    "Q1++&UI&&&Q1++1a<<UI&&&'))QxIu-----QxaqJJ
 
 
 
 
 QxIr?******rM   c                    dt          ddd          i}t          |d           t          |d           t          j        d           t          j                    i i i fk    sJ t          j        d           t          j        d           d S )NrS  rj   rT  z?!?)rV  r   r   r  rW  s     r4   test_cache_clearz TestWrapNumbers.test_cache_clearz  s    "Q1++&UI&&&UI&&& +++&((RRL8888 +++ '''''rM   not supportedreasonc                 
   t          j                    rt          j                    st          j        d          t          j                     t          j                     t          j                    }|D ]}d|v sJ d|v sJ t           j                                         t          j                    }|D ]}d|v sJ d|vsJ t           j                                         t          j                    }|i i i fk    sJ d S )Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)r,   disk_io_countersnet_io_countersr!   skipr   r  r   )r3   cachesr  s      r4   test_cache_clear_public_apisz,TestWrapNumbers.test_cache_clear_public_apis  s+   &(( 	<0F0H0H 	<+:;;;!!!   (** 	5 	5E,5555+u44444++---(** 	: 	:E+u4444,E99999**,,,(**"b"%%%%%%rM   N)r{   r|   r}   r   r  rY  r[  rb  rl  rr  rt  r  r  r  r  r  r  r!   markskipifr   r  r~   rM   r4   rO  rO    s       # # # H7 7 77 7 7
7 7 7N N N:	7 	7 	7
 
 
6( ( (*+ + +
+ 
+ 
+0G 0G 0Gd
+ 
+ 
+( ( ( [//HH& & IH& & &rM   rO  zcan't locate scripts directoryr  c                      e Zd ZdZed             Ze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ej	        
                    ed          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                    |                     dt                     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 )Nenvz%srF   )
setdefaultr   rD   r-  r   r   r   r   r#   stripRuntimeErrorr=   )exer   r   cmdargr  errs          r4   assert_stdoutzTestScripts.assert_stdout  s    %000RW\\+s3333 	 	CJJsOOOO	S##F##))++CC 	 	 	S))3xx		
 C
s$   (B 
B=B81B=7B88B=c                    t           j                            t          |           } t          rt          | d          nt          |           5 }|                                }d d d            n# 1 swxY w Y   t          j        |           d S )Nutf8)encoding)	rD   r-  r   r   r   rJ  readastparse)r  r  srcs      r4   assert_syntaxzTestScripts.assert_syntax  s    gll;,,+.=T#''''DII 	&&((C	 	 	 	 	 	 	 	 	 	 	 	 	 	 		#s   A..A25A2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)	r   rD   listdirr   endswithr-  splitextr   r   )r3   methsr7   s      r4   test_coveragezTestScripts.test_coverage  s    D		J{++ 	 	D}}U## RW--d33A66eCC))7',,{D99:  		 	rM   z
POSIX onlyr  c                 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)
rD   walkr   r  r-  r   statS_IXUSRST_MODEr   )r3   rootdirsfilesfiler-  s         r4   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rM   c                 0    |                      d           d S )Nzdisk_usage.pyr  r2   s    r4   test_disk_usagezTestScripts.test_disk_usage  s    ?+++++rM   c                 0    |                      d           d S )Nzfree.pyr  r2   s    r4   	test_freezTestScripts.test_free  s    9%%%%%rM   c                 0    |                      d           d S )Nz
meminfo.pyr  r2   s    r4   test_meminfozTestScripts.test_meminfo      <(((((rM   c                 n    |                      dt          t          j                                         d S )Nzprocinfo.pyr  r=   rD   rE   r2   s    r4   test_procinfozTestScripts.test_procinfo  s,    =#bikk*:*:;;;;;rM   zno usersc                 0    |                      d           d S )Nzwho.pyr  r2   s    r4   test_whozTestScripts.test_who  s    8$$$$$rM   c                 0    |                      d           d S )Nzps.pyr  r2   s    r4   test_pszTestScripts.test_ps  s    7#####rM   c                 0    |                      d           d S )Nz	pstree.pyr  r2   s    r4   test_pstreezTestScripts.test_pstree      ;'''''rM   c                 0    |                      d           d S )Nz
netstat.pyr  r2   s    r4   test_netstatzTestScripts.test_netstat  r  rM   zQEMU user not supportedc                 0    |                      d           d S )Nzifconfig.pyr  r2   s    r4   test_ifconfigzTestScripts.test_ifconfig  s    =)))))rM   r  c                 n    |                      dt          t          j                                         d S )Nzpmap.pyr  r2   s    r4   	test_pmapzTestScripts.test_pmap  s,    9c")++&6&677777rM   c                     dt          j                                                    j        vrt	          j        d          |                     d           d S )Nussr  zprocsmem.py)r,   r1   memory_full_info_fieldsr!   r  r  r2   s    r4   test_procsmemzTestScripts.test_procsmem  sN    ((99;;CCC+o...=)))))rM   c                 0    |                      d           d S )Nz
killall.pyr  r2   s    r4   test_killallzTestScripts.test_killall  r  rM   c                 0    |                      d           d S )Nz	nettop.pyr  r2   s    r4   test_nettopzTestScripts.test_nettop  r  rM   c                 0    |                      d           d S )Nztop.pyr  r2   s    r4   test_topzTestScripts.test_top  s    8$$$$$rM   c                 0    |                      d           d S )Nziotop.pyr  r2   s    r4   
test_iotopzTestScripts.test_iotop   s    :&&&&&rM   c                     |                      dt          j                                                              }t	          t          j                              |v sJ d S )Nzpidof.py)r  r,   r1   r7   r=   rD   rE   )r3   outputs     r4   
test_pidofzTestScripts.test_pidof  sP    ##J0@0@0E0E0G0GHH29;;6))))))rM   zWINDOWS onlyc                 0    |                      d           d S )Nzwinservices.pyr  r2   s    r4   test_winserviceszTestScripts.test_winservices  s    +,,,,,rM   c                 0    |                      d           d S )Nzcpu_distribution.pyr  r2   s    r4   test_cpu_distributionz!TestScripts.test_cpu_distribution  s    011111rM   c                 ~    t          j                    st          j        d          |                     d           d S )Nzno temperaturesztemperatures.py)r,   sensors_temperaturesr!   r  r  r2   s    r4   test_temperatureszTestScripts.test_temperatures  s?    *,, 	1+/000,-----rM   c                 ~    t          j                    st          j        d          |                     d           d S )Nzno fanszfans.py)r,   sensors_fansr!   r  r  r2   s    r4   	test_fanszTestScripts.test_fans  s=    "$$ 	)+i(((9%%%%%rM   z
no batteryc                 0    |                      d           d S )Nz
battery.pyr  r2   s    r4   test_batteryzTestScripts.test_battery       	<(((((rM   c                 0    |                      d           d S )Nz
sensors.pyr  r2   s    r4   test_sensorszTestScripts.test_sensors  r  rM   N)-r{   r|   r}   r   r   r  r  r  r!   r  r  r   r  r  r  r  r  r   r,   usersr  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~   rM   r4   r  r    s`        87  \    \
 
 
 [E	,77G G 87G, , ,& & &) ) )< < < [
9<6<>>'9*MM% % NM%$ $ $( ( () ) ) [	*CDD* * ED* [O+ODD8 8 ED8* * *
) ) )( ( (% % %' ' '* * * [GN;;- - <;-2 2 2 [44_MM. . NM.
 [,,_EE& & FE&
 [//HH[K==) ) >= IH) [//HH[K==) ) >= IH) ) )rM   r  ):r   r  collectionsr2  r   rD   r   r#  r  r?  r,   psutil.testsr   r   psutil._commonr   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#   r$   r&   r   r   r  
namedtuplerV  rO  r  r  r-  existsr  r~   rM   r4   <module>r	     sN     



       				    



                                          ( ( ( ( ( ( " " " " " " 1 1 1 1 1 1 . . . . . . ( ( ( ( ( ( ' ' ' ' ' '       , , , , , , * * * * * * # # # # # # $ $ $ $ $ $ ( ( ( ( ( ( , , , , , , , , , , , , ) ) ) ) ) ) 1 1 1 1 1 1 # # # # # # ' ' ' ' ' ' " " " " " " $ $ $ $ $ $ ' ' ' ' ' '       * * * * * *       & & & & & &       ) ) ) ) ) )Q Q Q Q Q Q Q Qro? o? o? o? o?~ o? o? o?nD/ D/ D/ D/ D/> D/ D/ D/NXB XB XB XB XB~ XB XB XB@ [E7++_& _& _& _& _&n _& _& _&N 
{###,L   A) A) A) A) A). A) A) A) A) A)rM   