
    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jd                  d+d,      Z3 G d- d.e'      Z4e*jj                  jm                  ejn                  jq                  e&       d/0       G d1 d2e'             Z9y)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                   j    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y)TestSpecialMethodsc                 X   t        j                  t              5  t        j                  j
                  j                  ddz         d d d        t        j                  t        j                        5  t        j                  ddz         d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)N      )	r!   raisesOverflowErrorpsutil_psplatformcextcheck_pid_rangeNoSuchProcessProcessselfs    K/var/www/openai/venv/lib/python3.12/site-packages/psutil/tests/test_misc.pytest_check_pid_rangez'TestSpecialMethods.test_check_pid_range>   sk    ]]=)##33AsF; *]]6//0NN1c6" 10 *)00s   -B2B B B)c                 Z   t        j                  | j                         j                        } ||      }d|v sJ d|j                  z  |v sJ dt	        |j                               z  |j                  dd      v sJ d|v sJ d|vsJ |j                          |j                           ||      }d|v sJ d|v sJ t        j                  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        t        j                  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        t        j                  j                  t         j                  d	t        j                   t        j                               
      5  t        j                         } ||      }d|j                  z  |v sJ d|vsJ 	 d d d        y # 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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   sn   NN4..0445G1$$$!%%1$$$S]*aii	8.LLLLA~~!###		G$)))aZZNN,,RYY[9  

  AQAaee#q((($)))!###
 ZZNN,,RYY[9  

  AQAaee#q(((1$$$!###
 ZZNN++BIIK8  

  AQAaee#q(((!###
 
)
 

 

 
s$   <J.<J6J!JJ!J*c                 0    | j                  t               y )N)rG   )rJ   r=   r2   s    r4   test_process__str__z&TestSpecialMethods.test_process__str__p   s    !!s!+    c                 H    t        t        j                               dk(  sJ y )Nzpsutil.Error())reprr,   Errorr2   s    r4   test_error__repr__z%TestSpecialMethods.test_error__repr__s   s    FLLN#'7777rM   c                 H    t        t        j                               dk(  sJ y )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 y )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   sV    %%c*+NO	
O %%cEBCFG	
GrM   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )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__   sR    $$S)*34	
4 $$Sv5AB+,	
,rM   c                     t        t        j                  d            dk(  sJ t        t        j                  dddd            dk(  sJ y )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__   sX    %%c*+**	
*
 %%cSeLM	
rM   c                     t        t        j                  d            dk(  sJ t        t        j                  dddd            dk(  sJ y )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__   sT    $$S)*=>	
> $$SvCUKL56	
6rM   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )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__   sL    F'',-1OOOO$$Sv5ABEF	
FrM   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )NrV   z	(pid=321)r7   rW   rX   r[   )r=   r,   rF   r2   s    r4   test_access_denied__str__z,TestSpecialMethods.test_access_denied__str__   sI    6&&s+,;;;##Cf%@A+,	
,rM   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )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__   sV    &&q)*	

 &&qc?@--	
-rM   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )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__   sL    6((+,0IIII%%aSv>??@	
@rM   c                     t        j                         }t        j                         }||k(  sJ d|_        ||k7  sJ |dk7  sJ y )N)r   r   r_   )r,   r1   _ident)r3   p1p2s      r4   test_process__eq__z%TestSpecialMethods.test_process__eq__   sC    ^^^^Rxx	RxxU{{rM   c                     t        t        j                         t        j                         g      }t        |      dk(  sJ y )N   )setr,   r1   len)r3   ss     r4   test_process__hash__z'TestSpecialMethods.test_process__hash__   s/    !6>>#3451v{{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&   =   sS    # )- *$X,8)









rM   r&   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestMiscc                    t        t              }|D ]%  }|dv r|j                  d      r	 t        |       ' t        j
                  D ]  }||v rJ  y # t        $ re |t        j
                  vrPt        t        |      }|Y s|j                  0d|j                  j                         vr| j                  d|z        Y w xY w)N>   longtestr   tests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    [
D   ??3'Ot$ 8 NND:%%% # # 	O6>>1%fd3;$KK3 ,CKK4E4E4G G"&)),F,M"NN	Os   A-C<CCc                     dj                  t        j                  D cg c]  }t        |       c}      t        j                  k(  sJ y c c}w )N.)joinr,   version_infor=   __version__)r3   xs     r4   test_versionzTestMisc.test_version   sD    HHf&9&9:&9c!f&9:;!!"	
":s   Ac                 b    t        j                         }d|_        d|j                         vsJ y )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   s)    NNAIIK'''rM   c           
      4   d }t        j                         } |t        j                         j                                t        |      }|j	                  |j
                  d      D ]1  \  }}| j                  ||      5  	  |       } ||       d d d        3 t               }|j	                  |j
                        D ]A  \  }}|dv rt        r|dk(  r| j                  |      5  	  |       } ||       d d d        C 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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 y # t         j                  $ r Y w xY w# 1 sw Y   xY w# t         j                  $ r Y w xY w# 1 sw Y   xY w)Nc                     t        j                  t        j                  |              t        j                  |       }t        j                  |      }| |k(  sJ y N)jsonloadsdumpspickle)retabs      r4   checkz*TestMisc.test_serialization.<locals>.check  s<    JJtzz#'S!AQA!8O8rM   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  s   	 ~~fnn&&()t$>IC4d3%C #J 43 ? ,IC>>T^34(%C #J )( -  LLLL$$FF

 !V11222uu}}vvuu~~LLLL$$FO

 !V11222uu}}vv||vvuu~~LLLL,,6uMN
 !V00111uu||vvuu~~LLLL%%bdH

 !V22333yyBuu}}vv{ ||  43( **  )(s`   M&M
M&*N,M33NM#M&"M##M&&M0	3N
N	N

NN	c                 |   t         j                  j                  t        j                  dt        j
                        5 }t        j                          |j                  sJ 	 d d d        t         j                  j                  t        j                  dt        j                  d            5 }t        j                          |j                  sJ 	 d d d        t         j                  j                  t        j                  dt              5 }t        j                  t              5  t        j                          d d d        |j                  sJ 	 d d d        t         j                  j                  t        j                  dt        j                  d            5 }| j                  t        j                        5  t        j                          d d d        |j                  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   y xY w)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  s    ZZNNLf6I6I  
NN;;;	
 ZZNNLf6J6J16M  
NN;;;	
 ZZNNLj  
z*  +;;;
 ZZNNLf6J6J16M  
""6#7#78  9;;;
 
'
 

 
 +*
 
 98
 
s_   #G4.#HH(H=H H2?H&H24G>HH	HH#&H/	+H22H;c                 &   t        j                  dd      5  t        j                  t              5 }t        t               d d d        dt        j                        j                         v sJ 	 d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)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~  sm    ZZ-G
 {+rf% ,%RXX)<)<)>>>>
 
 ,+
 
s"   BA;/B;B	 BBN)	r{   r|   r}   r   r   r   r   r   r   r~   rM   r4   r   r      s#    &B
(O z:?rM   r   c                   B    e Zd Zd ZeZd
dZd Zd Zd Zd Z	d Z
d	 Zy)TestMemoizeDecoratorc                     g | _         y r   callsr2   s    r4   setUpzTestMemoizeDecorator.setUp  s	    
rM   Nc                 *   t        d      D ]'  } |       }| j                  di fgk(  sJ |!||k(  r'J  t        d      D ]+  } |d      }| j                  di fdi fgk(  sJ |%||k(  r+J  t        d      D ]2  } |dd      }| j                  di fdi fdddifgk(  sJ |,||k(  r2J  t        | j                        dk(  sJ |j                           |       }|||k(  sJ t        | j                        dk(  sJ |j                  d	k(  sJ y )
Nr(   r~   rv   rv   barr         My docstring.)ranger   rx   cache_clearr   )r3   objexpected_retvalr   r   s        r4   run_againstz TestMemoizeDecorator.run_against  sM   qA%C::2r(+++*o---	  qAa&C::2r(T2J!7777*o---	  qAaQ-C::2r(T2Jqz8J!KKKK*o---	  4::!###e&/)))4::!###{{o---rM   c                 L    t         fd       }| | j                  |d       y )Nc                  @    j                   j                  | |f       yr      r   appendargskwargs	baseclasss     r4   r_   z/TestMemoizeDecorator.test_function.<locals>.foo  s     OO""D&>2rM   r   r   )r	   r   )r3   r_   r   s     @r4   test_functionz"TestMemoizeDecorator.test_function  s/    		 
	
 	b1rM   c                     t          G fdd             }| | j                  |d         |       j                         dk(  sJ y )Nc                   "    e Zd ZdZ fdZd Zy),TestMemoizeDecorator.test_class.<locals>.Foor   c                 @    j                   j                  ||f       y r   r   )r3   r   r   r   s      r4   __init__z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__  s    &&f~6rM   c                      y)Nr   r~   r2   s    r4   r   z0TestMemoizeDecorator.test_class.<locals>.Foo.bar  s    rM   N)r{   r|   r}   r   r   r   r   s   r4   Foor     s    7rM   r   r   r   )r	   r   r   r3   r   r   s     @r4   
test_classzTestMemoizeDecorator.test_class  sJ    		 	 
	 	d3uyy{b   rM   c                 v   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            k7  sJ y )Nc                       e Zd Zd Zy)6TestMemoizeDecorator.test_class_singleton.<locals>.Barc                      y 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    		 	 
	 u~~#%yBsuI%%%#a&zRAZ'''#aQ- Bs1!}$5555#a&zRAZ'''rM   c                 f     G fdd      }| | j                   |       j                  d       y )Nc                   ,    e Zd Zee fd              Zy)3TestMemoizeDecorator.test_staticmethod.<locals>.Fooc                  @    j                   j                  | |f       yr   r   r   s     r4   r   z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.bar       &&f~6rM   N)r{   r|   r}   staticmethodr	   r   r   s   r4   r   r     s      rM   r   r   r   r   r   r   s     @r4   test_staticmethodz&TestMemoizeDecorator.test_staticmethod  -    	 	 	B7rM   c                 f     G fdd      }| | j                   |       j                  d       y )Nc                   ,    e Zd Zee fd              Zy)2TestMemoizeDecorator.test_classmethod.<locals>.Fooc                 @    j                   j                  ||f       y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    s      rM   r   r   r   r   r   s     @r4   test_classmethodz%TestMemoizeDecorator.test_classmethod  r   rM   c                    t         fd       }g t        d      D ]$  } |       }di f}||k(  sJ t              dk(  r$J  t        d      D ]%  } |d      }di f}||k(  sJ t              dk(  r%J  t        d      D ])  } |dd      }dddif}||k(  sJ t              dk(  r)J  |j                           |       }di f}||k(  sJ t              d	k(  sJ |j                  d
k(  sJ y )Nc                  .    j                  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:?"?	  	e8h5zQ{{....rM   r   )r{   r|   r}   r   tearDownr   r   r   r   r   r  r  r~   rM   r4   r   r     s1     H.:2!(
8
8#/rM   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestCommonModulec                     G fdd      } |       }g |j                          |j                          t              dk(  sJ g |j                   j                  |       |j                          |j                          t              dk(  sJ g |j                   j                  |       |j                          |j                          t              dk(  sJ y )Nc                   "    e Zd Ze fd       Zy)9TestCommonModule.test_memoize_when_activated.<locals>.Fooc                 (    j                  d        y 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    s    ## $#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    	# 	#
 E		5zQ 	Q		5zQ 	q!		5zQ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 y )Nc                 2    t         r| j                         S | S r   )r   upper)ry   s    r4   kz4TestCommonModule.test_parse_environ_block.<locals>.k0  s     '1779.Q.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cFCcFC7
 
 	
 
 #=1afc1S625NNNN"#67cFCcFC<
 
 	
 

 #<0QsVSMAAA"=1afc]BBB":.1S63-???rM   c                    | j                  t        j                         t               rt        j                  d      5 }d|_        t        j                          t               rJ 	 d d d        t        j                          t        j                  dt        j                        5 }t               rJ |j                  sJ 	 d d d        t        j                          t        j                  dt        j                        5 }t               rJ t        j                          |j                  sJ 	 d d d        t        j                          t        j                  dt        j                        5 }t               rJ t        j                          |j                  sJ 	 d d d        y t        j                  t        j                        5  t        j                  t        j                  t        j                        }	 |j                  d       |j                          	 d d d        y # 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   xY w# 1 sw Y   y xY w# |j                          w xY w# 1 sw Y   y xY w)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12?34"
))+(?**? 5
 %%'.FLL(?**xxx	 %%'.FOO(?**))+xxx %%'3"OO (?**))+xxx  v||,}}V__f6H6HI!IIj)JJL -,; 54    JJL -,sT    (H3*I /I8/I3I;I&I;3H= I
II#&I88I;;Jc                    t         j                  j                  t              }t	        |      sJ t	        t         j                  j                  |            rJ t        j                  dt        t        j                  d            5  t        j                  t              5  t	        |       d d d        d d d        t        j                  dt        t        j                  d            5  t        j                  t              5  t	        |       d d d        d d d        t        j                  dt        t        j                  d            5  t	        |      rJ 	 d d d        t        j                  dd      5  t	        |      rJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   y xY w)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  sU   GGOOH-	Y''' !;<<<ZZ$'%++u2M
 w'i( (

 ZZ$'%,,2N
 w'i( (

 ZZ$'%,,2N
 %Y////
 ZZ5EJ$Y//// KJ ('
 
 ('
 


 
 KJs`   
F&$F0F&/F>	F2F>G
GF#	F&&F/2F;	7F>>G
GGc                 Z   t         rddlm} nddlm} t        j                  j                  t        j                  dd      5  t         |             5 }t        d       t        j                  j                          d d d        d d d        j                         }|j                  d      sJ |       d|v sJ t        j!                  dd      |v sJ t        j                  j                  t        j                  dd      5  t         |             5 }t        t#        d	             d d d        d d d        |j                         }d
|v sJ d|v sJ t        j                  j                  t        j                  dd      5  t         |             5 }t%        dd      }d|_        t        |       d d d        d d d        |j                         }d|v sJ d|v sJ y # 1 sw Y   gxY w# 1 sw Y   lxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   dxY w)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   ior6  r   rA   rB   r,   _commonr   r   sysstderrflushgetvaluer   r,  r>   r   r.  filename)r3   r6  r  rW   excs        r4   
test_debugzTestCommonModule.test_debug  s   #)ZZv~~~tD ,g

  " - E jjl~~n-2s2-#~~.#555 ZZv~~~tD ,j!345 - E jjl$+++#s*** ZZv~~~tD ,a0%c
 - E
 jjl$$$}}1 -, ED -, ED -, EDsl   G0*G#>G0H	G=+H	H!H6H!#G-	(G00G:=H	H		HH	H!!H*c                    | j                         }t        |d      5 }|j                  d       d d d        t        |      dk(  sJ t	        |      dk(  sJ t        j                  t              5  t        |dz          d d d        t        j                  t              5  t	        |dz          d d d        t        |dz   d      dk(  sJ t	        |dz   d      dk(  sJ y # 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   LxY w)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    "&#!GGEN 6{e###F|v%%%]],-#$ .]],-*$% .6J&75@@@FZ'%8EAAA  .---s#   C"0C. C:"C+.C7:DN)	r{   r|   r}   r  r  r(  r4  rB  rJ  r~   rM   r4   r  r    s$    4@*%!N0*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$                  j'                  e d      d        Zy)TestWrapNumbersc                 ,    t        j                          y r   )r   r   r2   s    r4   r   zTestWrapNumbers.setUp  s      "rM   c                 D    dt        ddd      i}t        |d      |k(  sJ y Ndisk1rj   disk_iontr   r3   inputs     r4   test_first_callzTestWrapNumbers.test_first_call  s)    "Q1+&E9-666rM   c                 f    dt        ddd      i}t        |d      |k(  sJ t        |d      |k(  sJ y rO  rR  rT  s     r4   test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changed  s>    "Q1+&E9-666E9-666rM   c                    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 y )	NrP  rj   rQ  
               rR  rT  s     r4   test_increase_but_no_wrapz)TestWrapNumbers.test_increase_but_no_wrap  s    "Q1+&E9-666"RR.)E9-666"RR.)E9-666"RR.)E9-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 y )NrP  d   rQ  rZ  n   Z      r\     2      (   rR  rT  s     r4   	test_wrapzTestWrapNumbers.test_wrap  s   "S#s+,E9-666"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"S#r*+E9-'2c3;L1MMMM"Rb/*E9-'2c3;L1MMMM"Rb/*E9-'2c3;L1MMMM"Rb/*E9-'2c3;L1M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 y )NrP  rj   rQ     rP  disk2   rR  rT  s     r4   test_changing_keysz"TestWrapNumbers.test_changing_keys  s     "Q1+&E9-666Q1+1a<E9-666"Q1+&E9-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 y )Nrf  ra  rl  rQ  rZ  rb  rP  rR  rT  s     r4   test_changing_keys_w_wrapz)TestWrapNumbers.test_changing_keys_w_wrap  s]   RR.2c33DEE9-666RR.2c33CDE9-B^S#&2
 
 	
 

 "RR.)E9-666 RR.2c33DEE9-666RR.2c33DEE9-666RR.2c33CDE9-B^S#&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 y )N)	i,      #  R       ȷ  )	i  r(   i tU i   i  r   r   r   rn  )	6   r{  i $ i N r      r^  i     )	iU	  i  i"  rg  i  i4  i  i  i\  )nvme0n1	nvme0n1p1	nvme0n1p2	nvme0n1p3rQ  )	ra  rs  rt  ru  rv  rw  rx  ry  rz  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 y )NrP  rj   rQ  r   rv   r(   rS  r   
cache_infor3   rU  caches      r4   test_cache_first_callz%TestWrapNumbers.test_cache_first_call(  so    "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 y )	NrP  rj   rQ  rZ  r   rv   )rP  r   )rP  rv   rP  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
 
 	
 
 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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 y )NrP  ra  rQ  rZ  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 y )	Nrv   rQ  r   ra  r  r(   rP  r  )r   r  rw   )r  s    r4   check_cache_infoz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_infoK  sa     ++-E8"#"#"%     8	GS,5H+IJJJJrM   rc  r\  rd  )rS  r   r  rw   )r3   rU  r  r  s       r4   test_cache_wrapzTestWrapNumbers.test_cache_wrap<  s   "S#s+,UI& "S#r*+UI&'')QxIu----QxaqL
 
 	
 
 QxIl^1D'EFFFF		K "S#r*+UI&'')QxIu---- "S#r*+UI&'')QxIu---- "S#r*+UI&'')QxIu----QxaqL
 
 	
 
 QxIl^1D'E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 y )
NrP  rj   rQ  rk  rl  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
 
 	
 
 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       y )NrP  rj   rQ  z?!?)rS  r   r   r  rT  s     r4   test_cache_clearz TestWrapNumbers.test_cache_clearz  so    "Q1+&UI&UI&  +&&(RRL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 rJ  t         j                  j                          t        j                         }|D ]  }d|v sJ d|vrJ  t         j                  j                          t        j                         }|i i i fk(  sJ y )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    &&(0F0F0H++:;;! ((*E,555+u444  	++-((*E+u444,E999  	**,((*"b"%%%rM   N)r{   r|   r}   r   r  rV  rX  r_  ri  ro  rq  r  r  r  r  r  r  r!   markskipifr   r  r~   rM   r4   rL  rL    sz    # H77
7N:	7
6(*+
+0Gd
+( [[//H& I&rM   rL  zcan't locate scripts directoryr  c                      e Zd ZdZed        Zed        Zd Zej                  j                  e d      d        Zd Zd	 Zd
 Zd Zej                  j                  exr  ej&                          d      d        Zd Zd Zd Zej                  j                  ed      d        Zej                  j                  e d      d        Zd Zd Zd Zd Zd Z d Z!ej                  j                  e" d      d        Z#d Z$ej                  j                  e% d      d        Z&ej                  j                  e' d      d        Z(ej                  j                  e) d      ej                  j                  e* d       d!               Z+ej                  j                  e) d      ej                  j                  e* d       d"               Z,y#)$TestScriptsz-Tests for scripts in the "scripts" directory.c                 f   |j                  dt               dt        j                  j	                  t
        |       z  } t        | g}|D ]  }|j                  |        	 t        |fi |j                         }|sJ |       |S # t        $ r#}dt        |      v rt        |      cY d }~S  d }~ww xY w)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RWW\\+s333CJJsO 	S#F#))+C Cs
  	S)3x		s$   B 	B0B+$B0*B++B0c                     t         j                  j                  t        |       } t        rt        | d      n
t        |       5 }|j                         }d d d        t        j                         y # 1 sw Y   xY w)Nutf8)encoding)	rD   r*  r   r   r   rG  readastparse)r  r  srcs      r4   assert_syntaxzTestScripts.assert_syntax  sQ    ggll;,+.T#'DI=&&(C >		# >=s   A22A;c                 4   t        |       }t        j                  t              D ]q  }|j	                  d      sdt        j
                  j                  |      d   z   |vs=| j                  dt        j
                  j                  t        |      z         y )Nr9  test_r   zno test defined for %r script)	r   rD   listdirr   endswithr*  splitextr   r   )r3   methsr7   s      r4   test_coveragezTestScripts.test_coverage  sv    D	JJ{+D}}U#RWW--d3A66eC))7'',,{D9: 	 ,rM   z
POSIX onlyr  c                 P   t        j                  t              D ]  \  }}}|D ]  }|j                  d      st         j                  j                  ||      }t        j                  t        j                  |      t        j                     z  rm| j                  d|z          y )Nr9  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  sx    !#!5D$=='77<<d3D<<"''$-*EE"ii(>(EFF	  "6rM   c                 &    | j                  d       y )Nzdisk_usage.pyr  r2   s    r4   test_disk_usagezTestScripts.test_disk_usage  s    ?+rM   c                 &    | j                  d       y )Nzfree.pyr  r2   s    r4   	test_freezTestScripts.test_free  s    9%rM   c                 &    | j                  d       y )Nz
meminfo.pyr  r2   s    r4   test_meminfozTestScripts.test_meminfo      <(rM   c                 ^    | j                  dt        t        j                                      y )Nzprocinfo.pyr  r=   rD   rE   r2   s    r4   test_procinfozTestScripts.test_procinfo  s    =#biik*:;rM   zno usersc                 &    | j                  d       y )Nzwho.pyr  r2   s    r4   test_whozTestScripts.test_who  s    8$rM   c                 &    | j                  d       y )Nzps.pyr  r2   s    r4   test_pszTestScripts.test_ps  s    7#rM   c                 &    | j                  d       y )Nz	pstree.pyr  r2   s    r4   test_pstreezTestScripts.test_pstree      ;'rM   c                 &    | j                  d       y )Nz
netstat.pyr  r2   s    r4   test_netstatzTestScripts.test_netstat  r  rM   zQEMU user not supportedc                 &    | j                  d       y )Nzifconfig.pyr  r2   s    r4   test_ifconfigzTestScripts.test_ifconfig  s    =)rM   r  c                 ^    | j                  dt        t        j                                      y )Nzpmap.pyr  r2   s    r4   	test_pmapzTestScripts.test_pmap  s    9c"))+&67rM   c                     dt        j                         j                         j                  vrt	        j
                  d      | j                  d       y )Nussr  zprocsmem.py)r,   r1   memory_full_info_fieldsr!   r  r  r2   s    r4   test_procsmemzTestScripts.test_procsmem  s=    (99;CCC++o..=)rM   c                 &    | j                  d       y )Nz
killall.pyr  r2   s    r4   test_killallzTestScripts.test_killall  r  rM   c                 &    | j                  d       y )Nz	nettop.pyr  r2   s    r4   test_nettopzTestScripts.test_nettop  r  rM   c                 &    | j                  d       y )Nztop.pyr  r2   s    r4   test_topzTestScripts.test_top  s    8$rM   c                 &    | j                  d       y )Nziotop.pyr  r2   s    r4   
test_iotopzTestScripts.test_iotop   s    :&rM   c                     | j                  dt        j                         j                               }t	        t        j                               |v sJ y )Nzpidof.py)r  r,   r1   r7   r=   rD   rE   )r3   outputs     r4   
test_pidofzTestScripts.test_pidof  s=    ##J0@0E0E0GH299;6)))rM   zWINDOWS onlyc                 &    | j                  d       y )Nzwinservices.pyr  r2   s    r4   test_winserviceszTestScripts.test_winservices  s    +,rM   c                 &    | j                  d       y )Nzcpu_distribution.pyr  r2   s    r4   test_cpu_distributionz!TestScripts.test_cpu_distribution  s    01rM   c                 x    t        j                         st        j                  d      | j	                  d       y )Nzno temperaturesztemperatures.py)r,   sensors_temperaturesr!   r  r  r2   s    r4   test_temperatureszTestScripts.test_temperatures  s-    **,++/00,-rM   c                 x    t        j                         st        j                  d      | j	                  d       y )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                 &    | j                  d       y )Nz
battery.pyr  r2   s    r4   test_batteryzTestScripts.test_battery       	<(rM   c                 &    | j                  d       y )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    sM    8    
 [[E	,7G 8G,&)< [[
9<6<<>'9*M% N%$() [[	*CD* E* [[O+OD8 E8*
)(%'* [[GN;- <-2 [[44_M. N.
 [[,,_E& F&
 [[//H[[K=) > I) [[//H[[K=) > I)rM   r  ):r   r  collectionsr/  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  
namedtuplerS  rL  r  r  r*  existsr  r~   rM   r4   <module>r     s6    
    	    
         ( " 1 . ( '  , * # $ ( , , ) 1 # ' " $ '  *  &  )Q Qro?~ o?nD/> D/NXB~ XB@ [E7+_&n _&N 
{##,L  A). A)A)rM   