U
    ;gs                     @   s  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 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   sR   t t tjjdd  W 5 Q R X t tj tdd  W 5 Q R X d S )N      )	r   raisesOverflowErrorpsutilZ_psplatformZcextZcheck_pid_rangeNoSuchProcessProcessself r   V/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/psutil/tests/test_misc.pytest_check_pid_range-   s    z'TestSpecialMethods.test_check_pid_rangec              	   C   s  t |  j}||}d|ks$td|j |ks8td|  d|ddksXtd|ksdtd|kspt|  |  ||}d|kstd|kstt	j
jt jd	t t d
B t  }||}d|j |kstd|kstd|kstW 5 Q R X t	j
jt jd	t t d
H t  }||}d|j |ksLtd|ksZtd|kshtW 5 Q R X t	j
jt jd	t t d
: t  }||}d|j |kstd|kstW 5 Q R X 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_testprocpidAssertionErrorr!   replace	terminatewaitr   patchobjectZombieProcessosgetpidr   AccessDenied)r   funcprr   r   r   test_process__repr__3   sR     z'TestSpecialMethods.test_process__repr__c                 C   s   | j td d S )N)r.   )r1   strr   r   r   r   test_process__str___   s    z&TestSpecialMethods.test_process__str__c                 C   s   t t dkstd S )Nzpsutil.Error())reprr   Errorr$   r   r   r   r   test_error__repr__b   s    z%TestSpecialMethods.test_error__repr__c                 C   s   t t dkstd S )N )r2   r   r5   r$   r   r   r   r   test_error__str__e   s    z$TestSpecialMethods.test_error__str__c                 C   s6   t tddkstt tjdddddks2t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'))r4   r   r   r$   r   r   r   r   test_no_such_process__repr__h   s    z/TestSpecialMethods.test_no_such_process__repr__c                 C   s6   t tddkstt tjdddddks2td S )Nr9   z"process no longer exists (pid=321)r!   r:   r;   msg (pid=321, name='name'))r2   r   r   r$   r   r   r   r   test_no_such_process__str__r   s    z.TestSpecialMethods.test_no_such_process__str__c                 C   s8   t tddkstt tjddddddks4td S )Nr9   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'))r4   r   r*   r$   r   r   r   r   test_zombie_process__repr__|   s    z.TestSpecialMethods.test_zombie_process__repr__c                 C   s8   t tddkstt tjddddddks4td S )Nr9   z,PID still exists but it's a zombie (pid=321)r!   r?   r@   rA   z$foo (pid=321, ppid=320, name='name'))r2   r   r*   r$   r   r   r   r   test_zombie_process__str__   s    z-TestSpecialMethods.test_zombie_process__str__c                 C   s6   t tddkstt tjdddddks2td S )Nr9   zpsutil.AccessDenied(pid=321)r!   r:   r;   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))r4   r   r-   r$   r   r   r   r   test_access_denied__repr__   s
    z-TestSpecialMethods.test_access_denied__repr__c                 C   s6   t tddkstt tjdddddks2td S )Nr9   z	(pid=321)r!   r:   r;   r=   )r2   r   r-   r$   r   r   r   r   test_access_denied__str__   s
    z,TestSpecialMethods.test_access_denied__str__c                 C   s6   t tddkstt tjdddddks2td S )N   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')r9   r!   r#   r!   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))r4   r   TimeoutExpiredr$   r   r   r   r   test_timeout_expired__repr__   s    z/TestSpecialMethods.test_timeout_expired__repr__c                 C   s6   t tddkstt tjdddddks2td S )NrG   ztimeout after 5 secondsr9   r!   rH   z.timeout after 5 seconds (pid=321, name='name'))r2   r   rI   r$   r   r   r   r   test_timeout_expired__str__   s
    z.TestSpecialMethods.test_timeout_expired__str__c                 C   s>   t  }t  }||kstd|_||ks.t|dks:td S )N)r   r   r@   )r   r   r$   _ident)r   p1Zp2r   r   r   test_process__eq__   s    z%TestSpecialMethods.test_process__eq__c                 C   s$   t  t  h}t|dks td S )N   )r   r   lenr$   )r   sr   r   r   test_process__hash__   s    z'TestSpecialMethods.test_process__hash__N)__name__
__module____qualname__r   r4   r1   r3   r6   r8   r<   r>   rC   rD   rE   rF   rJ   rK   rN   rR   r   r   r   r   r   ,   s   ,


r   c                   @   s<   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krq|dszt| W q tk
r   |tjkrtt|}|d kr`Y q|jd k	rd|j kr| 	|dY qX qtjD ]}||kst
qd S )N>   PermissionErrortestProcessLookupErrorr   tests_
deprecatedz not in psutil.__all__)dirr   
startswith
__import__ImportError__all__getattr__doc__lowerZfailr$   )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 td S )N.c                 S   s   g | ]}t |qS r   )r2   ).0xr   r   r   
<listcomp>   s     z)TestMisc.test_version.<locals>.<listcomp>)joinr   version_info__version__r$   r   r   r   r   test_version   s    zTestMisc.test_versionc                 C   s"   t  }d|_d| kstd S )N1r@   )r   r   r@   as_dictr$   )r   r/   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 ]L\}}| j||d0 z
| }W n t jk
rp   Y n
X || W 5 Q R X q8t }||jD ]T\}}|dkrq| j|d0 z
| }W n t j	k
r   Y n
X || W 5 Q R X qt
t
t jdd	d
d}t|t jst|jdks,t|jd	ks<t|jd
ksLtt
t
t jdd	dd
d}t|t js|t|jdkst|jdkst|jd	kst|jd
kstt
t
t j	dd	d
d}t|t j	st|jdkst|jd	ks
t|jd
kstt
t
t jddd	d}t|t jsHt|jdksXt|jdksht|jd	ksxtd S )Nc                 S   s4   t t |  t| }t|}| |ks0td S N)jsonloadsdumpspickler$   )retabr   r   r   check   s    

z*TestMisc.test_serialization.<locals>.checkT)clear_cache)procr!   >   win_service_getwin_service_iter)r!   i  r!   r:   )r#   r!   r:   *   )r#   r!   rB   r:   {   !   )secondsr#   r!   )r   r   rp   r   itergettersZsubTestr5   r   r-   rv   rt   ru   r   
isinstancer$   r#   r!   r:   r*   rB   rI   r   )r   rz   r|   nsre   r!   rw   ry   r   r   r   test_serialization   sp    	

zTestMisc.test_serializationc              
   C   s  t jjtjdtjd}t  |js*tW 5 Q R X t jjtjdtdd}t  |jsbtW 5 Q R X t jjtjdt	d.}t
t	 t  W 5 Q R X |jstW 5 Q R X t jjtjdtdd0}| tj t  W 5 Q R X |jstW 5 Q R X d S )NZ
_get_identr"   rO   )r   r(   r)   r   r   r-   calledr$   r*   
ValueErrorr   r   r   ZassertRaises)r   methr   r   r   test_ad_on_process_creation@  sD            z$TestMisc.test_ad_on_process_creationc              
   C   sR   t jddd: tt}tt W 5 Q R X dt|j	 ksDt
W 5 Q R X d S )Nzpsutil._psplatform.cext.versionz0.0.0Zreturn_valuezversion conflict)r   r(   r   r   r`   r   r   r2   valuerd   r$   )r   cmr   r   r   test_sanity_version_check]  s     z"TestMisc.test_sanity_version_checkN)	rS   rT   rU   rf   rn   rq   r   r   r   r   r   r   r   rV      s    NrV   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 rr   callsr   r   r   r   setUpm  s    zTestMemoizeDecorator.setUpNc                 C   s2  t dD ]2}| }| jdi fgks&t|d k	r||kstqt dD ]:}|d}| jdi fdi fgksjt|d k	rD||ksDtqDt dD ]H}|ddd}| jdi fdi fdddifgkst|d k	r||kstqt| jdkst|  | }|d k	r
||ks
tt| jdkst|jd	ks.td S )
Nr   r   rO   rO   barr         My docstring.)ranger   r$   rP   cache_clearrc   )r   objexpected_retvalr[   rw   r   r   r   run_againstr  s,    $
z TestMemoizeDecorator.run_againstc                    s&   t  fdd}|  | j|dd d S )Nc                     s    j | |f dS r      r   appendargskwargsZ	baseclassr   r   r@     s    z/TestMemoizeDecorator.test_function.<locals>.foor   r   )r   r   )r   r@   r   r   r   test_function  s    z"TestMemoizeDecorator.test_functionc                    s>   t G  fddd}|  | j|d d |  dks:t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 rr   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     s    z0TestMemoizeDecorator.test_class.<locals>.Foo.barN)rS   rT   rU   rc   r   r   r   r   r   r   Foo  s   r   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}| | ks"tt| t| ks:tt|dt|dksVtt|dddt|dddksztt|dt|dkstd S )Nc                   @   s   e Zd Zdd ZdS )z6TestMemoizeDecorator.test_class_singleton.<locals>.Barc                 _   s   d S rr   r   r   r   r   r   r     s    z?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__N)rS   rT   rU   r   r   r   r   r   Bar  s   r   rO   r   )r@   r   )r   r$   id)r   r   r   r   r   test_class_singleton  s    $z)TestMemoizeDecorator.test_class_singletonc                    s,   G  fddd}|  | j | jdd d S )Nc                       s    e Zd Zee fddZdS )z3TestMemoizeDecorator.test_staticmethod.<locals>.Fooc                     s    j | |f dS r   r   r   r   r   r   r     s    z7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.barN)rS   rT   rU   staticmethodr   r   r   r   r   r   r     s   r   r   r   r   r   r   r   r   r   test_staticmethod  s    z&TestMemoizeDecorator.test_staticmethodc                    s,   G  fddd}|  | j | jdd d S )Nc                       s    e Zd Zee fddZdS )z2TestMemoizeDecorator.test_classmethod.<locals>.Fooc                    s    j ||f dS r   r   )clsr   r   r   r   r   r     s    z6TestMemoizeDecorator.test_classmethod.<locals>.Foo.barN)rS   rT   rU   classmethodr   r   r   r   r   r   r     s   r   r   r   r   r   r   r   r   test_classmethod  s    z%TestMemoizeDecorator.test_classmethodc                    s  t  fdd}g  tdD ].}| }di f}||ks:tt dkstqtdD ]0}|d}di f}||ksttt dksTtqTtdD ]8}|ddd}dddif}||kstt d	kstq|  | }di f}||kstt d
kst|jdks
td S )Nc                     s     d | |fS )Foo docstring.Nr   r   r   r   r   r@     s    
z/TestMemoizeDecorator.test_original.<locals>.foor   r   rO   r   r   r   r   r   r   )r   r   r$   rP   r   rc   )r   r@   r[   rw   expectedr   r   r   test_original  s0    z"TestMemoizeDecorator.test_original)N)rS   rT   rU   r   tearDownr   r   r   r   r   r   r   r   r   r   r   r   l  s   

r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestCommonModulec                    s   G  fddd}| }g  |   |   t dks<tg  |j | |   |   t dksltg  |j | |   |   t dkst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 rr   r   r   r   r   r   r@     s    z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.fooN)rS   rT   rU   r	   r@   r   r   r   r   r     s   r   r   rO   )r@   rP   r$   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 tt d|dd|ddiks@tt d	|dd|dd
iks`tt d|dd|ddikstt d|ddikstt d|ddikstt d|ddikstd S )Nc                 S   s   t r|  S | S rr   )r   upper)rQ   r   r   r   k  s    z4TestCommonModule.test_parse_environ_block.<locals>.kza=1 rx   ro   z	a=1 b=2  ry   2za=1 b=  r7   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)r
   r$   )r   r   r   r   r   test_parse_environ_block  s$      
   
z)TestCommonModule.test_parse_environ_blockc              	   C   s<  |  tj t rtd}d|_t  t r6tW 5 Q R X t  tjdtd}t rbt|jsltW 5 Q R X t  tjdt	j
d"}t rtt  |jstW 5 Q R X t  tjdt	j
d"}t rtt  |jstW 5 Q R X n@tt0 t		t	jt	j}z|d W 5 |  X W 5 Q R X d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr"   z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   r   r   r(   has_ipv6r$   OSErrorr   socketgaierrorr   r   AF_INET6SOCK_STREAMclosebind)r   rQ   sockr   r   r   test_supports_ipv6#  sJ     
 

z#TestCommonModule.test_supports_ipv6c              
   C   s   t jt}t|sttt j|r,ttjdt	d$ t
t t| W 5 Q R X W 5 Q R X tjdtd t|rtW 5 Q R X tjddd t|rtW 5 Q R X d S )Nzpsutil._common.os.statr"   zpsutil._common.stat.S_ISREGFr   )r+   pathabspath__file__r   r$   dirnamer   r(   rW   r   r   r   FileNotFoundError)r   Z	this_filer   r   r   test_isfile_strictJ  s     z#TestCommonModule.test_isfile_strictc              
   C   s`  t jtjdd2 tt }t	d t
j  W 5 Q R X W 5 Q R X | }|dsdt|d|kspttdd|kstt jtjdd, tt }t	td W 5 Q R X W 5 Q R X | }d|kstd	|kstt jtjdd8 tt }td
d}d|_t	| W 5 Q R X W 5 Q R X | }d|ksNtd|ks\t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   Z_common
contextlibredirect_stderrioStringIOr   sysstderrflushgetvaluer^   r$   r   r%   r   r   filename)r   r   r:   excr   r   r   
test_debugX  s,     
zTestCommonModule.test_debugc              	   C   s   |   }t|d}|d W 5 Q R X t|dks8tt|dksHttt t|d  W 5 Q R X tt t|d  W 5 Q R X t|d dddkstt|d dddkstd S )Nwr@   s   fooz-invalidr   )fallback)	Z
get_testfnopenwriter   r$   r   r   r   r   )r   Ztestfnr   r   r   r   test_cat_bcatt  s    zTestCommonModule.test_cat_bcatN)	rS   rT   rU   r   r   r   r   r   r   r   r   r   r   r     s   'r   r@   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 rr   )r   r   r   r   r   r   r     s    zTestWrapNumbers.setUpc                 C   s&   dt dddi}t|d|ks"td S Ndisk1rG   disk_iontr   r$   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"tt|d|ks4t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"tdt dddi}t|d|ksDtdt dddi}t|d|ksftdt dddi}t|d|kstd S )	Nr   rG   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"tdt dddi}t|ddt dddiksPtdt dddi}t|ddt dddiks~tdt dddi}t|ddt dddikstdt dddi}t|ddt ddd	ikstdt dddi}t|ddt ddd	iks
tdt d
ddi}t|ddt ddd	iks:tdt dddi}t|ddt ddd	iksjtdt dddi}t|ddt ddd	ikst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"tt dddt dddd}t|d|ksNtdt dddi}t|d|ksptd S )Nr   rG   r      r   Zdisk2   r   r   r   r   r   test_changing_keys  s    z"TestWrapNumbers.test_changing_keysc                 C   s0  t dddt dddd}t|d|ks,tt dddt dddd}t|dt dddt ddddksntdt dddi}t|d|kstt dddt dddd}t|d|kstt dddt dddd}t|d|kstt dddt dddd}t|dt dddt ddddks,t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 tt |d|ks2tddddd}t |d}|d d	 d
ks^t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$   )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s6t|d di iksJt|d di iks^td S )Nr   rG   r   r   rO   r   r   r   
cache_infor$   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sPt|d dddddikslt|d di ikstd S )	Nr   rG   r   r   r   rO   )r   r   )r   rO   r   r   r   r  r  r   r   r   test_cache_call_twice  s    

 

z%TestWrapNumbers.test_cache_call_twicec                 C   s~  dt dddi}t|d dt dddi}t|d t }|d d|iksPt|d dddddikslt|d ddd	hiikstd
d }dt dddi}t|d t }|d d|ikst|  dt dddi}t|d t }|d d|ikst|  dt dddi}t|d t }|d d|iks@t|d dddddiks^t|d ddd	hiiksztd S )Nr   r   r   r   r   rO   r  r   r  c                  S   sB   t  } | d dddddiks$t| d dddhiiks>td S )	NrO   r   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sZt|d dddddiksvt|d	 di ikstd S )
Nr   rG   r   r   r   r   rO   r  r   r  r  r   r   r   test_cache_changing_keysA  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sDttd td d S )Nr   rG   r   z?!?)r   r   r   r  r$   r   r   r   r   test_cache_clearM  s    



z TestWrapNumbers.test_cache_clearznot supported)reasonc                 C   s   t  rt  stdt   t   t }|D ]}d|ksFtd|ks6tq6t j  t }|D ]}d|ksztd|ksjtqjt j  t }|i i i fkst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   )r   cachesr  r   r   r   test_cache_clear_public_apisV  s     


z,TestWrapNumbers.test_cache_clear_public_apisN)rS   rT   rU   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   )%rc   collectionsr   r   rs   r+   rv   r   r   Zunittestr   r   Zpsutil.testsr   Zpsutil._commonr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   rV   r   r   
namedtupler   r   r   r   r   r   <module>   sJ     (  