
    f-                        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+  G d! d"e(      Z, G d# d$e(      Z- G d% d&e(      Z. G d' d(e(      Z/ ej`                  d)d*      Z1 G d+ d,e(      Z2 e	jf                  ejh                  jk                  e'       d-       G d. d/e(             Z6e7d0k(  rdd1l8m9Z9  e9e:       yy)2zMiscellaneous tests.    N)LINUX)POSIX)WINDOWS)bcat)cat)debug)isfile_strict)memoize)memoize_when_activated)parse_environ_block)supports_ipv6)wrap_numbers)PY3)FileNotFoundError)redirect_stderr)APPVEYOR)
CI_TESTING)HAS_BATTERY)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)
PYTHON_EXE)PYTHON_EXE_ENV)SCRIPTS_DIR)PsutilTestCase)mock)reload_module)shc                   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                 H   | j                  t              5  t        j                  j                  j                  ddz         d d d        | j                  t        j                        5  t        j                  ddz         d d d        y # 1 sw Y   JxY w# 1 sw Y   y xY w)N      )assertRaisesOverflowErrorpsutil_psplatformcextcheck_pid_rangeNoSuchProcessProcessselfs    8/usr/lib/python3/dist-packages/psutil/tests/test_misc.pytest_check_pid_rangez'TestSpecialMethods.test_check_pid_range<   s    }- 	<##33AsF;	<v334 	#NN1c6"	# 	#	< 	<	# 	#s   -B*BBB!c                    t        j                  | j                         j                        } ||      }| j	                  d|       | j	                  d|j                  z  |       | j	                  dt        |j                               z  |j                  dd             | j	                  d|       | j                  d|       |j                          |j                           ||      }| j	                  d|       | j	                  d|       t        j                  j                  t         j                  d	t        j                  t        j                                
      5  t        j                         } ||      }| j	                  d|j                  z  |       | j	                  d|       | j                  d|       d d d        t        j                  j                  t         j                  d	t        j"                  t        j                                
      5  t        j                         } ||      }| j	                  d|j                  z  |       | j	                  d|       | j                  d|       d d d        t        j                  j                  t         j                  d	t        j$                  t        j                                
      5  t        j                         } ||      }| j	                  d|j                  z  |       | j                  d|       d d d        y # 1 sw Y   sx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(   r-   spawn_testprocpidassertInstrr3   replaceassertNotIn	terminatewaitr   patchobjectZombieProcessosgetpidr,   AccessDenied)r/   funcprs       r0   test_process__repr__z'TestSpecialMethods.test_process__repr__B   s   NN4..0445G&*h&*#affh-'9h)G	
 	i#a(		G+Q/k1%ZZNN,,RYY[9  
 		)
  AQAMM(QUU*A.MM+Q/Wa(		) ZZNN,,RYY[9  
 		)
  AQAMM(QUU*A.MM,*Wa(		) ZZNN++BIIK8  
 	)
  AQAMM(QUU*A.Wa(	) 	))		) 		)		) 		)	) 	)s'   (A L9%A M"AM9MMMc                 0    | j                  t               y )N)rE   )rH   r:   r.   s    r0   test_process__str__z&TestSpecialMethods.test_process__str__p   s    !!s!+    c                 ^    | j                  t        t        j                               d       y )Nzpsutil.Error())assertEqualreprr(   Errorr.   s    r0   test_error__repr__z%TestSpecialMethods.test_error__repr__s   s    flln-/?@rK   c                 ^    | j                  t        t        j                               d       y )N )rM   r:   r(   rO   r.   s    r0   test_error__str__z$TestSpecialMethods.test_error__str__v   s    V\\^,b1rK   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r3   msgr3   rV   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rM   rN   r(   r,   r.   s    r0   test_no_such_process__repr__z/TestSpecialMethods.test_no_such_process__repr__y   sP    %%c*+K	
 	%%cEBCC	
rK   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NrU   z"process no longer exists (pid=321)r3   rV   rW   msg (pid=321, name='name'))rM   r:   r(   r,   r.   s    r0   test_no_such_process__str__z.TestSpecialMethods.test_no_such_process__str__   sP    $$S)*0	
 	$$Sv5AB(	
rK   c           
          | j                  t        t        j                  d            d       | j                  t        t        j                  dddd            d       y )NrU   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r3   @  foor3   ppidrV   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rM   rN   r(   rA   r.   s    r0   test_zombie_process__repr__z.TestSpecialMethods.test_zombie_process__repr__   sT    %%c*+*	

 	%%cSeLMM	
rK   c           
          | j                  t        t        j                  d            d       | j                  t        t        j                  dddd            d       y )NrU   z,PID still exists but it's a zombie (pid=321)r3   r]   r^   r_   z$foo (pid=321, ppid=320, name='name'))rM   r:   r(   rA   r.   s    r0   test_zombie_process__str__z-TestSpecialMethods.test_zombie_process__str__   sR    $$S)*:	
 	$$SvCUKL2	
rK   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NrU   zpsutil.AccessDenied(pid=321)r3   rV   rW   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rM   rN   r(   rD   r.   s    r0   test_access_denied__repr__z-TestSpecialMethods.test_access_denied__repr__   sP    $$S)*,J	
 	$$Sv5ABB	
rK   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )NrU   z	(pid=321)r3   rV   rW   rZ   )rM   r:   r(   rD   r.   s    r0   test_access_denied__str__z,TestSpecialMethods.test_access_denied__str__   sJ    V0056D##Cf%@A(	
rK   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )N   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rU   r3   r8   r3   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rM   rN   r(   TimeoutExpiredr.   s    r0   test_timeout_expired__repr__z/TestSpecialMethods.test_timeout_expired__repr__   sR    &&q)*M	
 	&&qc?@-	
rK   c           	          | j                  t        t        j                  d            d       | j                  t        t        j                  ddd            d       y )Nri   ztimeout after 5 secondsrU   r3   rj   z.timeout after 5 seconds (pid=321, name='name'))rM   r:   r(   rk   r.   s    r0   test_timeout_expired__str__z.TestSpecialMethods.test_timeout_expired__str__   sP    %%a()+D	
 	%%aSv>?<	
rK   c                     t        j                         }t        j                         }| j                  ||       d|_        | j	                  ||       | j	                  |d       y )N)r   r   r^   )r(   r-   rM   _identassertNotEqual)r/   p1p2s      r0   test_process__eq__z%TestSpecialMethods.test_process__eq__   sQ    ^^^^R 	B#B&rK   c                     t        t        j                         t        j                         g      }| j                  t	        |      d       y )N   )setr(   r-   rM   len)r/   ss     r0   test_process__hash__z'TestSpecialMethods.test_process__hash__   s3    !6>>#345Q#rK   N)__name__
__module____qualname__r1   rN   rH   rJ   rP   rS   rX   r[   ra   rc   re   rg   rl   rn   rt   rz    rK   r0   r"   r"   ;   sT    # )- ,)\,A2

	



	

'$rK   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 ]  }| j                  ||        y # t        $ re |t        j
                  vrPt        t        |      }|Y |j                  0d|j                  j                         vr| j                  d|z        Y w xY w)N)longteststestPermissionErrorProcessLookupError_
deprecatedz%r not in psutil.__all__)dirr(   
startswith
__import__ImportError__all__getattr__doc__lowerfailr9   )r/   
dir_psutilr3   funs       r0   test__all__zTestMisc.test__all__   s    [
 	OD   ??3'Ot$	O6 NN 	,DMM$
+	, # 	O6>>1%fd3;$KK3 ,CKK4E4E4G G"&)),F,M"NN	Os   A""-C<CCc           
          | j                  dj                  t        j                  D cg c]  }t	        |       c}      t        j
                         y c c}w )N.)rM   joinr(   version_infor:   __version__)r/   xs     r0   test_versionzTestMisc.test_version   s<    HHf&9&9:c!f:;V=O=O	
:s   Ac                 z    t        j                         }d|_        | j                  d|j	                                y )N1r^   )r(   r-   r^   r<   as_dict)r/   rF   s     r0   !test_process_as_dict_no_new_namesz*TestMisc.test_process_as_dict_no_new_names   s+    NN		,rK   c                      fd} |t        j                         j                                 |t        j                                 |t        j                                 |t        j
                                 |t        j                  d              |t        j                                t        r t        j                  j                  d      sn t        s |t        j                                 |t        j                                 |t        j                  t        j                                        |t        j"                                y )Nc                     t         (t        j                  t        j                  |              t        j                  |       }t        j                  |      }j	                  | |       y N)jsonloadsdumpspicklerM   )retabr/   s      r0   checkz*TestMisc.test_serialization.<locals>.check  sH    

4::c?+S!AQAS!$rK   r   )intervalz/proc/diskstats)r(   r-   r   virtual_memoryswap_memory	cpu_timescpu_times_percentnet_io_countersr   rB   pathexistsr   disk_io_countersdisk_partitions
disk_usagegetcwdusers)r/   r   s   ` r0   test_serializationzTestMisc.test_serialization  s    	% 	fnn&&()f##%&f  "#f !f&&23f$$&'(9:f--/0f$$&'f		,-fllnrK   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 }| j                  t              5  t        j                          d d d        |j                  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   9xY w# 1 sw Y   y xY w)Ncreate_timer4   rv   )
r   r?   r@   r(   r-   rD   calledrA   
ValueErrorr&   )r/   meths     r0   test_ad_on_process_creationz$TestMisc.test_ad_on_process_creation%  s1    ZZNNMv7J7J  
 	NN;;;		
 ZZNNMv7K7KA7N  
 	NN;;;		
 ZZNNMz  
 	"":. ! !;;;	 		 	
	 	! !	 	s;   #E.#E%E=$E19E=E"%E.1E:	6E==Fc                 4   t        j                  dd      5  | j                  t              5 }t	        t
               d d d        | j                  dt        j                        j                                d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nzpsutil._psplatform.cext.versionz0.0.0return_valuezversion conflict)
r   r?   r&   r   r   r(   r9   r:   	exceptionr   )r/   cms     r0   test_sanity_version_checkz"TestMisc.test_sanity_version_check9  s    ZZ-G
 	I "";/ &2f%&MM,c",,.?.E.E.GH	I 	I& &	I 	Is!   BB;BB	BBN)	r{   r|   r}   r   r   r   r   r   r   r~   rK   r0   r   r      s#    ,@

-B(IrK   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   callsr.   s    r0   setUpzTestMemoizeDecorator.setUpI  s	    
rK   Nc           	         t        d      D ]=  } |       }| j                  | j                  di fg       |,| j                  ||       ? t        d      D ]A  } |d      }| j                  | j                  di fdi fg       |0| j                  ||       C t        d      D ]H  } |dd      }| j                  | j                  di fdi fdddifg       |7| j                  ||       J | j                  t        | j                        d       |j	                           |       }|| j                  ||       | j                  t        | j                        d       | j                  |j
                  d	       y )
Nr$   r~   rv   rv   barr         My docstring.)rangerM   r   rx   cache_clearr   )r/   objexpected_retvalr   r   s        r0   run_againstz TestMemoizeDecorator.run_againstN  su   q 	7A%CTZZ2r(4*  o6		7 q 	7Aa&CTZZ2r(T2J)?@*  o6		7 q 	7AaQ-C

b"XbzD5!*3EF *  o6	7 	TZZ!,e&S/2TZZ!,o6rK   c                 L    t         fd       }| | j                  |d       y )Nc                  @    j                   j                  | |f       yr      r   appendargskwargs	baseclasss     r0   r^   z/TestMemoizeDecorator.test_function.<locals>.foon  s     OO""D&>2rK   r   r   )r
   r   )r/   r^   r   s     @r0   test_functionz"TestMemoizeDecorator.test_functionm  s/    		 
	
 	b1rK   c                     t          G fdd             }| | j                  |d        | j                   |       j                         d       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   )r/   r   r   r   s      r0   __init__z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__|  s    &&f~6rK   c                      y)Nr   r~   r.   s    r0   r   z0TestMemoizeDecorator.test_class.<locals>.Foo.bar  s    rK   N)r{   r|   r}   r   r   r   r   s   r0   Foor   x  s    7rK   r   r   r   )r
   r   rM   r   r/   r   r   s     @r0   
test_classzTestMemoizeDecorator.test_classw  sL    		 	 
	 	d3b)rK   c           	         t          G d d             }| j                   |        |              | j                  t         |             t         |                    | j                  t         |d            t         |d                   | j                  t         |dd            t         |dd                   | j	                  t         |d            t         |d                   y )Nc                       e Zd Zd Zy)6TestMemoizeDecorator.test_class_singleton.<locals>.Barc                      y r   r~   )r/   r   r   s      r0   r   z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__  s    rK   N)r{   r|   r}   r   r~   rK   r0   Barr     s    rK   r   rv   r   )r^   r$   )r
   assertIsrM   idrq   )r/   r   s     r0   test_class_singletonz)TestMemoizeDecorator.test_class_singleton  s    		 	 
	 	ceSU#CEBsuI.CFRAZ0CqM*Bs1!},=>Bs1vJ3q6
3rK   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     r0   r   z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.bar       &&f~6rK   N)r{   r|   r}   staticmethodr
   r   r   s   r0   r   r     s      rK   r   r   r   r   r   r   s     @r0   test_staticmethodz&TestMemoizeDecorator.test_staticmethod  -    	 	 	B7rK   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      r0   r   z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.bar  r   rK   N)r{   r|   r}   classmethodr
   r   r   s   r0   r   r     s      rK   r   r   r   r   r   s     @r0   test_classmethodz%TestMemoizeDecorator.test_classmethod  r   rK   c                    t         fd       }g t        d      D ]:  } |       }di f}| j                  ||       | j                  t              d       < t        d      D ];  } |d      }di f}| j                  ||       | j                  t              d       = t        d      D ]?  } |dd      }dddif}| j                  ||       | j                  t              d       A |j	                           |       }di f}| j                  ||       | j                  t              d	       | j                  |j
                  d
       y )Nc                  .    j                  d       | |fS )Foo docstring.Nr   )r   r   r   s     r0   r^   z/TestMemoizeDecorator.test_original.<locals>.foo  s     LL&>!rK   r$   r~   rv   r   r   r   r   r   r  )r
   r   rM   rx   r   r   )r/   r^   r   r   expectedr   s        @r0   test_originalz"TestMemoizeDecorator.test_original  sW    
	" 
	"
 q 	,A%CBxHS(+SZ+		, q 	,Aa&CbzHS(+SZ+		, q 	,AaQ-Cuaj)HS(+SZ+		, 	e8h'UQ'&67rK   r   )r{   r|   r}   r   tearDownr   r   r   r   r   r  r
  r~   rK   r0   r   r   H  s1     H7>2*4
8
8#8rK   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                          | j                  t              d       g |j                   j                  |       |j                          |j                          | j                  t              d       g |j                   j	                  |       |j                          |j                          | j                  t              d       y )Nc                   "    e Zd Ze fd       Zy)9TestCommonModule.test_memoize_when_activated.<locals>.Fooc                 (    j                  d        y r   r  )r/   r   s    r0   r^   z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.foo  s    T"rK   N)r{   r|   r}   r   r^   r   s   r0   r   r    s    ## $#rK   r   r$   rv   )r^   rM   rx   cache_activatecache_deactivate)r/   r   fr   s      @r0   test_memoize_when_activatedz,TestCommonModule.test_memoize_when_activated  s    	# 	#
 E		UQ' 	Q		UQ' 	q!		UQ'rK   c                 $   d }| j                  t        d       |d      di       | j                  t        d       |d      d |d      di       | j                  t        d       |d      d |d      d	i       | j                  t        d
       |d      d |d      di       | j                  t        d       |d      di       | j                  t        d       |d      di       | j                  t        d       |d      di       y )Nc                 2    t         r| j                         S | S r   )r   upper)ry   s    r0   kz4TestCommonModule.test_parse_environ_block.<locals>.k  s     '1779.Q.rK   za=1 r   r   z	a=1 b=2  r   2za=1 b=  rR   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)rM   r   )r/   r  s     r0   test_parse_environ_blockz)TestCommonModule.test_parse_environ_block  s   	/ 	,W5#}E/!C&#qvs1K	
 	.3afb0I	
 	 34sVS!C&#&	

 	,\:QsVSMJ,];afc]K,Z81S63-HrK   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 | 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   xx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.socketr4   z!psutil._common.socket.socket.bind)z::1r   )
addCleanupr   r   r   r?   has_ipv6socketerrorr   gaierrorr&   AF_INET6SOCK_STREAMbindclose)r/   ry   socks      r0   test_supports_ipv6z#TestCommonModule.test_supports_ipv6  s   112?34 +"
))+(?**?+
 %%'.FLL  (?**xxx	  %%'.FOO  (?**))+xxx  %%'3"OO   (?**))+xxx    ""6<<0 !}}V__f6H6HI!IIj)JJL! !;+ +          JJL! !sT    (H/*H</I	8/I3I7I"I7/H9<I	II"I44I77J c                 L   t         j                  j                  t              }t	        |      sJ t	        t         j                  j                  |            rJ t        j                  dt        t        j                  d            5  | j                  t        t        |       d d d        t        j                  dt        t        j                  d            5  | j                  t        t        |       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   PxY w# 1 sw Y   y xY w)Nzpsutil._common.os.statr^   r4   zpsutil._common.stat.S_ISREGFr   )rB   r   abspath__file__r	   dirnamer   r?   OSErrorerrnoEPERMr&   EACCESENOENT)r/   	this_files     r0   test_isfile_strictz#TestCommonModule.test_isfile_strict)  sS   GGOOH-	Y''' !;<<<ZZ$'%++u2M
 	A g}i@	A ZZ$'%,,2N
 	A g}i@	A ZZ$'%,,2N
 	0 %Y////	0 ZZ5EJ 	0$Y////	0 	0	A 	A	A 	A	0 	0	0 	0s0   
E6F0FF6E?FFF#c                    t         rddlm} nddlm} t         |             5 }t	        d       d d d        j                         }|j                  d      sJ |       | j                  d|       | j                  t        j                  dd      |       t         |             5 }t	        t        d             d d d        |j                         }| j                  d|       | j                  d	|       t         |             5 }t        d
d      }d|_        t	        |       d d d        |j                         }| j                  d|       | j                  d|       y # 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   WxY w)Nr   )StringIOhellozpsutil-debugz.pyc.pyzthis is an errorzignoring ValueErrorz'this is an error'r$   zno such filez/foo)r   ior4  r   r   getvaluer   r9   r*  r;   r   r,  filename)r/   r4  r  rV   excs        r0   
test_debugzTestCommonModule.test_debug<  s>   #)XZ( 	A'N	jjl~~n-2s2-gs#h&&vu5s; XZ( 	2A*/01	2jjl+S1*C0 XZ( 	A!^,C!CL#J	 jjlnc*fc"+	 		2 	2	 	s#   E%(E2	E>%E/2E;>Fc                    | j                         }t        |d      5 }|j                  d       d d d        | j                  t	        |      d       | j                  t        |      d       | j                  t        t        |dz          | j                  t        t
        |dz          | j                  t	        |dz   d      d       | j                  t        |dz   d      d       y # 1 sw Y   xY w)Nwr^   s   fooz-invalidr   )fallback)
get_testfnopenwriterM   r   r   r&   r   )r/   testfnr  s      r0   test_cat_bcatzTestCommonModule.test_cat_bcatY  s    "&# 	!GGEN	Ve,fv.+S&:2EF+T6J3FGVj05A5Ifz1EBEJ	 	s   C**C3N)	r{   r|   r}   r  r  r'  r2  r;  rC  r~   rK   r0   r  r    s#    (4I,%!N0&#:	KrK   r  r^   za b cc                       e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Z ej$                  e d      d        Zy)TestWrapNumbersc                 ,    t        j                          y r   )r   r   r.   s    r0   r   zTestWrapNumbers.setUpn  s      "rK   c                 Z    dt        ddd      i}| j                  t        |d      |       y Ndisk1ri   disk_iontrM   r   r/   inputs     r0   test_first_callzTestWrapNumbers.test_first_calls  s+    "Q1+&eY7?rK   c                     dt        ddd      i}| j                  t        |d      |       | j                  t        |d      |       y rH  rK  rM  s     r0   test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changedw  sB    "Q1+&eY7?eY7?rK   c                 \   dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       y )	NrI  ri   rJ  
               rK  rM  s     r0   test_increase_but_no_wrapz)TestWrapNumbers.test_increase_but_no_wrap|  s    "Q1+&eY7?"RR.)eY7?"RR.)eY7?"RR.)eY7?rK   c           	         dt        ddd      i}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      dt        ddd      i       dt        ddd      i}| j                  t        |d      dt        ddd      i       dt        ddd      i}| j                  t        |d      dt        ddd      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       dt        d
dd      i}| j                  t        |d      dt        ddd	      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       dt        ddd      i}| j                  t        |d      dt        ddd	      i       y )NrI  d   rJ  rS  n   Z      rU     2      (   rK  rM  s     r0   	test_wrapzTestWrapNumbers.test_wrap  s   "S#s+,eY7?"S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "S#r*+	*Wbc36G,H	
 "Rb/*	*Wbc36G,H	
 "Rb/*	*Wbc36G,H	
 "Rb/*	*Wbc36G,H	
rK   c                    dt        ddd      i}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      |       dt        ddd      i}| j                  t        |d      |       y )NrI  ri   rJ     rI  disk2   rK  rM  s     r0   test_changing_keysz"TestWrapNumbers.test_changing_keys  s     "Q1+&eY7?Q1+1a<eY7?"Q1+&eY7?rK   c           	         t        ddd      t        ddd      d}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      t        ddd      t        ddd      d       dt        ddd      i}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      |       t        ddd      t        ddd      d}| j                  t        |d      t        ddd      t        ddd      d       y )Nr_  rZ  re  rJ  rS  r[  rI  rK  rM  s     r0   test_changing_keys_w_wrapz)TestWrapNumbers.test_changing_keys_w_wrap  s]   RR.2c33DEeY7?RR.2c33CD	*Rnr#sC/@A	

 "RR.)eY7? RR.2c33DEeY7?RR.2c33DEeY7?RR.2c33CD	*Rnr#sC/@A	
rK   c                     ddddd}| j                  t        |d      |       | j                  t        |d      |       ddddd}t        |d      }| j                  |d   d	   d
       y )N)	i,      #  R       ȷ  )	i  r$   i tU i   i  r   r   r   rg  )	6   rt  i $ i N r      rW  i     )	iU	  i  i"  r`  i  i4  i  i  i\  )nvme0n1	nvme0n1p1	nvme0n1p2	nvme0n1p3rJ  )	rZ  rl  rm  rn  ro  rp  rq  rr  rs  rw  r   i  )rM   r   )r/   douts      r0   test_real_datazTestWrapNumbers.test_real_data  s    MBHL	
 	a3Q7a3Q7 NBHL	
 1i(Y*C0rK   c                     dt        ddd      i}t        |d       t        j                         }| j                  |d   d|i       | j                  |d   di i       | j                  |d   di i       y )NrI  ri   rJ  r   rv   r$   rL  r   
cache_inforM   r/   rN  caches      r0   test_cache_first_callz%TestWrapNumbers.test_cache_first_call  su    "Q1+&UI&'')qIu#56qIr?3qIr?3rK   c                 *   dt        ddd      i}t        |d       dt        ddd      i}t        |d       t        j                         }| j                  |d   d|i       | j                  |d   dddddi       | j                  |d   di i       y )	NrI  ri   rJ  rS  r   rv   )rI  r   )rI  rv   rI  r$   r$   r  r  s      r0   test_cache_call_twicez%TestWrapNumbers.test_cache_call_twice  s    "Q1+&UI&"RR.)UI&'')qIu#56!HqKL	
 	qIr?3rK   c                     dt        ddd      i}t        |d       dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        j                  |d   dddddi        j                  |d   ddt	        d	g      ii        fd
}dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        |        dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        |        dt        ddd      i}t        |d       t        j                         } j                  |d   d|i        j                  |d   dddddi        j                  |d   ddt	        d	g      ii       y )NrI  rZ  rJ  rS  r   rv   r  r$   r  c                      t        j                         } j                  | d   dddddi       j                  | d   ddt        dg      ii       y )	Nrv   rJ  r   rZ  r  r$   rI  r  )r   r  rM   rw   )r  r/   s    r0   check_cache_infoz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_info  sf     ++-Ea&'&'&) 	 a9w\N0C&DErK   r\  rU  r]  )rL  r   r  rM   rw   )r/   rN  r  r  s   `   r0   test_cache_wrapzTestWrapNumbers.test_cache_wrap  s   "S#s+,UI& "S#r*+UI&'')qIu#56!HqMN	
 	qIl^9L/M#NO	" "S#r*+UI&'')qIu#56 "S#r*+UI&'')qIu#56 "S#r*+UI&'')qIu#56!HqMN	
 	qIl^9L/M#NOrK   c                 B   dt        ddd      i}t        |d       t        ddd      t        ddd      d}t        |d       t        j                         }| j                  |d   d|i       | j                  |d   dddddi       | j                  |d	   di i       y )
NrI  ri   rJ  rd  re  r   rv   r  r$   r  r  s      r0   test_cache_changing_keysz(TestWrapNumbers.test_cache_changing_keys<  s    "Q1+&UI&Q1+1a<UI&'')qIu#56!HqKL	
 	qIr?3rK   c                    dt        ddd      i}t        |d       t        |d       t        j                  d       | j                  t        j                         i i i f       t        j                  d       t        j                  d       y )NrI  ri   rJ  z?!?)rL  r   r   rM   r  rM  s     r0   test_cache_clearz TestWrapNumbers.test_cache_clearI  sq    "Q1+&UI&UI&  +002RRLA  +  'rK   not supportedc                    t        j                         rt        j                         s| j                  d      S t        j                          t        j                          t	        j
                         }|D ]&  }| j                  d|       | j                  d|       ( t         j                  j                          t	        j
                         }|D ]&  }| j                  d|       | j                  d|       ( t         j                  j                          t	        j
                         }| j                  |i i i f       y )Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)
r(   r   r   skipTestr   r  r9   r   r<   rM   )r/   cachesr  s      r0   test_cache_clear_public_apisz,TestWrapNumbers.test_cache_clear_public_apisR  s   &&(0F0F0H==!=>>! ((* 	;EMM3U;MM2E:	; 	++-((* 	?EMM2E:6>	? 	**,((*"b".rK   N)r{   r|   r}   r   r  rO  rQ  rX  rb  rh  rj  r}  r  r  r  r  r  unittestskipIfr   r  r~   rK   r0   rE  rE  m  sv    # H@@
@+
Z	@
61*447Pr4( X__,,o>/ ?/rK   rE  zcan't locate scripts directoryc                      e Zd ZdZed        Zed        Zd Z ej                  e
 d      d        Zd Zd Zd	 Zd
 Z ej                  exr  ej$                          d      d        Zd Zd Zd Zd Z ej                  e d      d        Zd Zd Zd Zd Zd Zd Z ej                  e  d      d        Z!d Z" ej                  e# d      d        Z$ ej                  e% d      d        Z& ej                  e' d       ej                  e( d      d               Z) ej                  e' d       ej                  e( d      d                Z*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%srD   )
setdefaultr   rB   r   r   r   r   r   r    stripRuntimeErrorr:   )exer   r   cmdargr|  errs          r0   assert_stdoutzTestScripts.assert_stdouts  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)	rB   r   r   r   r   r@  readastparse)r  r  srcs      r0   assert_syntaxzTestScripts.assert_syntax  sU    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 )Nr6  test_r   zno test defined for %r script)	r   rB   listdirr   endswithr   splitextr   r   )r/   methsr3   s      r0   test_coveragezTestScripts.test_coverage  s{    D	JJ{+ 	D}}U#RWW--d3A66eC))7'',,{D9: 		rK   z
POSIX onlyc                 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 )Nr6  z%r is not executable)
rB   walkr   r  r   r   statS_IXUSRST_MODEr   )r/   rootdirsfilesfiler   s         r0   test_executablezTestScripts.test_executable  s    !#!5 	GD$ G=='77<<d3D<<"''$-*EE"ii(>(EFF	G	GrK   c                 &    | j                  d       y )Nzdisk_usage.pyr  r.   s    r0   test_disk_usagezTestScripts.test_disk_usage  s    ?+rK   c                 &    | j                  d       y )Nzfree.pyr  r.   s    r0   	test_freezTestScripts.test_free  s    9%rK   c                 &    | j                  d       y )Nz
meminfo.pyr  r.   s    r0   test_meminfozTestScripts.test_meminfo      <(rK   c                 ^    | j                  dt        t        j                                      y )Nzprocinfo.pyr  r:   rB   rC   r.   s    r0   test_procinfozTestScripts.test_procinfo  s    =#biik*:;rK   zno usersc                 &    | j                  d       y )Nzwho.pyr  r.   s    r0   test_whozTestScripts.test_who  s    8$rK   c                 &    | j                  d       y )Nzps.pyr  r.   s    r0   test_pszTestScripts.test_ps  s    7#rK   c                 &    | j                  d       y )Nz	pstree.pyr  r.   s    r0   test_pstreezTestScripts.test_pstree      ;'rK   c                 &    | j                  d       y )Nz
netstat.pyr  r.   s    r0   test_netstatzTestScripts.test_netstat  r  rK   c                 &    | j                  d       y )Nzifconfig.pyr  r.   s    r0   test_ifconfigzTestScripts.test_ifconfig  s    =)rK   r  c                 ^    | j                  dt        t        j                                      y )Nzpmap.pyr  r.   s    r0   	test_pmapzTestScripts.test_pmap  s    9c"))+&67rK   c                     dt        j                         j                         j                  vr| j	                  d      | j                  d       y )Nussr  zprocsmem.py)r(   r-   memory_full_info_fieldsr  r  r.   s    r0   test_procsmemzTestScripts.test_procsmem  s=    (99;CCC--00=)rK   c                 &    | j                  d       y )Nz
killall.pyr  r.   s    r0   test_killallzTestScripts.test_killall  r  rK   c                 &    | j                  d       y )Nz	nettop.pyr  r.   s    r0   test_nettopzTestScripts.test_nettop  r  rK   c                 &    | j                  d       y )Nztop.pyr  r.   s    r0   test_topzTestScripts.test_top  s    8$rK   c                 &    | j                  d       y )Nziotop.pyr  r.   s    r0   
test_iotopzTestScripts.test_iotop  s    :&rK   c                     | j                  dt        j                         j                               }| j	                  t        t        j                               |       y )Nzpidof.py)r  r(   r-   r3   r9   r:   rB   rC   )r/   outputs     r0   
test_pidofzTestScripts.test_pidof  s=    ##J0@0E0E0GHc"))+&/rK   zWINDOWS onlyc                 &    | j                  d       y )Nzwinservices.pyr  r.   s    r0   test_winserviceszTestScripts.test_winservices  s    +,rK   c                 &    | j                  d       y )Nzcpu_distribution.pyr  r.   s    r0   test_cpu_distributionz!TestScripts.test_cpu_distribution  s    01rK   c                 p    t        j                         s| j                  d       | j                  d       y )Nzno temperaturesztemperatures.py)r(   sensors_temperaturesr  r  r.   s    r0   test_temperatureszTestScripts.test_temperatures  s*    **,MM+,,-rK   c                 p    t        j                         s| j                  d       | j                  d       y )Nzno fanszfans.py)r(   sensors_fansr  r  r.   s    r0   	test_fanszTestScripts.test_fans  s(    ""$MM)$9%rK   z
no batteryc                 &    | j                  d       y )Nz
battery.pyr  r.   s    r0   test_batteryzTestScripts.test_battery       	<(rK   c                 &    | j                  d       y )Nz
sensors.pyr  r.   s    r0   test_sensorszTestScripts.test_sensors  r  rK   N)+r{   r|   r}   r   r   r  r  r  r  r  r   r  r  r  r  r  r   r(   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r   r  r  r   r  r   r  r   r   r  r  r~   rK   r0   r  r  m  s    8    
 X__Y-G .G,&)< X__Z6$6
C% D%$()* X__(/:8 ;8*
)(%'0 X__[.1- 2-2 X__11?C. D.
 X__))?;& <&
 X__,,o>X___l3) 4 ?) X__,,o>X___l3) 4 ?)rK   r  __main__)run_from_name);r   r  collectionsr-  r   rB   r   r  r  r  r(   psutil.testsr   r   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  
namedtuplerL  rE  r  r   r   r  r{   psutil.tests.runnerr  r*  r~   rK   r0   <module>r     sD    
    	              ( " 1 . ( '  , * ! # $ ( , , ) 1 # ' $ '  & U$ U$zhI~ hI`F8> F8RQK~ QKr [E7+x/n x/@ 
{##%E@). @)@)F z1( rK   