
    /hs                        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	m
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  G d de          Z G d de          Z G d de          Z  G d de          Z! ej"        dd          Z# G d de          Z$dS ) zMiscellaneous tests.    N)mock)WINDOWS)bcat)cat)debug)isfile_strict)memoize)memoize_when_activatedparse_environ_block)supports_ipv6wrap_numbers)HAS_NET_IO_COUNTERS)PsutilTestCase)process_namespace)pytest)reload_module)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    I/var/www/html/venv/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                 F   t          j        |                                 j                  } ||          }d|v sJ d|j         |v sJ d|                                 d|                    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         |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         |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         |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=zname=''zname=u'zstatus=z	exitcode=zstatus='terminated'nameside_effectzstatus='zombie'zname=
terminated)r   r"   spawn_testprocpidr)   replace	terminatewaitr   patchobjectZombieProcessosgetpidr!   AccessDenied)r$   funcprs       r%   test_process__repr__z'TestSpecialMethods.test_process__repr__3   s   N4..00455DGG1$$$$ae~~""""####qyyH'E'EEEEEA~~~~!####		DGG$))))aZN,RY[[99  
 
 		$ 		$
   AQA!!%>>Q&&&&$))))!#####		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ ZN,RY[[99  
 
 		$ 		$
   AQA!!%>>Q&&&&1$$$$!#####		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ 		$ ZN+BIKK88  
 
 	$ 	$
   AQA!!%>>Q&&&&!#####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s6   9EE"E59G;;G?G?3JJJc                 <    |                      t                     d S )N)r8   )r;   strr#   s    r%   test_process__str__z&TestSpecialMethods.test_process__str___   s    !!s!+++++    c                 R    t          t          j                              dk    sJ d S )Nzpsutil.Error())reprr   Errorr#   s    r%   test_error__repr__z%TestSpecialMethods.test_error__repr__b   s(    FLNN##'7777777r?   c                 R    t          t          j                              dk    sJ d S )N )r=   r   rB   r#   s    r%   test_error__str__z$TestSpecialMethods.test_error__str__e   s'    6<>>""b((((((r?   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')r)   msgr)   rI   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rA   r   r!   r#   s    r%   test_no_such_process__repr__z/TestSpecialMethods.test_no_such_process__repr__h   sy    %c**++NO O O O %cEBBBCCFG G G G G Gr?   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )NrH   z"process no longer exists (pid=321)r)   rI   rJ   msg (pid=321, name='name'))r=   r   r!   r#   s    r%   test_no_such_process__str__z.TestSpecialMethods.test_no_such_process__str__r   so    $S))**34 4 4 4 $Sv5AAABB+, , , , , ,r?   c                     t          t          j        d                    dk    sJ t          t          j        dddd                    dk    sJ d S )NrH   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r)   @  foor)   ppidrI   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rA   r   r4   r#   s    r%   test_zombie_process__repr__z.TestSpecialMethods.test_zombie_process__repr__|   su    %c**++** * * *
 %cSeLLLMM     r?   c                     t          t          j        d                    dk    sJ t          t          j        dddd                    dk    sJ d S )NrH   z,PID still exists but it's a zombie (pid=321)r)   rP   rQ   rR   z$foo (pid=321, ppid=320, name='name'))r=   r   r4   r#   s    r%   test_zombie_process__str__z-TestSpecialMethods.test_zombie_process__str__   sq    $S))**=> > > > $SvCUKKKLL56 6 6 6 6 6r?   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )NrH   zpsutil.AccessDenied(pid=321)r)   rI   rJ   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rA   r   r7   r#   s    r%   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r?   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )NrH   z	(pid=321)r)   rI   rJ   rM   )r=   r   r7   r#   s    r%   test_access_denied__str__z,TestSpecialMethods.test_access_denied__str__   sd    6&s++,,;;;;#Cf%@@@AA+, , , , , ,r?   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')rH   r)   r.   r)   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rA   r   TimeoutExpiredr#   s    r%   test_timeout_expired__repr__z/TestSpecialMethods.test_timeout_expired__repr__   ss    &q))**   
 &qc???@@-- - - - - -r?   c                     t          t          j        d                    dk    sJ t          t          j        ddd                    dk    sJ d S )Nr\   ztimeout after 5 secondsrH   r)   r]   z.timeout after 5 seconds (pid=321, name='name'))r=   r   r^   r#   s    r%   test_timeout_expired__str__z.TestSpecialMethods.test_timeout_expired__str__   sk    6(++,,0IIIII%aSv>>>???@ @ @ @ @ @r?   c                     t          j                    }t          j                    }||k    sJ d|_        ||k    sJ |dk    sJ d S )N)r   r   rQ   )r   r"   _ident)r$   p1p2s      r%   test_process__eq__z%TestSpecialMethods.test_process__eq__   sN    ^^Rxxxx	RxxxxU{{{{{{r?   c                 |    t          j                    t          j                    h}t          |          dk    sJ d S )N   )r   r"   len)r$   ss     r%   test_process__hash__z'TestSpecialMethods.test_process__hash__   s3    ^v~//01vv{{{{{{r?   N)__name__
__module____qualname__r&   rA   r;   r>   rC   rF   rK   rN   rT   rV   rX   rZ   r_   ra   rf   rk    r?   r%   r   r   ,   s        # # # )- *$ *$ *$ *$X, , ,8 8 8) ) )
 
 

 
 


 

 


 
 

 
 

 
 


 

 


 
 
      r?   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          Y w xY wt          j        D ]}||v sJ 	d S )N>   testr   testsPermissionErrorProcessLookupError_
deprecatedz not in psutil.__all__)
dirr   
startswith
__import__ImportError__all__getattr__doc__lowerfail)r$   
dir_psutilr)   funs       r%   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"&))t,M,M,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 ro   )r=   ).0xs     r%   
<listcomp>z)TestMisc.test_version.<locals>.<listcomp>   s    :::c!ff:::r?   )joinr   version_info__version__r#   s    r%   test_versionzTestMisc.test_version   sG    HH::f&9:::;;!" " " " " "r?   c                 j    t          j                    }d|_        d|                                vsJ d S )N1rQ   )r   r"   rQ   as_dict)r$   r9   s     r%   !test_process_as_dict_no_new_namesz*TestMisc.test_process_as_dict_no_new_names   s5    NAIIKK''''''r?   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 ]d\  }}|dv r
|                     |          5  	  |            } ||           n# t           j	        $ r Y nw xY wd d d            n# 1 swxY w Y   et          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      r%   checkz*TestMisc.test_serialization.<locals>.check   sG    Jtz#'''S!!AQA!888888r?   T)clear_cache)procr)   >   win_service_getwin_service_iter)r)   i  r)   rI   )r.   r)   rI   *   )r.   r)   rS   rI   {   !   )secondsr.   r)   )r   r"   r   r   itergetterssubTestrB   r   r7   r   r   r   r!   
isinstancer.   r)   rI   r4   rS   r^   r   )r$   r   r   nsr   r)   r   r   s           r%   test_serializationzTestMisc.test_serialization   s,   	 	 	 ~fn&&(()))t$$>> 	 	IC4d33  #%%C E#JJJJ |   D               ,, 		 		IC>>>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
D1%E1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_identr*   rh   )r   r2   r3   r   r"   r7   calledr4   
ValueErrorr   r   r!   assertRaises)r$   meths     r%   test_ad_on_process_creationz$TestMisc.test_ad_on_process_creation@  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   r2   r   r   r|   r   r   r=   valuer   )r$   cms     r%   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)	rl   rm   rn   r   r   r   r   r   r   ro   r?   r%   rq   rq      ss        & & &@
 
 
( ( (L  L  L \  :? ? ? ? ?r?   rq   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   callsr#   s    r%   setUpzTestMemoizeDecorator.setUpm  s    


r?   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   ro   rh   rh   barr         My docstring.)ranger   ri   cache_clearr   )r$   objexpected_retvalrw   r   s        r%   run_againstz TestMemoizeDecorator.run_againstr  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------r?   c                 ^    t           fd            }| |                     |d           d S )Nc                  @    j                             | |f           dS r      r   appendargskwargs	baseclasss     r%   rQ   z/TestMemoizeDecorator.test_function.<locals>.foo  s$     O""D&>2222r?   r   r   )r	   r   )r$   rQ   r   s     @r%   test_functionz"TestMemoizeDecorator.test_function  sL    		 	 	 	 
	
 	b11111r?   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   )r$   r   r   r   s      r%   __init__z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__  s#    &&f~66666r?   c                     dS )Nr   ro   r#   s    r%   r   z0TestMemoizeDecorator.test_class.<locals>.Foo.bar  s    rr?   N)rl   rm   rn   r   r   r   r   s   r%   Foor     sC        7 7 7 7 7    r?   r   r   r   )r	   r   r   r$   r   r   s     @r%   
test_classzTestMemoizeDecorator.test_class  s    		 	 	 	 	 	 	 	 	 
	 	d333suuyy{{b      r?   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   ro   )r$   r   r   s      r%   r   z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__  s    r?   N)rl   rm   rn   r   ro   r?   r%   Barr     s#            r?   r   rh   r   )rQ   r   )r	   id)r$   r   s     r%   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''''''r?   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     r%   r   z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.bar  $     &&f~666rr?   N)rl   rm   rn   staticmethodr	   r   r   s   r%   r   r     sB            W \  r?   r   r   r   r   r   r   s     @r%   test_staticmethodz&TestMemoizeDecorator.test_staticmethod  c    	 	 	 	 	 	 	 	 	 	 	B77777r?   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      r%   r   z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.bar  r   r?   N)rl   rm   rn   classmethodr	   r   r   s   r%   r   r     sB            W [  r?   r   r   r   r   r   s     @r%   test_classmethodz%TestMemoizeDecorator.test_classmethod  r   r?   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     r%   rQ   z/TestMemoizeDecorator.test_original.<locals>.foo  s!     LL&>!r?   r   ro   rh   r   r   r   r   r   r   )r	   r   ri   r   r   )r$   rQ   rw   r   expectedr   s        @r%   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{.......r?   r   )rl   rm   rn   r   tearDownr   r   r   r   r   r   r   ro   r?   r%   r   r   l  s           H. . . .:2 2 2! ! !( ( (
8 
8 
8
8 
8 
8#/ #/ #/ #/ #/r?   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   )r$   r   s    r%   rQ   z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.foo  s    T"""""r?   N)rl   rm   rn   r
   rQ   r   s   r%   r   r    s9        ## # # # $## # #r?   r   r   rh   )rQ   ri   cache_activatecache_deactivate)r$   r   fr   s      @r%   test_memoize_when_activatedz,TestCommonModule.test_memoize_when_activated  s   	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 CEE		5zzQ 	Q		5zzQ 	q!!!		5zzQr?   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)rj   s    r%   kz4TestCommonModule.test_parse_environ_block.<locals>.k  s     '.177999Q.r?   za=1 r   r   z	a=1 b=2  r   2za=1 b=  rE   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2r   )r$   r  s     r%   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-??????r?   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                    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                    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   r2   has_ipv6OSErrorr   socketgaierrorr   r   AF_INET6SOCK_STREAMbindclose)r$   rj   socks      r%   test_supports_ipv6z#TestCommonModule.test_supports_ipv6#  s   1222?? #	!344 +"
)+++(??****+ + + + + + + + + + + + + + +
 %'''.G    (??***x	                              %'''.FO    (??***)+++x                              %'''3"O     (??***)+++x                                    w'' ! !}V_f6HII!IIj)))JJLLLLDJJLLLLL! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !sr   +A;;A?A?4CC"C-EEE-GGG2*I.I2I.II..I25I2c                    t           j                            t                    }t	          |          sJ t	          t           j                            |                    rJ t          j        dt                    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                    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*   zpsutil._common.stat.S_ISREGFr   )r5   pathabspath__file__r   dirnamer   r2   ru   r   r   r  FileNotFoundError)r$   	this_files     r%   test_isfile_strictz#TestCommonModule.test_isfile_strictJ  sI   GOOH--	Y''''' !;!;<<<<<Z0oNNN 	) 	)w'' ) )i((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) Z$2C
 
 
 	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 	0sZ   ?CB5)C5B9	9C<B9	=CCC2DDD2EEEc                    t           j                            t          j        dd          5  t          j        t          j                              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          j        t          j                              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          j        t          j                              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 )NPSUTIL_DEBUGThellozpsutil-debugz.pycz.pyzthis is an errorzignoring ValueErrorz'this is an error'r   zno such filez/foo)r   r2   r3   r   _common
contextlibredirect_stderrioStringIOr   sysstderrflushgetvaluerz   r  r/   r   r  filename)r$   r  rI   excs       r%   
test_debugzTestCommonModule.test_debugX  s   Zv~~tDD 	# 	#+BKMM:: #ag
  """# # # # # # # # # # # # # # #	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# jjll~~n--22s222#~~~~..#5555 Zv~~tDD 	6 	6+BKMM:: 6a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 	 	+BKMM:: aa00%c


              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 jjll$$$$}}}}}}s   &B#.B B#B	B#B	B##B'*B'1&FF 4F F	FF	FFF-&I'I:II
	
II
	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wrQ   s   fooz-invalidr   )fallback)
get_testfnopenwriter   r   r   r   r   )r$   testfnr  s      r%   test_cat_bcatzTestCommonModule.test_cat_bcatt  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)	rl   rm   rn   r  r  r  r"  r1  r9  ro   r?   r%   r   r     sw          4@ @ @*%! %! %!N0 0 0  8B B B B Br?   r   rQ   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%   r   zTestWrapNumbers.setUp  s     """""r?   c                 X    dt          ddd          i}t          |d          |k    sJ d S Ndisk1r\   disk_iontr   r$   inputs     r%   test_first_callzTestWrapNumbers.test_first_call  s7    "Q1++&E9--666666r?   c                     dt          ddd          i}t          |d          |k    sJ t          |d          |k    sJ d S r>  rA  rC  s     r%   test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changed  sR    "Q1++&E9--6666E9--666666r?   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 )	Nr?  r\   r@  
               rA  rC  s     r%   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6r?   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 )Nr?  d   r@  rI  n   Z      rK     2      (   rA  rC  s     r%   	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Mr?   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 )Nr?  r\   r@     r?  disk2   rA  rC  s     r%   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6r?   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 )NrU  rP  r[  r@  rI  rQ  r?  rA  rC  s     r%   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
 
 
 
 
 
 
r?   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   r]  )	6   rj  i $ i N r      rM  i     )	iU	  i  i"  rV  i  i4  i  i  i\  )nvme0n1	nvme0n1p1	nvme0n1p2	nvme0n1p3r@  )	rP  rb  rc  rd  re  rf  rg  rh  ri  rm  r   i  r   )r$   douts      r%   test_real_datazTestWrapNumbers.test_real_data  s    MBHL	
 
 Ay))Q....Ay))Q.... NBHL	
 
 1i((9~a C''''''r?   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 )Nr?  r\   r@  r   rh   r   rB  r   
cache_infor$   rD  caches      r%   test_cache_first_callz%TestWrapNumbers.test_cache_first_call  s    "Q1++&UI&&&'))QxIu-----QxIr?****QxIr?******r?   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 )	Nr?  r\   r@  rI  r   rh   )r?  r   )r?  rh   r?  r   r   ru  rw  s      r%   test_cache_call_twicez%TestWrapNumbers.test_cache_call_twice  s    "Q1++&UI&&&"RR..)UI&&&'))QxIu-----QxaqJJ
 
 
 
 
 QxIr?******r?   c                 F   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d	h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d	hiik    sJ d S )Nr?  rP  r@  rI  r   rh   r{  r   r|  c                  z    t          j                    } | d         dddddik    sJ | d         dddhiik    sJ d S )	Nrh   r@  r   rP  r{  r   r?  r|  )r   rv  )rx  s    r%   check_cache_infoz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_info  so     +--E8"#"#"%       8	Gl^+DEEEEEEEr?   rR  rK  rS  ru  )r$   rD  rx  r  s       r%   test_cache_wrapzTestWrapNumbers.test_cache_wrap  sB   "S#s++,UI&&& "S#r**+UI&&&'))QxIu-----QxaqLL
 
 
 
 
 QxI,'@AAAAA		F 		F 		F "S#r**+UI&&&'))QxIu----- "S#r**+UI&&&'))QxIu----- "S#r**+UI&&&'))QxIu-----QxaqLL
 
 
 
 
 QxI,'@AAAAAAAr?   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 )
Nr?  r\   r@  rZ  r[  r   rh   r{  r   ru  rw  s      r%   test_cache_changing_keysz(TestWrapNumbers.test_cache_changing_keysA  s    "Q1++&UI&&&Q1++1a<<UI&&&'))QxIu-----QxaqJJ
 
 
 
 
 QxIr?******r?   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 )Nr?  r\   r@  z?!?)rB  r   r   rv  rC  s     r%   test_cache_clearz TestWrapNumbers.test_cache_clearM  s    "Q1++&UI&&&UI&&& +++&((RRL8888 +++ '''''r?   z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   rv  r   )r$   cachesrx  s      r%   test_cache_clear_public_apisz,TestWrapNumbers.test_cache_clear_public_apisV  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"%%%%%%r?   N)rl   rm   rn   r   r   rE  rG  rN  rX  r^  r`  rs  ry  r}  r  r  r  r   markskipifr   r  ro   r?   r%   r;  r;    s       # # # H7 7 77 7 7
7 7 7N N N:	7 	7 	7
 
 
6( ( (*+ + +
+ 
+ 
+0B 0B 0Bd
+ 
+ 
+( ( ( [//HH& & IH& & &r?   r;  )%r   collectionsr'  r)  r   r5   r   r  r+  unittestr   r   psutil.testsr   psutil._commonr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   rq   r   r   
namedtuplerB  r;  ro   r?   r%   <module>r     s             				  				   



                                          ( ( ( ( ( ( " " " " " " 1 1 1 1 1 1 . . . . . . ( ( ( ( ( ( ' ' ' ' ' ' , , , , , , ' ' ' ' ' ' * * * * * *       & & & & & & ) ) ) ) ) )Q Q Q Q Q Q Q Qr_? _? _? _? _?~ _? _? _?ND/ D/ D/ D/ D/> D/ D/ D/NLB LB LB LB LB~ LB LB LBh [E7++_& _& _& _& _&n _& _& _& _& _&r?   