o
    F+ ir                     @   sx  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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 deZG dd deZG dd deZ G dd deZ!e"ddZ#G dd deZ$dS ) zMiscellaneous tests.    N)mock)WINDOWS)bcat)cat)debug)isfile_strict)memoize)memoize_when_activatedparse_environ_block)supports_ipv6wrap_numbers)HAS_NET_IO_COUNTERS)PsutilTestCase)process_namespace)pytest)reload_module)system_namespacec                   @   s   e Zd Zdd ZefddZdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestSpecialMethodsc                 C   s|   t t tjjdd  W d    n1 sw   Y  t tj tdd  W d    d S 1 s7w   Y  d S )N      )	r   raisesOverflowErrorpsutilZ_psplatformZcextZcheck_pid_rangeNoSuchProcessProcessself r   b/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/psutil/tests/test_misc.pytest_check_pid_range+   s   "z'TestSpecialMethods.test_check_pid_rangec                 C   s  t |  j}||}d|v sJ d|j |v sJ d|  d|ddv s,J d|v s2J d|vs8J |  |  ||}d|v sJJ d|v sPJ tj	j
t jd	t t d
& t  }||}d|j |v srJ d|v sxJ d|vs~J W d    n1 sw   Y  tj	j
t jd	t t d
& t  }||}d|j |v sJ d|v sJ d|vsJ W d    n1 sw   Y  tj	j
t jd	t t d
! t  }||}d|j |v sJ d|vsJ W d    d S 1 sw   Y  d S )Nzpsutil.Processzpid=zname=''zname=u'zstatus=z	exitcode=zstatus='terminated'nameZside_effectzstatus='zombie'zname=Z
terminated)r   r   Zspawn_subprocpidr#   replace	terminatewaitr   patchobjectZombieProcessosgetpidr   AccessDenied)r   funcprr   r   r    test_process__repr__1   sX    

"z'TestSpecialMethods.test_process__repr__c                 C   s   | j td d S )N)r/   )r2   strr   r   r   r    test_process__str__]      z&TestSpecialMethods.test_process__str__c                 C      t t dks
J d S )Nzpsutil.Error())reprr   Errorr   r   r   r    test_error__repr__`      z%TestSpecialMethods.test_error__repr__c                 C   r6   )N )r3   r   r8   r   r   r   r    test_error__str__c   r:   z$TestSpecialMethods.test_error__str__c                 C   6   t tddksJ t tjdddddksJ d S )NA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r#   msgr#   r?   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))r7   r   r   r   r   r   r    test_no_such_process__repr__f      z/TestSpecialMethods.test_no_such_process__repr__c                 C   r=   )Nr>   z"process no longer exists (pid=321)r#   r?   r@   msg (pid=321, name='name'))r3   r   r   r   r   r   r    test_no_such_process__str__p   rB   z.TestSpecialMethods.test_no_such_process__str__c                 C   8   t tddksJ t tjddddddksJ d S )Nr>   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r#   @  foor#   ppidr?   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))r7   r   r+   r   r   r   r    test_zombie_process__repr__z   s   z.TestSpecialMethods.test_zombie_process__repr__c                 C   rE   )Nr>   z,PID still exists but it's a zombie (pid=321)r#   rF   rG   rH   z$foo (pid=321, ppid=320, name='name'))r3   r   r+   r   r   r   r    test_zombie_process__str__   s   z-TestSpecialMethods.test_zombie_process__str__c                 C   r=   )Nr>   zpsutil.AccessDenied(pid=321)r#   r?   r@   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))r7   r   r.   r   r   r   r    test_access_denied__repr__      z-TestSpecialMethods.test_access_denied__repr__c                 C   r=   )Nr>   z	(pid=321)r#   r?   r@   rC   )r3   r   r.   r   r   r   r    test_access_denied__str__   rM   z,TestSpecialMethods.test_access_denied__str__c                 C   r=   )N   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')r>   r#   r%   r#   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))r7   r   TimeoutExpiredr   r   r   r    test_timeout_expired__repr__   s   z/TestSpecialMethods.test_timeout_expired__repr__c                 C   r=   )NrO   ztimeout after 5 secondsr>   r#   rP   z.timeout after 5 seconds (pid=321, name='name'))r3   r   rQ   r   r   r   r    test_timeout_expired__str__   rM   z.TestSpecialMethods.test_timeout_expired__str__c                 C   s>   t  }t  }||ksJ d|_||ksJ |dksJ d S )N)r   r   rG   )r   r   _ident)r   p1p2r   r   r    test_process__eq__   s   z%TestSpecialMethods.test_process__eq__c                 C   s$   t  t  h}t|dksJ d S )N   )r   r   len)r   sr   r   r    test_process__hash__   s   z'TestSpecialMethods.test_process__hash__N)__name__
__module____qualname__r!   r7   r2   r4   r9   r<   rA   rD   rJ   rK   rL   rN   rR   rS   rW   r[   r   r   r   r    r   *   s     ,


r   c                   @   <   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestMiscc              	   C   s   t t}|D ]D}|dv rq|dsJzt| W q tyI   |tjvrGtt|}|d u r/Y q|jd urGd|j vrGt	
|d Y   S Y qw qtjD ]}||v sVJ qNd S )N>   testPermissionErrorr   testsProcessLookupError_
deprecatedz not in psutil.__all__)dirr   
startswith
__import__ImportError__all__getattr__doc__lowerr   Zfail)r   Z
dir_psutilr#   funr   r   r    test__all__   s.   




zTestMisc.test__all__c                 C   s$   d dd tjD tjksJ d S )N.c                 S   s   g | ]}t |qS r   )r3   ).0xr   r   r    
<listcomp>   s    z)TestMisc.test_version.<locals>.<listcomp>)joinr   version_info__version__r   r   r   r    test_version   s   zTestMisc.test_versionc                 C   s"   t  }d|_d| vsJ d S )N1rG   )r   r   rG   as_dict)r   r0   r   r   r    !test_process_as_dict_no_new_names   s   z*TestMisc.test_process_as_dict_no_new_namesc              
   C   s  dd }t  }|t    t|}|j|jddD ]1\}}| jt||d z| }W n
 t jy9   Y nw || W d    n1 sHw   Y  qt	 }||jD ]3\}}|dv r`qW| j|d z| }W n
 t j
yv   Y nw || W d    n1 sw   Y  qWttt jdd	d
d}t|t jsJ |jdksJ |jd	ksJ |jd
ksJ ttt jdd	dd
d}t|t jsJ |jdksJ |jdksJ |jd	ksJ |jd
ksJ ttt j
dd	d
d}t|t j
sJ |jdksJ |jd	ksJ |jd
ksJ ttt jddd	d}t|t js.J |jdks6J |jdks>J |jd	ksFJ d S )Nc                 S   s4   t t |  t| }t|}| |ksJ d S N)jsonloadsdumpspickle)retabr   r   r    check   s   

z*TestMisc.test_serialization.<locals>.checkT)clear_cache)procr#   >   Zwin_service_getZwin_service_iter)r#   i  r#   r?   )r%   r#   r?   *   )r%   r#   rI   r?   {   !   )secondsr%   r#   )r   r   rz   r   iterZgettersZsubTestr3   r8   r   r.   r   r~   r   r   
isinstancer%   r#   r?   r+   rI   rQ   r   )r   r   r   nsro   r#   r   r   r   r   r    test_serialization   s   	



zTestMisc.test_serializationc              	   C   s  t jjtjdtjd}t  |jsJ W d    n1 sw   Y  t jjtjdtdd}t  |js;J W d    n1 sEw   Y  t jjtjdtd&}t	
t t  W d    n1 siw   Y  |jssJ W d    n1 s}w   Y  t jjtjdtdd(}t	
tj t  W d    n1 sw   Y  |jsJ W d    d S 1 sw   Y  d S )NZ
_get_identr$   rX   )r   r)   r*   r   r   r.   calledr+   
ValueErrorr   r   r   )r   methr   r   r    test_ad_on_process_creation@  s@   


"z$TestMisc.test_ad_on_process_creationc              	   C   s|   t jddd- tt}tt W d    n1 sw   Y  dt|j	 v s,J W d    d S 1 s7w   Y  d S )Nzpsutil._psplatform.cext.versionz0.0.0return_valuezversion conflict)
r   r)   r   r   rj   r   r   r3   valuern   )r   cmr   r   r    test_sanity_version_check]  s   
"z"TestMisc.test_sanity_version_checkN)	r\   r]   r^   rp   rx   r{   r   r   r   r   r   r   r    r`      s    "Nr`   c                   @   sR   e Zd Zdd ZeZdddZdd Zdd	 Zd
d Zdd Z	dd Z
dd ZdS )TestMemoizeDecoratorc                 C   s
   g | _ d S r|   callsr   r   r   r    setUpm  s   
zTestMemoizeDecorator.setUpNc                 C   s*  t dD ]}| }| jdi fgksJ |d ur||ksJ qt dD ]}|d}| jdi fdi fgks5J |d ur?||ks?J q"t dD ]$}|ddd}| jdi fdi fdddifgks^J |d urh||kshJ qDt| jdksrJ |  | }|d ur||ksJ t| jdksJ |jd	ksJ d S )
Nr   r   rX   rX   barr         My docstring.)ranger   rY   cache_clearrm   )r   objexpected_retvalre   r   r   r   r    run_againstr  s2   $z TestMemoizeDecorator.run_againstc                    s&   t  fdd}|  | j|dd d S )Nc                         j | |f dS r      r   appendargskwargsZ	baseclassr   r    rG     s   z/TestMemoizeDecorator.test_function.<locals>.foor   r   )r   r   )r   rG   r   r   r    test_function  s   z"TestMemoizeDecorator.test_functionc                    s>   t G  fddd}|  | j|d d |  dksJ d S )Nc                       s$   e Zd ZdZ fddZdd ZdS )z,TestMemoizeDecorator.test_class.<locals>.Foor   c                    s    j ||f d S r|   r   r   r   r   r   r   r    __init__  s   z5TestMemoizeDecorator.test_class.<locals>.Foo.__init__c                 S   s   dS )Nr   r   r   r   r   r    r        z0TestMemoizeDecorator.test_class.<locals>.Foo.barN)r\   r]   r^   rm   r   r   r   r   r   r    Foo  s    r   r   r   )r   r   r   r   r   r   r   r    
test_class  s
   	zTestMemoizeDecorator.test_classc                 C   s   t G dd d}| | u sJ t| t| ksJ t|dt|dks+J t|dddt|dddks=J t|dt|dksKJ d S )Nc                   @   s   e Zd Zdd ZdS )z6TestMemoizeDecorator.test_class_singleton.<locals>.Barc                 _   s   d S r|   r   r   r   r   r    r     r   z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__N)r\   r]   r^   r   r   r   r   r    Bar  s    r   rX   r   )rG   r   )r   id)r   r   r   r   r    test_class_singleton  s   $ z)TestMemoizeDecorator.test_class_singletonc                    ,   G  fddd}|  | j | jdd d S )Nc                           e Zd Zee fddZdS )z3TestMemoizeDecorator.test_staticmethod.<locals>.Fooc                     r   r   r   r   r   r   r    r        z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.barN)r\   r]   r^   staticmethodr   r   r   r   r   r    r         r   r   r   r   r   r   r   r   r    test_staticmethod     z&TestMemoizeDecorator.test_staticmethodc                    r   )Nc                       r   )z2TestMemoizeDecorator.test_classmethod.<locals>.Fooc                    s    j ||f dS r   r   )clsr   r   r   r   r    r     r   z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.barN)r\   r]   r^   classmethodr   r   r   r   r   r    r     r   r   r   r   r   r   r   r   r    test_classmethod  r   z%TestMemoizeDecorator.test_classmethodc                    s  t  fdd}g  tdD ]}| }di f}||ksJ t dks%J qtdD ]}|d}di f}||ks:J t dksBJ q*tdD ]}|ddd}dddif}||ks[J t d	kscJ qG|  | }di f}||ksuJ t d
ks}J |jdksJ d S )Nc                     s     d | |fS )Foo docstring.Nr   r   r   r   r    rG     s   
z/TestMemoizeDecorator.test_original.<locals>.foor   r   rX   r   r   r   r   r   r   )r   r   rY   r   rm   )r   rG   re   r   expectedr   r   r    test_original  s0   z"TestMemoizeDecorator.test_originalr|   )r\   r]   r^   r   tearDownr   r   r   r   r   r   r   r   r   r   r    r   l  s    

r   c                   @   r_   )TestCommonModulec                    s   G  fddd}| }g  |   |   t dksJ g  |j | |   |   t dks6J g  |j | |   |   t dksNJ d S )Nc                       s   e Zd Ze fddZdS )z9TestCommonModule.test_memoize_when_activated.<locals>.Fooc                    s     d  d S r|   r   r   r   r   r    rG     s   z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.fooN)r\   r]   r^   r	   rG   r   r   r   r    r     s    r   r   rX   )rG   rY   Zcache_activateZcache_deactivate)r   r   fr   r   r    test_memoize_when_activated  s    z,TestCommonModule.test_memoize_when_activatedc                 C   s   d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s0J t d|dd|ddiks@J t d|ddiksLJ t d|ddiksXJ t d|ddiksdJ d S )Nc                 S   s   t r|  S | S r|   )r   upper)rZ   r   r   r    k  r5   z4TestCommonModule.test_parse_environ_block.<locals>.kza=1 r   ry   z	a=1 b=2  r   2za=1 b=  r;   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2r
   )r   r   r   r   r    test_parse_environ_block  s   
 
z)TestCommonModule.test_parse_environ_blockc              	   C   sr  t  rtd}d|_t  rJ W d    n1 sw   Y  tjdtd}t  r-J |js2J W d    n1 s<w   Y  tjdtjd}t  rOJ |jsTJ W d    n1 s^w   Y  tjdtjd}t  rqJ |jsvJ W d    d S 1 sw   Y  d S t	t" ttj
tj}z|d W |  n|  w W d    d S 1 sw   Y  d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr$   z!psutil._common.socket.socket.bind)z::1r   )r   r   r)   has_ipv6OSErrorr   socketgaierrorr   r   AF_INET6SOCK_STREAMbindclose)r   rZ   sockr   r   r    test_supports_ipv6#  sB   


""z#TestCommonModule.test_supports_ipv6c              	   C   s  t jt}t|sJ tt j|rJ tjdtd! t	
t t| W d    n1 s2w   Y  W d    n1 sAw   Y  tjdtd t|rTJ W d    n1 s^w   Y  tjddd t|rqJ W d    d S 1 s|w   Y  d S )Nzpsutil._common.os.statr$   zpsutil._common.stat.S_ISREGFr   )r,   pathabspath__file__r   dirnamer   r)   rb   r   r   r   FileNotFoundError)r   Z	this_filer   r   r    test_isfile_strictC  s"   
"z#TestCommonModule.test_isfile_strictc              	   C   s  t jtjdd( tt }t	d t
j  W d    n1 s%w   Y  W d    n1 s4w   Y  | }|dsFJ |d|v sLJ tdd|v sVJ t jtjdd% tt }t	td W d    n1 sxw   Y  W d    n1 sw   Y  | }d|v sJ d	|v sJ t jtjdd+ tt }td
d}d|_t	| W d    n1 sw   Y  W d    n1 sw   Y  | }d|v sJ d|v sJ d S )NZPSUTIL_DEBUGTZhellozpsutil-debugz.pycz.pyzthis is an errorzignoring ValueErrorz'this is an error'r   zno such filez/foo)r   r)   r*   r   _common
contextlibredirect_stderrioStringIOr   sysstderrflushgetvaluerh   r   r&   r   r   filename)r   r   r?   excr   r   r    
test_debugQ  s>   

zTestCommonModule.test_debugc                 C   s   |   }t|d}|d W d    n1 sw   Y  t|dks&J t|dks.J tt t|d  W d    n1 sDw   Y  tt t|d  W d    n1 s_w   Y  t|d dddkspJ t|d dddks|J d S )NwrG   s   fooz-invalidr   )fallback)Z
get_testfnopenwriter   r   r   r   r   )r   Ztestfnr   r   r   r    test_cat_bcatm  s   zTestCommonModule.test_cat_bcatN)	r\   r]   r^   r   r   r   r   r   r   r   r   r   r    r     s     r   rG   za b cc                   @   s   e Zd Zdd ZeZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zejje dddd ZdS ) TestWrapNumbersc                 C   s   t   d S r|   )r   r   r   r   r   r    r     s   zTestWrapNumbers.setUpc                 C   s&   dt dddi}t|d|ksJ d S Ndisk1rO   disk_iontr   r   inputr   r   r    test_first_call  s   zTestWrapNumbers.test_first_callc                 C   s8   dt dddi}t|d|ksJ t|d|ksJ d S r   r   r   r   r   r    test_input_hasnt_changed  s   z(TestWrapNumbers.test_input_hasnt_changedc                 C   s   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s3J dt dddi}t|d|ksDJ d S )	Nr   rO   r   
               r   r   r   r   r    test_increase_but_no_wrap  s   z)TestWrapNumbers.test_increase_but_no_wrapc                 C   s  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sVJ dt dddi}t|ddt ddd	iksmJ dt dddi}t|ddt ddd	iksJ dt d
ddi}t|ddt ddd	iksJ dt dddi}t|ddt ddd	iksJ dt dddi}t|ddt ddd	iksJ d S )Nr   d   r   r   n   Z      r      2      (   r   r   r   r   r    	test_wrap  s$   "zTestWrapNumbers.test_wrapc                 C   st   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s8J d S )Nr   rO   r      r   Zdisk2   r   r   r   r   r    test_changing_keys  s   z"TestWrapNumbers.test_changing_keysc                 C   s.  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s7J dt dddi}t|d|ksHJ 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stJ t dddt dddd}t|dt dddt ddddksJ d S )Nr  r  r  r   r   r  r   r   r   r   r   r    test_changing_keys_w_wrap  s$   



z)TestWrapNumbers.test_changing_keys_w_wrapc                 C   sb   ddddd}t |d|ksJ t |d|ksJ ddddd}t |d}|d d	 d
ks/J d S )N)	i,      #  R       ȷ  )	i  r   i tU i   i  r   r   r   r  )	6   r  i $ i N r      r  i     )	iU	  i  i"  r	  i  i4  i  i  i\  )nvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3r   )	r  r  r  r  r  r  r  r  r  r  r   i  r   )r   doutr   r   r    test_real_data  s   
zTestWrapNumbers.test_real_datac                 C   sb   dt dddi}t|d t }|d d|iksJ |d di iks%J |d di iks/J d S )Nr   rO   r   r   rX   r   r   r   
cache_infor   r   cacher   r   r    test_cache_first_call  s   
z%TestWrapNumbers.test_cache_first_callc                 C   s   dt dddi}t|d dt dddi}t|d t }|d d|iks(J |d dddddiks6J |d di iks@J d S )	Nr   rO   r   r   r   rX   )r   r   )r   rX   r   r   r   r   r"  r   r   r    test_cache_call_twice  s   


z%TestWrapNumbers.test_cache_call_twicec                 C   sv  dt dddi}t|d dt dddi}t|d t }|d d|iks(J |d dddddiks6J |d ddd	hiiksCJ d
d }dt dddi}t|d t }|d d|iksbJ |  dt dddi}t|d t }|d d|iksJ |  dt dddi}t|d t }|d d|iksJ |d dddddiksJ |d ddd	hiiksJ d S )Nr   r  r   r   r   rX   r%  r   r&  c                  S   sB   t  } | d dddddiksJ | d dddhiiksJ d S )	NrX   r   r   r  r%  r   r   r&  )r   r!  )r#  r   r   r    check_cache_info  s   
z9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_infor  r   r  r   )r   r   r#  r(  r   r   r    test_cache_wrap  s:   






zTestWrapNumbers.test_cache_wrapc                 C   s   dt dddi}t|d t dddt dddd}t|d t }|d d|iks-J |d dddddiks;J |d	 di iksEJ d S )
Nr   rO   r   r  r  r   rX   r%  r   r   r"  r   r   r    test_cache_changing_keys:  s   


z(TestWrapNumbers.test_cache_changing_keysc                 C   s\   dt dddi}t|d t|d td t i i i fks"J td td d S )Nr   rO   r   z?!?)r   r   r   r!  r   r   r   r    test_cache_clearF  s   



z TestWrapNumbers.test_cache_clearznot supported)reasonc                 C   s   t  rt  stdS t   t   t }|D ]}d|v s#J d|v s)J qt j  t }|D ]}d|v s=J d|vsCJ q5t j  t }|i i i fksVJ d S )Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)r   Zdisk_io_countersZnet_io_countersr   skipr   r!  r   )r   cachesr#  r   r   r    test_cache_clear_public_apisO  s    


z,TestWrapNumbers.test_cache_clear_public_apisN)r\   r]   r^   r   r   r   r   r  r  r  r  r  r$  r'  r)  r*  r+  r   markZskipifr   r/  r   r   r   r    r     s"    
2	r   )%rm   collectionsr   r   r}   r,   r   r   r   Zunittestr   r   r   Zpsutil._commonr   r   r   r   r   r	   r   r   r   Zpsutil.testsr   r   r   r   r   r   r   r`   r   r   
namedtupler   r   r   r   r   r    <module>   sJ     *  