
    Xhs                        d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  G d de      Z G d de      Z G d de      Z  G d de      Z! ejD                  dd      Z# G d de      Z$y) zMiscellaneous tests.    N)mock)WINDOWS)bcat)cat)debug)isfile_strict)memoize)memoize_when_activatedparse_environ_block)supports_ipv6wrap_numbers)HAS_NET_IO_COUNTERS)PsutilTestCase)process_namespace)pytest)reload_module)system_namespacec                   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    b/var/www/html/cjf29f/d23bf782/d32178f2/venv/lib/python3.12/site-packages/psutil/tests/test_misc.pytest_check_pid_rangez'TestSpecialMethods.test_check_pid_range-   s}    ]]=) 	<##33AsF;	<]]6//0 	#NN1c6"	# 	#	< 	<	# 	#s   -B2B B B)c                 J   t        j                  | j                         j                        } ||      }d|v sJ d|j                   |v sJ d|j	                          d|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                   |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                   |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                   |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=zname=''zname=u'zstatus=z	exitcode=zstatus='terminated'nameside_effectzstatus='zombie'zname=
terminated)r   r"   spawn_testprocpidr)   replace	terminatewaitr   patchobjectZombieProcessosgetpidr!   AccessDenied)r$   funcprs       r%   test_process__repr__z'TestSpecialMethods.test_process__repr__3   s   NN4..0445G1$$$aeeW~"""z#qyyH'EEEEA~~!###		G$)))aZZNN,,RYY[9  
 		$
  AQA!%%>Q&&&$)))!###		$ ZZNN,,RYY[9  
 		$
  AQA!%%>Q&&&1$$$!###		$ ZZNN++BIIK8  
 	$
  AQA!%%>Q&&&!###	$ 	$)		$ 		$		$ 		$	$ 	$s$   <J &<J 6J J
JJ"c                 0    | j                  t               y )N)r8   )r;   strr#   s    r%   test_process__str__z&TestSpecialMethods.test_process__str___   s    !!s!+    c                 H    t        t        j                               dk(  sJ y )Nzpsutil.Error())reprr   Errorr#   s    r%   test_error__repr__z%TestSpecialMethods.test_error__repr__b   s    FLLN#'7777r?   c                 H    t        t        j                               dk(  sJ y )N )r=   r   rB   r#   s    r%   test_error__str__z$TestSpecialMethods.test_error__str__e   s    6<<>"b(((r?   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )NA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r)   msgr)   rI   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rA   r   r!   r#   s    r%   test_no_such_process__repr__z/TestSpecialMethods.test_no_such_process__repr__h   sV    %%c*+NO	
O %%cEBCFG	
Gr?   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )NrH   z"process no longer exists (pid=321)r)   rI   rJ   msg (pid=321, name='name'))r=   r   r!   r#   s    r%   test_no_such_process__str__z.TestSpecialMethods.test_no_such_process__str__r   sR    $$S)*34	
4 $$Sv5AB+,	
,r?   c                     t        t        j                  d            dk(  sJ t        t        j                  dddd            dk(  sJ y )NrH   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r)   @  foor)   ppidrI   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rA   r   r4   r#   s    r%   test_zombie_process__repr__z.TestSpecialMethods.test_zombie_process__repr__|   sX    %%c*+**	
*
 %%cSeLM	
r?   c                     t        t        j                  d            dk(  sJ t        t        j                  dddd            dk(  sJ y )NrH   z,PID still exists but it's a zombie (pid=321)r)   rP   rQ   rR   z$foo (pid=321, ppid=320, name='name'))r=   r   r4   r#   s    r%   test_zombie_process__str__z-TestSpecialMethods.test_zombie_process__str__   sT    $$S)*=>	
> $$SvCUKL56	
6r?   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )NrH   zpsutil.AccessDenied(pid=321)r)   rI   rJ   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))rA   r   r7   r#   s    r%   test_access_denied__repr__z-TestSpecialMethods.test_access_denied__repr__   sL    F'',-1OOOO$$Sv5ABEF	
Fr?   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )NrH   z	(pid=321)r)   rI   rJ   rM   )r=   r   r7   r#   s    r%   test_access_denied__str__z,TestSpecialMethods.test_access_denied__str__   sI    6&&s+,;;;##Cf%@A+,	
,r?   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')rH   r)   r.   r)   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rA   r   TimeoutExpiredr#   s    r%   test_timeout_expired__repr__z/TestSpecialMethods.test_timeout_expired__repr__   sV    &&q)*	

 &&qc?@--	
-r?   c                     t        t        j                  d            dk(  sJ t        t        j                  ddd            dk(  sJ y )Nr\   ztimeout after 5 secondsrH   r)   r]   z.timeout after 5 seconds (pid=321, name='name'))r=   r   r^   r#   s    r%   test_timeout_expired__str__z.TestSpecialMethods.test_timeout_expired__str__   sL    6((+,0IIII%%aSv>??@	
@r?   c                     t        j                         }t        j                         }||k(  sJ d|_        ||k7  sJ |dk7  sJ y )N)r   r   rQ   )r   r"   _ident)r$   p1p2s      r%   test_process__eq__z%TestSpecialMethods.test_process__eq__   sC    ^^^^Rxx	RxxU{{r?   c                 t    t        j                         t        j                         h}t        |      dk(  sJ y )N   )r   r"   len)r$   ss     r%   test_process__hash__z'TestSpecialMethods.test_process__hash__   s*    ^^v~~/01v{{r?   N)__name__
__module____qualname__r&   rA   r;   r>   rC   rF   rK   rN   rT   rV   rX   rZ   r_   ra   rf   rk    r?   r%   r   r   ,   sS    # )- *$X,8)









r?   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      Y w xY w)N>   testr   testsPermissionErrorProcessLookupError_
deprecatedz not in psutil.__all__)
dirr   
startswith
__import__ImportError__all__getattr__doc__lowerfail)r$   
dir_psutilr)   funs       r%   test__all__zTestMisc.test__all__   s    [
 	OD   ??3'Ot$	O6 NN 	&D:%%%	& # 	O6>>1%fd3;$KK3 ,CKK4E4E4G G"&))th6L,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__)r$   xs     r%   test_versionzTestMisc.test_version   s>    HHf&9&9:c!f:;!!"	
":s   Ac                 b    t        j                         }d|_        d|j                         vsJ y )N1rQ   )r   r"   rQ   as_dict)r$   r9   s     r%   !test_process_as_dict_no_new_namesz*TestMisc.test_process_as_dict_no_new_names   s)    NNAIIK'''r?   c           
         d }t        j                         } |t        j                         j                                t        |      }|j	                  |j
                  d      D ]1  \  }}| j                  ||      5  	  |       } ||       d d d        3 t               }|j	                  |j
                        D ]5  \  }}|dv r| j                  |      5  	  |       } ||       d d d        7 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      r%   checkz*TestMisc.test_serialization.<locals>.check   s<    JJtzz#'S!AQA!8O8r?   T)clear_cache)procr)   >   win_service_getwin_service_iter)r)   i  r)   rI   )r.   r)   rI   *   )r.   r)   rS   rI   {   !   )secondsr.   r)   )r   r"   r   r   itergetterssubTestrB   r   r7   r   r   r   r!   
isinstancer.   r)   rI   r4   rS   r^   r   )r$   r   r   nsr   r)   r   r   s           r%   test_serializationzTestMisc.test_serialization   s(   	 ~~fnn&&()t$> 	IC4d3 %C #J 	 , 		IC>>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u ||  " **  s`   MM 
MN M''N MMMMM$	'M>:N=M>>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_identr*   rh   )r   r2   r3   r   r"   r7   calledr4   
ValueErrorr   r   r!   assertRaises)r$   meths     r%   test_ad_on_process_creationz$TestMisc.test_ad_on_process_creation@  s    ZZNNLf6I6I  
 	NN;;;		 ZZNNLf6J6J16M  
 	NN;;;		 ZZNNLj  
 	z* ! !;;;	 ZZNNLf6J6J16M  
 	""6#7#7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   r2   r   r   r|   r   r   r=   valuer   )r$   cms     r%   test_sanity_version_checkz"TestMisc.test_sanity_version_check]  sy    ZZ-G
 	? {+ &rf%&%RXX)<)<)>>>>	? 	?& &	? 	?s"   BA;/B;B	 BBN)	rl   rm   rn   r   r   r   r   r   r   ro   r?   r%   rq   rq      s#    &@
(L \:?r?   rq   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    r%   setUpzTestMemoizeDecorator.setUpm  s	    
r?   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   ro   rh   rh   barr         My docstring.)ranger   ri   cache_clearr   )r$   objexpected_retvalrw   r   s        r%   run_againstz TestMemoizeDecorator.run_againstr  s\   q 	.A%C::2r(+++*o---		. q 	.Aa&C::2r(T2J!7777*o---		. q 	.AaQ-C::2r(T2Jqz8J!KKKK*o---		. 4::!###e&/)))4::!###{{o---r?   c                 L    t         fd       }| | j                  |d       y )Nc                  @    j                   j                  | |f       yr      r   appendargskwargs	baseclasss     r%   rQ   z/TestMemoizeDecorator.test_function.<locals>.foo  s     OO""D&>2r?   r   r   )r	   r   )r$   rQ   r   s     @r%   test_functionz"TestMemoizeDecorator.test_function  s/    		 
	
 	b1r?   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   )r$   r   r   r   s      r%   __init__z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__  s    &&f~6r?   c                      y)Nr   ro   r#   s    r%   r   z0TestMemoizeDecorator.test_class.<locals>.Foo.bar  s    r?   N)rl   rm   rn   r   r   r   r   s   r%   Foor     s    7r?   r   r   r   )r	   r   r   r$   r   r   s     @r%   
test_classzTestMemoizeDecorator.test_class  sJ    		 	 
	 	d3uyy{b   r?   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   ro   )r$   r   r   s      r%   r   z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__  s    r?   N)rl   rm   rn   r   ro   r?   r%   Barr     s    r?   r   rh   r   )rQ   r   )r	   id)r$   r   s     r%   test_class_singletonz)TestMemoizeDecorator.test_class_singleton  s    		 	 
	 u~~#%yBsuI%%%#a&zRAZ'''#aQ- Bs1!}$5555#a&zRAZ'''r?   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     r%   r   z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.bar       &&f~6r?   N)rl   rm   rn   staticmethodr	   r   r   s   r%   r   r     s      r?   r   r   r   r   r   r   s     @r%   test_staticmethodz&TestMemoizeDecorator.test_staticmethod  -    	 	 	B7r?   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      r%   r   z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.bar  r   r?   N)rl   rm   rn   classmethodr	   r   r   s   r%   r   r     s      r?   r   r   r   r   r   s     @r%   test_classmethodz%TestMemoizeDecorator.test_classmethod  r   r?   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     r%   rQ   z/TestMemoizeDecorator.test_original.<locals>.foo  s     LL&>!r?   r   ro   rh   r   r   r   r   r   r   )r	   r   ri   r   r   )r$   rQ   rw   r   expectedr   s        @r%   test_originalz"TestMemoizeDecorator.test_original  s5    
	" 
	"
 q 	#A%CBxH(?"?u:?"?		# q 	#Aa&CbzH(?"?u:?"?		# q 	#AaQ-Cuaj)H(?"?u:?"?		# 	e8h5zQ{{....r?   r   )rl   rm   rn   r   tearDownr   r   r   r   r   r   r   ro   r?   r%   r   r   l  s1     H.:2!(
8
8#/r?   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   )r$   r   s    r%   rQ   z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.foo  s    T"r?   N)rl   rm   rn   r
   rQ   r   s   r%   r   r     s    ## $#r?   r   r   rh   )rQ   ri   cache_activatecache_deactivate)r$   r   fr   s      @r%   test_memoize_when_activatedz,TestCommonModule.test_memoize_when_activated  s    	# 	#
 E		5zQ 	Q		5zQ 	q!		5zQr?   c                    d }t        d       |d      dik(  sJ t        d       |d      d |d      dik(  sJ t        d       |d      d |d      d	ik(  sJ t        d
       |d      d |d      dik(  sJ t        d       |d      dik(  sJ t        d       |d      dik(  sJ t        d       |d      dik(  sJ y )Nc                 2    t         r| j                         S | S r   )r   upper)rj   s    r%   kz4TestCommonModule.test_parse_environ_block.<locals>.k  s     '1779.Q.r?   za=1 r   r   z	a=1 b=2  r   2za=1 b=  rE   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2r   )r$   r	  s     r%   test_parse_environ_blockz)TestCommonModule.test_parse_environ_block  s    	/ #7+#}<<<">2cFCcFC7
 
 	
 
 #=1afc1S625NNNN"#67cFCcFC<
 
 	
 

 #<0QsVSMAAA"=1afc]BBB":.1S63-???r?   c                    | j                  t        j                         t               r|t        j                  d      5 }d|_        t        j                          t               rJ 	 d d d        t        j                          t        j                  dt              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              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   rx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.socketr*   z!psutil._common.socket.socket.bind)z::1r   )
addCleanupr   r   r   r2   has_ipv6OSErrorr   socketgaierrorr   r   AF_INET6SOCK_STREAMbindclose)r$   rj   socks      r%   test_supports_ipv6z#TestCommonModule.test_supports_ipv6#  s   112?34 +"
))+(?**?+
 %%'.G  (?**xxx	  %%'.FOO  (?**))+xxx  %%'3"OO   (?**))+xxx    w' !}}V__f6H6HI!IIj)JJL! !;+ +          JJL! !sT    (H H,=/H9./I 3I'4II'H),H69III$$I''I0c                 z   t         j                  j                  t              }t	        |      sJ t	        t         j                  j                  |            rJ t        j                  dt              5  t        j                  t              5  t	        |       d d d        d d d        t        j                  dt              5  t	        |      rJ 	 d d d        t        j                  dd      5  t	        |      rJ 	 d d d        y # 1 sw Y   rxY w# 1 sw Y   vxY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nzpsutil._common.os.statr*   zpsutil._common.stat.S_ISREGFr   )r5   pathabspath__file__r   dirnamer   r2   ru   r   r   r  FileNotFoundError)r$   	this_files     r%   test_isfile_strictz#TestCommonModule.test_isfile_strictJ  s   GGOOH-	Y''' !;<<<ZZ0oN 	)w' )i()	) ZZ$2C
 	0 %Y////	0 ZZ5EJ 	0$Y////	0 	0) )	) 	)	0 	0	0 	0s<   6DDDD%5D1D	DD"%D.1D:c                    t         j                  j                  t        j                  dd      5  t        j                  t        j                               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        j                  t        j                               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        j                  t        j                               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   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   `xY w# 1 sw Y   dxY w)NPSUTIL_DEBUGThellozpsutil-debugz.pycz.pyzthis is an errorzignoring ValueErrorz'this is an error'r   zno such filez/foo)r   r2   r3   r   _common
contextlibredirect_stderrioStringIOr   sysstderrflushgetvaluerz   r  r/   r   r  filename)r$   r  rI   excs       r%   
test_debugzTestCommonModule.test_debugX  s   ZZv~~~tD 	#++BKKM: #ag

  "#	# jjl~~n-2s2-#~~.#555 ZZv~~~tD 	6++BKKM: 6aj!3456	6 jjl$+++#s*** ZZv~~~tD 	++BKKM: aa0%c
	
 jjl$$$}}1# #	# 	#6 6	6 	6 	 	sk   (H"*HH"	(H;1H/H;!(I	I(IH	H""H,/H8	4H;;II	II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wrQ   s   fooz-invalidr   )fallback)
get_testfnopenwriter   r   r   r   r  )r$   testfnr  s      r%   test_cat_bcatzTestCommonModule.test_cat_bcatt  s    "&# 	!GGEN	6{e###F|v%%%]],- 	%#$	%]],- 	&*$%	&6J&75@@@FZ'%8EAAA	 		% 	%	& 	&s#   C"0C. C:"C+.C7:DN)	rl   rm   rn   r  r  r  r  r.  r6  ro   r?   r%   r   r     s#    4@*%!N08Br?   r   rQ   za b cc                       e Zd Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zej$                  j'                  e d      d        Zy)TestWrapNumbersc                 ,    t        j                          y r   )r   r   r#   s    r%   r   zTestWrapNumbers.setUp  s      "r?   c                 D    dt        ddd      i}t        |d      |k(  sJ y Ndisk1r\   disk_iontr   r$   inputs     r%   test_first_callzTestWrapNumbers.test_first_call  s)    "Q1+&E9-666r?   c                 f    dt        ddd      i}t        |d      |k(  sJ t        |d      |k(  sJ y r;  r>  r@  s     r%   test_input_hasnt_changedz(TestWrapNumbers.test_input_hasnt_changed  s>    "Q1+&E9-666E9-666r?   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 )	Nr<  r\   r=  
               r>  r@  s     r%   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6r?   c                    dt        ddd      i}t        |d      |k(  sJ dt        ddd      i}t        |d      dt        ddd      ik(  sJ dt        ddd      i}t        |d      dt        ddd      ik(  sJ dt        ddd      i}t        |d      dt        ddd      ik(  sJ dt        ddd      i}t        |d      dt        ddd	      ik(  sJ dt        ddd      i}t        |d      dt        ddd	      ik(  sJ dt        d
dd      i}t        |d      dt        ddd	      ik(  sJ dt        ddd      i}t        |d      dt        ddd	      ik(  sJ dt        ddd      i}t        |d      dt        ddd	      ik(  sJ y )Nr<  d   r=  rF  n   Z      rH     2      (   r>  r@  s     r%   	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Mr?   c                     dt        ddd      i}t        |d      |k(  sJ t        ddd      t        ddd      d}t        |d      |k(  sJ dt        ddd      i}t        |d      |k(  sJ y )Nr<  r\   r=     r<  disk2   r>  r@  s     r%   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6r?   c                 `   t        ddd      t        ddd      d}t        |d      |k(  sJ t        ddd      t        ddd      d}t        |d      t        ddd      t        ddd      dk(  sJ dt        ddd      i}t        |d      |k(  sJ t        ddd      t        ddd      d}t        |d      |k(  sJ t        ddd      t        ddd      d}t        |d      |k(  sJ t        ddd      t        ddd      d}t        |d      t        ddd      t        ddd      dk(  sJ y )NrR  rM  rX  r=  rF  rN  r<  r>  r@  s     r%   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
 
 	
 
r?   c                     ddddd}t        |d      |k(  sJ t        |d      |k(  sJ ddddd}t        |d      }|d   d	   d
k(  sJ y )N)	i,      #  R       ȷ  )	i  r   i tU i   i  r   r   r   rZ  )	6   rg  i $ i N r      rJ  i     )	iU	  i  i"  rS  i  i4  i  i  i\  )nvme0n1	nvme0n1p1	nvme0n1p2	nvme0n1p3r=  )	rM  r_  r`  ra  rb  rc  rd  re  rf  rj  r   i  r   )r$   douts      r%   test_real_datazTestWrapNumbers.test_real_data  s|    MBHL	
 Ay)Q...Ay)Q... NBHL	
 1i(9~a C'''r?   c                     dt        ddd      i}t        |d       t        j                         }|d   d|ik(  sJ |d   di ik(  sJ |d   di ik(  sJ y )Nr<  r\   r=  r   rh   r   r?  r   
cache_infor$   rA  caches      r%   test_cache_first_callz%TestWrapNumbers.test_cache_first_call  so    "Q1+&UI&'')QxIu----QxIr?***QxIr?***r?   c                     dt        ddd      i}t        |d       dt        ddd      i}t        |d       t        j                         }|d   d|ik(  sJ |d   dddddik(  sJ |d   di ik(  sJ y )	Nr<  r\   r=  rF  r   rh   )r<  r   )r<  rh   r<  r   r   rr  rt  s      r%   test_cache_call_twicez%TestWrapNumbers.test_cache_call_twice  s    "Q1+&UI&"RR.)UI&'')QxIu----QxaqJ
 
 	
 
 QxIr?***r?   c                    dt        ddd      i}t        |d       dt        ddd      i}t        |d       t        j                         }|d   d|ik(  sJ |d   dddddik(  sJ |d   ddd	hiik(  sJ d
 }dt        ddd      i}t        |d       t        j                         }|d   d|ik(  sJ  |        dt        ddd      i}t        |d       t        j                         }|d   d|ik(  sJ  |        dt        ddd      i}t        |d       t        j                         }|d   d|ik(  sJ |d   dddddik(  sJ |d   ddd	hiik(  sJ y )Nr<  rM  r=  rF  r   rh   rx  r   ry  c                  j    t        j                         } | d   dddddik(  sJ | d   dddhiik(  sJ y )	Nrh   r=  r   rM  rx  r   r<  ry  )r   rs  )ru  s    r%   check_cache_infoz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_info  s\     ++-E8"#"#"%     8	Gl^+DEEEEr?   rO  rH  rP  rr  )r$   rA  ru  r}  s       r%   test_cache_wrapzTestWrapNumbers.test_cache_wrap  s   "S#s+,UI& "S#r*+UI&'')QxIu----QxaqL
 
 	
 
 QxI,'@AAAA		F "S#r*+UI&'')QxIu---- "S#r*+UI&'')QxIu---- "S#r*+UI&'')QxIu----QxaqL
 
 	
 
 QxI,'@AAAAr?   c                     dt        ddd      i}t        |d       t        ddd      t        ddd      d}t        |d       t        j                         }|d   d|ik(  sJ |d   dddddik(  sJ |d	   di ik(  sJ y )
Nr<  r\   r=  rW  rX  r   rh   rx  r   rr  rt  s      r%   test_cache_changing_keysz(TestWrapNumbers.test_cache_changing_keysA  s    "Q1+&UI&Q1+1a<UI&'')QxIu----QxaqJ
 
 	
 
 QxIr?***r?   c                    dt        ddd      i}t        |d       t        |d       t        j                  d       t        j                         i i i fk(  sJ t        j                  d       t        j                  d       y )Nr<  r\   r=  z?!?)r?  r   r   rs  r@  s     r%   test_cache_clearz TestWrapNumbers.test_cache_clearM  so    "Q1+&UI&UI&  +&&(RRL888  +  'r?   znot supported)reasonc                    t        j                         rt        j                         st        j                  d      t        j                          t        j                          t        j                         }|D ]  }d|v sJ d|v 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   rs  r   )r$   cachesru  s      r%   test_cache_clear_public_apisz,TestWrapNumbers.test_cache_clear_public_apisV  s    &&(0F0F0H++:;;! ((* 	5E,555+u444	5 	++-((* 	:E+u444,E999	: 	**,((*"b"%%%r?   N)rl   rm   rn   r   r   rB  rD  rK  rU  r[  r]  rp  rv  rz  r~  r  r  r   markskipifr   r  ro   r?   r%   r8  r8    sz    # H77
7N:	7
6(*+
+0Bd
+( [[//H& I&r?   r8  )%r   collectionsr$  r&  r   r5   r   r  r(  unittestr   r   psutil.testsr   psutil._commonr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   rq   r   r   
namedtupler?  r8  ro   r?   r%   <module>r     s       	  	   
         ( " 1 . ( ' , ' *  & )Q Qr_?~ _?ND/> D/NLB~ LBh [E7+_&n _&r?   