
    gH                     p   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ZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& ddlm'Z' ddlm(Z( ddlm)Z) ddlm*Z* ddlm+Z+ dd lm,Z, dd!lm-Z- dd"lm.Z. dd#lm/Z/ dd$lm0Z0 dd%lm1Z1 dd&lm2Z2 dd'lm3Z3 dd(lm4Z4  G d) d*e          Z5 G d+ d,e          Z6 G d- d.e          Z7 G d/ d0e          Z8 G d1 d2e          Z9e)j:        ;                    d34           G d5 d6e                      Z< G d7 d8e          Z= G d9 d:e          Z> G d; d<e          Z?dS )=z1Tests for testing utils (psutil.tests namespace).    N)FREEBSD)NETBSD)POSIX)open_binary)	open_text)supports_ipv6)PY3)
CI_TESTING)COVERAGE)HAS_NET_CONNECTIONS_UNIX)HERE)
PYTHON_EXE)PYTHON_EXE_ENV)PsutilTestCase)TestMemoryLeak)bind_socket)bind_unix_socket
call_until)chdir)create_sockets)fake_pytest)filter_proc_net_connections)get_free_port)is_namedtuple)mock)process_namespace)pytest)reap_children)retry)retry_on_failure)
safe_mkdir)safe_rmpath)system_namespace)tcp_socketpair)	terminate)unix_socketpair)wait_for_file)wait_for_pidc                   :   e Zd Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z ej        d          d             Z	 ej        d          d             Z
dS )	TestRetryDecoratorz
time.sleepc                     t          ddd           fd            }t          t          d                     |            dk    sJ |j        dk    sJ d S )N      retriesintervallogfunc                  B     r                                   ddz    dS Nr.   r   popqueues   W/var/www/html/ai-engine/env/lib/python3.11/site-packages/psutil/tests/test_testutils.pyfooz2TestRetryDecorator.test_retry_success.<locals>.fooI   2     		A   1       )r    listrange
call_countselfsleepr:   r8   s      @r9   test_retry_successz%TestRetryDecorator.test_retry_successE   sx     
q1T	2	2	2	 	 	 	 
3	2	 U1XXsuuzzzz1$$$$$$r<   c                 
   t          ddd           fd            }t          t          d                    t          j        t
                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr-   r.   r/   c                  B     r                                   ddz    dS r4   r5   r7   s   r9   r:   z2TestRetryDecorator.test_retry_failure.<locals>.fooW   r;   r<      )r    r>   r?   r   raisesZeroDivisionErrorr@   rA   s      @r9   test_retry_failurez%TestRetryDecorator.test_retry_failureT   s     
q1T	2	2	2	 	 	 	 
3	2	 U1XX],-- 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$s   A++A/2A/c                     t          t          d          d             }t          j        t                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr.   )	exceptionr1   c                      t           N)	TypeError r<   r9   r:   z2TestRetryDecorator.test_exception_arg.<locals>.fooe   s    Or<   r   )r    
ValueErrorr   rH   rO   r@   rB   rC   r:   s      r9   test_exception_argz%TestRetryDecorator.test_exception_argc   s    	a	0	0	0	 	 
1	0	 ]9%% 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$s   AAAc                     t          dd d           d             }t          j        t                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr-   r/   c                      ddz   d S r4   rP   rP   r<   r9   r:   z4TestRetryDecorator.test_no_interval_arg.<locals>.fooq       EEEEr<   r   r    r   rH   rI   r@   rR   s      r9   test_no_interval_argz'TestRetryDecorator.test_no_interval_argm   s     
q4	5	5	5	 	 
6	5	 ],-- 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$   AAAc                     t          ddd           d             }t          j        t                    5   |             d d d            n# 1 swxY w Y   |j        dk    sJ d S )Nr-   r.   r/   c                      ddz   d S r4   rP   rP   r<   r9   r:   z0TestRetryDecorator.test_retries_arg.<locals>.foo{   rV   r<   rW   rR   s      r9   test_retries_argz#TestRetryDecorator.test_retries_argy   s    	q1T	2	2	2	 	 
3	2	 ],-- 	 	CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1$$$$$$rY   c                     t          j        t                    5  t          dd           d d d            d S # 1 swxY w Y   d S )Nr-   r.   )r0   timeout)r   rH   rQ   r    )rB   rC   s     r9   test_retries_and_timeout_argsz0TestRetryDecorator.test_retries_and_timeout_args   s    ]:&& 	( 	(!Q''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   9= =N)__name__
__module____qualname__r   patchrD   rJ   rS   rX   r\   r_   rP   r<   r9   r+   r+   D   s       TZ% % % TZ% % % TZ% % % TZ	% 	% 	% TZ% % % TZ( ( ( ( (r<   r+   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestSyncTestUtilsc                    t          t          j                               t          t	          j                              dz   }t          j        dt          dg                    5  t          j
        t          j                  5  t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ni psutil.tests.retry.__iter__r   return_value)r)   osgetpidmaxpsutilpidsr   rc   iterr   rH   NoSuchProcess)rB   nopids     r9   test_wait_for_pidz#TestSyncTestUtils.test_wait_for_pid   s&   RY[[!!!FKMM""U*Z5D!IINNN 	$ 	$v344 $ $U###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s6   (B;B#B;#B'	'B;*B'	+B;;B?B?c                    |                                  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          |           t          j                            |          rJ d S )Nwr:   
get_testfnopenwriter(   rj   pathexistsrB   testfnfs      r9   test_wait_for_filez$TestSyncTestUtils.test_wait_for_file   s    ""&# 	!GGENNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	f7>>&)))))))   AAAc                     |                                  }t          |d          5  	 d d d            n# 1 swxY w Y   t          |d           t          j                            |          rJ d S )Nrt   T)empty)rv   rw   r(   rj   ry   rz   rB   r|   s     r9   test_wait_for_file_emptyz*TestSyncTestUtils.test_wait_for_file_empty   s    ""&# 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	fD))))7>>&)))))))s   377c                 (   |                                  }t          j        dt          dg                    5  t	          j        t                    5  t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrg   r   rh   )rv   r   rc   ro   r   rH   IOErrorr(   r   s     r9   test_wait_for_file_no_filez,TestSyncTestUtils.test_wait_for_file_no_file   s   ""Z5D!IINNN 	& 	&w'' & &f%%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s5   BA/#B/A3	3B6A3	7BBBc                    |                                  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          |d           t          j                            |          sJ d S )Nrt   r:   F)deleteru   r{   s      r9   test_wait_for_file_no_deletez.TestSyncTestUtils.test_wait_for_file_no_delete   s    ""&# 	!GGENNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	fU++++w~~f%%%%%%%r   c                 &    t          d            d S )Nc                      dS Nr.   rP   rP   r<   r9   <lambda>z3TestSyncTestUtils.test_call_until.<locals>.<lambda>   s    1 r<   r   rB   s    r9   test_call_untilz!TestSyncTestUtils.test_call_until   s    99r<   N)	r`   ra   rb   rr   r~   r   r   r   r   rP   r<   r9   re   re      sn        $ $ $* * ** * *& & && & &    r<   re   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestFSTestUtilsc                 |    t          t                    5 }|j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr)r   __file__moderB   r}   s     r9   test_open_textzTestFSTestUtils.test_open_text   s    x   	!A6S=====	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!   155c                 |    t          t                    5 }|j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrb)r   r   r   r   s     r9   test_open_binaryz TestFSTestUtils.test_open_binary   s    "" 	"a6T>>>>>	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"r   c                     |                                  }t          |           t          j                            |          sJ t          |           t          j                            |          sJ d S rN   )rv   r"   rj   ry   isdirr   s     r9   test_safe_mkdirzTestFSTestUtils.test_safe_mkdir   sg    ""6w}}V$$$$$6w}}V$$$$$$$r<   c                    |                                  }t          |d                                           t          |           t          j                            |          rJ t          |           t	          j        |           t          |           t          j                            |          rJ t          j	        dt          t          j        d                    5 }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   |j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nrt   zpsutil.tests.os.stat )side_effect)rv   rw   closer#   rj   ry   rz   mkdirr   rc   OSErrorerrnoEINVALr   rH   called)rB   r|   ms      r9   test_safe_rmpathz TestFSTestUtils.test_safe_rmpath   s   ""VS!!!F7>>&)))))F
F7>>&)))))Z"b0I0I
 
 
 	w'' $ $F###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $8OOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   (E DE D"	"E %D"	&E  EEc                 l   |                                  }t          j                    }t          j        |           t	          |          5  t          j                    t          j                            ||          k    sJ 	 d d d            n# 1 swxY w Y   t          j                    |k    sJ d S rN   )rv   rj   getcwdr   r   ry   join)rB   r|   bases      r9   
test_chdirzTestFSTestUtils.test_chdir   s    ""y{{
6]] 	= 	=9;;"',,tV"<"<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=y{{d""""""s   8BBBN)r`   ra   rb   r   r   r   r   r   rP   r<   r9   r   r      s_        ! ! !" " "% % %  (# # # # #r<   r   c                   l    e Zd Zd Zd Zej                            e d          d             Z	d Z
dS )TestProcessUtilsc                     |                                  }t          j        |j                  }|                                sJ t                       |                                rJ t          j        j        rJ t          j        j        rJ d S rN   )	spawn_testprocrm   Processpid
is_runningr   tests_pids_started_subprocesses_started)rB   subpps      r9   test_reap_childrenz#TestProcessUtils.test_reap_children   s}    ""$$N48$$||~~<<>>!!!<----<555555r<   c                    |                                  \  }}|j        |j        k    sJ |                                sJ |                                sJ t          j                                                    }||gk    sJ t          j                                        d          }t          |          dk    sJ ||v sJ ||v sJ |                                t          j	                    k    sJ |                                |j        k    sJ t          |           |                                rJ |                                sJ t          |           |                                rJ d S )NT)	recursive   )spawn_children_pairr   r   rm   r   childrenlenppidrj   rk   r&   )rB   child
grandchildr   s       r9   test_spawn_children_pairz)TestProcessUtils.test_spawn_children_pair   s    4466zyJN****!!!!!$$&&&&&>##,,..E7"""">##,,t,<<8}}!!!!    X%%%%zz||ry{{****  EI----%##%%%%%$$&&&&&*((*******r<   
POSIX onlyreasonc                 |    |                                  \  }}|                                t          j        k    sJ d S rN   )spawn_zombiestatusrm   STATUS_ZOMBIE)rB   _parentzombies      r9   test_spawn_zombiez"TestProcessUtils.test_spawn_zombie   s9    ++--}}&"6666666r<   c                    |                                  }t          |           |                     |j                   t          |           t	          j        |                                  j                  }t          |           |                     |j                   t          |           t          ddg}t	          j        |t          j	        t          j	        t                    }t          |           |                     |j                   t          |           |                                  j        }t          |           |                     |j                   t          |           t          rk|                                 \  }}t          |           t          |           |                     |j                   |                     |j                   d S d S )Nz-cz3import time; [time.sleep(0.1) for x in range(100)];)stdoutstderrenv)r   r&   assertPidGoner   rm   r   r   Popen
subprocessPIPEr   r   r   )rB   r   cmdr   parentr   s         r9   test_terminatezTestProcessUtils.test_terminate  s   !!!15!!!!N4..00455!15!!!! A

 L??	
 
 
 	!15!!!!!!##'#15!!!# 	+!..00NFFffvz***vz*****	+ 	+r<   N)r`   ra   rb   r   r   r   markskipifr   r   r   rP   r<   r9   r   r      st        6 6 6+ + +* [E	,777 7 877%+ %+ %+ %+ %+r<   r   c                       e Zd Zd Zej                            e d          d             Zd Z	ej                            e d          ej                            e
ped          d                         Zd Zd	S )
TestNetUtilsc                     t                      }t          j        t          d|f                    5 }|                                d         |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   addrr.   )r   
contextlibclosingr   getsockname)rB   portss      r9   r   zTestNetUtils.bind_socket+  s    "d < < <== 	.==??1%-----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   !A""A&)A&r   r   c                    |                                  }t          |          }t          j        |          5  |j        t
          j        k    sJ |j        t
          j        k    sJ |	                                |k    sJ t          j                            |          sJ t          j        t          j        |          j                  sJ 	 d d d            n# 1 swxY w Y   |                                  }t          |t
          j                  }t          j        |          5  |j        t
          j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )N)type)rv   r   r   r   familysocketAF_UNIXr   SOCK_STREAMr   rj   ry   rz   statS_ISSOCKst_mode
SOCK_DGRAM)rB   namesocks      r9   test_bind_unix_socketz"TestNetUtils.test_bind_unix_socket0  s     %%%% 	8 	8;&.00009 22222##%%----7>>$'''''=!6777777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   6+<===%% 	2 	29 111111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$   BCC #C *EEEc                    dt                      f}t          t          j        |          \  }}t	          j        |          5  t	          j        |          5  |                                |k    sJ |                                |k    sJ |                                |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz	127.0.0.1r   )r   r%   r   AF_INETr   r   r   getpeername)rB   r   serverclients       r9   tcp_tcp_socketpairzTestNetUtils.tcp_tcp_socketpair@  s_   ]__-'TBBB'' 	4 	4#F++ 4 4 ))++t3333))++t3333))++t333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s7   CAB4(C4B8	8C;B8	<CCCz*/var/run/log UNIX socket opened by defaultc                 J   t          j                    }|                                }t          |                    d                    g k    sJ |                                 }t          |          \  }}	 t          j        	                    |          sJ t          j        t          j
        |          j                  sJ |                                |z
  dk    sJ t          t          |                    d                              dk    sJ |                                |k    sJ |                                |k    sJ 	 |                                 |                                 d S # |                                 |                                 w xY w)Nunix)kindr   )rm   r   num_fdsr   net_connectionsrv   r'   rj   ry   rz   r   r   r   r   r   r   r   )rB   r   r   r   r   r   s         r9   test_unix_socketpairz!TestNetUtils.test_unix_socketpairK  s   
 N))++'(9(9v(9(F(FGG2MMMM  (..	7>>$'''''=!67777799;;(A----/0A0Av0A0N0NOO     
 %%''4////%%''4/////LLNNNLLNNNNN LLNNNLLNNNNs   8CE8 8*F"c                    t                      5 }t          j        t                    }t          j        t                    }|D ]O}||j        xx         dz  cc<   ||                    t          j        t          j                  xx         dz  cc<   P|t          j	                 dk    sJ t                      r|t          j                 dk    sJ t          rt          r|t          j                 dk    sJ |t          j                 dk    sJ |t          j                 dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr.   r   )r   collectionsdefaultdictintr   
getsockoptr   
SOL_SOCKETSO_TYPEr   r   AF_INET6r   r   r   r   r   )rB   socksfamstypesr   s        r9   test_create_socketsz TestNetUtils.test_create_socketsg  s    	1*3//D+C00E L LQX!#all6#4fnEEFFF!KFFFF'1,,,, 2FO,1111 11 1FN+q0000+,1111*+q00000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   DD66D:=D:N)r`   ra   rb   r   r   r   r   r   r   r   r   r   r   r  rP   r<   r9   r   r   *  s        . . .
 [E	,772 2 872	4 	4 	4 [E	,77['"N      8701 1 1 1 1r<   r   serialr   c                       e Zd Z e            d             Zd Z e            ej                            e	d          ej                            e
d          d                                     Zd Zd Zd	 Zd
S )TestMemLeakClassc                 f    fd}ddi|                      |dd           d         dk    sJ d S )Nc                  (     dxx         dz  cc<   d S )Ncntr.   rP   )r  s   r9   funz(TestMemLeakClass.test_times.<locals>.fun|  s    JJJ!OJJJJJr<   r  r   
      )timeswarmup_times   )execute)rB   r  r  s     @r9   
test_timeszTestMemLeakClass.test_timesz  sZ    	 	 	 	 	 ajS4445zRr<   c                    t          j        t                    5  |                     d d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d d	           d d d            n# 1 swxY w Y   t          j        t                    5  |                     d
 d           d d d            d S # 1 swxY w Y   d S )Nc                      dS Nr   rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>       r<   r   r  c                      dS r  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   c                      dS r  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   )r  c                      dS r  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   )	tolerancec                      dS r  rP   rP   r<   r9   r   z1TestMemLeakClass.test_param_err.<locals>.<lambda>  r  r<   )r0   )r   rH   rQ   r  r   s    r9   test_param_errzTestMemLeakClass.test_param_err  s   ]:&& 	- 	-LL!L,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]:&& 	. 	.LL"L---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:&& 	5 	5LLL444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5]:&& 	2 	2LLbL111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2]:&& 	0 	0LLBL///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sW   ?AA#BBB,CCC5DD!D>E$$E(+E(zskipped on CIr   zskipped during test coveragec                     g }|fd}	 t          j        t          d          5  |                     |d           d d d            n# 1 swxY w Y   ~d S # ~w xY w)Nc                 6    |                      ddz             d S )Nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   appendlss    r9   r  z+TestMemLeakClass.test_leak_mem.<locals>.fun  s    IIi$&'''''r<   z	extra-memmatchd   r  )r   rH   AssertionErrorr  )rB   r.  r  s      r9   test_leak_memzTestMemLeakClass.test_leak_mem  s      	( 	( 	( 	(	~[AAA - -S,,,- - - - - - - - - - - - - - - FFFFs-   A AA AA AA Ac                       fd}g t           rdnd}t          j        t          d|z             5                       |           d d d            d S # 1 swxY w Y   d S )Nc                      t          t                    }                     | j                                       |            d S rN   )rw   r   
addCleanupr   r,  )r}   boxrB   s    r9   r  z1TestMemLeakClass.test_unclosed_files.<locals>.fun  s5    XAOOAG$$$JJqMMMMMr<   fdhandlez	unclosed r/  )r   r   rH   r2  r  )rB   r  r   r7  s   `  @r9   test_unclosed_filesz$TestMemLeakClass.test_unclosed_files  s    	 	 	 	 	 	
 *tt(]>t1CDDD 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                 |    fd}g d}|                      ||dd           t                    |dz   k    sJ d S )Nc                  8                          ddz             d S )Nxxxxxxxxxxxxxxxxxxxxxxxxr*  r+  r-  s   r9   r  z,TestMemLeakClass.test_tolerance.<locals>.fun  s    IIho&&&&&r<   r1  r   i  )r  r  r$  r.   )r  r   )rB   r  r  r.  s      @r9   test_tolerancezTestMemLeakClass.test_tolerance  sp    	' 	' 	' 	' 	' u18I 	 	
 	
 	
 2ww%!)######r<   c                 z   d }|                      t          |           t          j        t                    5  |                      t          |           d d d            n# 1 swxY w Y   d }t          j        t
                    5  |                      t          |           d d d            d S # 1 swxY w Y   d S )Nc                      ddz   d S r4   rP   rP   r<   r9   fun_1z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_1  s    EEEEr<   c                      d S rN   rP   rP   r<   r9   fun_2z2TestMemLeakClass.test_execute_w_exc.<locals>.fun_2  s    Dr<   )execute_w_excrI   r   rH   r   r2  )rB   rA  rC  s      r9   test_execute_w_excz#TestMemLeakClass.test_execute_w_exc  sB   	 	 	 	,e444],-- 	/ 	/w...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/	 	 	 ]>** 	9 	90%888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s#   A  A$'A$B00B47B4N)r`   ra   rb   r!   r  r&  r   r   r   r
   r   r3  r:  r>  rE  rP   r<   r9   r  r  x  s             
0 
0 
0 [
?;;[)GHH  IH <; 	 	 		$ 	$ 	$9 9 9 9 9r<   r  c                   ~    e Zd Zd Zd Zd Zd Zej        	                    e
 d          d             Zd Zd	 Zd
S )TestFakePytestc                     t          j                    }|                    |           t          j                    }|                    |          }|S rN   )unittest	TestSuiteaddTestTextTestRunnerrun)rB   klasssuiterunnerresults        r9   run_test_classzTestFakePytest.run_test_class  sF    "$$e(**E""r<   c                    t          j        t                    5 }ddz   d d d            n# 1 swxY w Y   t          |j        t                    sJ t          j        t
          d          5 }t          d          # 1 swxY w Y   	 t          j        t
          d          5 }t          d          # 1 swxY w Y   	 |                     d          # t          $ r }t          |          dk    sJ Y d }~d S d }~ww xY w)Nr.   r   r:   r/  barexception not raisedz"foo" does not match "bar")	r   rH   rI   
isinstancevaluerQ   failr2  str)rB   cmerrs      r9   test_raiseszTestFakePytest.test_raises  s    122 	bEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	"($566666
%888 	$BU###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$	4#Je<<< ( '''( ( ( ( ( ( ( ( (
 ))2333  	< 	< 	<s88;;;;;;;;;;;	<sT   ,00.A>>BB
C %B55B99C <B9=C 
D  C;;D c                 "   t           j                            d          d             } |            dk    sJ t           j                            d           G d d                      } |                                            dk    sJ d S )Nr  r  c                      dS r   rP   rP   r<   r9   r:   z%TestFakePytest.test_mark.<locals>.foo  s    1r<   r.   c                       e Zd Zd ZdS )%TestFakePytest.test_mark.<locals>.Fooc                     dS r   rP   r   s    r9   rT  z)TestFakePytest.test_mark.<locals>.Foo.bar  s    qr<   N)r`   ra   rb   rT  rP   r<   r9   Foor`    s#            r<   rb  )r   r   xdist_grouprT  )rB   r:   rb  s      r9   	test_markzTestFakePytest.test_mark  s    			%	%8	%	4	4	 	 
5	4	 suuzzzz			%	%8	%	4	4	 	 	 	 	 	 	 
5	4	 suuyy{{ar<   c                     G d dt           j                  }|                      |d                    }|                                sJ t	          |j                  dk    sJ |j        d         d         dk    sJ  G d dt           j                  }|                      |d                    }|                                sJ t	          |j                  dk    sJ d S )Nc                   X    e Zd Zej                            dd          d             ZdS ),TestFakePytest.test_skipif.<locals>.TestCaseTr   r   c                     ddk    sJ d S r   rP   r   s    r9   r:   z0TestFakePytest.test_skipif.<locals>.TestCase.foo      Avvvvvvr<   Nr`   ra   rb   r   r   r   r:   rP   r<   r9   TestCaserg    sD        $$T($;;  <;  r<   rk  r:   r.   r   r   c                   X    e Zd Zej                            dd          d             ZdS )rg  Fr   r   c                     ddk    sJ d S r   rP   r   s    r9   r:   z0TestFakePytest.test_skipif.<locals>.TestCase.foo  ri  r<   Nrj  rP   r<   r9   rk  z,TestFakePytest.test_skipif.<locals>.TestCase  sD        $$U8$<<  =<  r<   rI  rk  rR  wasSuccessfulr   skippedrB   rk  rQ  s      r9   test_skipifzTestFakePytest.test_skipif  s   	 	 	 	 	x( 	 	 	
 $$XXe__55##%%%%%6>""a''''~a #x////	 	 	 	 	x( 	 	 	
 $$XXe__55##%%%%%6>""a''''''r<   znot PY3r   c                     G d dt           j                  }|                      |d                    }|                                sJ t	          |j                  dk    sJ |j        d         d         dk    sJ d S )Nc                       e Zd Zd ZdS )*TestFakePytest.test_skip.<locals>.TestCasec                 >    t          j        d           ddk    sJ d S )Nr   r.   r   )r   skipr   s    r9   r:   z.TestFakePytest.test_skip.<locals>.TestCase.foo  s$     ***Avvvvvvr<   N)r`   ra   rb   r:   rP   r<   r9   rk  ru     s#            r<   rk  r:   r.   r   r   rn  rq  s      r9   	test_skipzTestFakePytest.test_skip  s    	 	 	 	 	x( 	 	 	
 $$XXe__55##%%%%%6>""a''''~a #x//////r<   c                 :   |                      t                    }t          j        |           t	          t          j                            |d          d          5  	 d d d            n# 1 swxY w Y   t	          t          j                            |d          d          5 }|                    t          j	        d          
                                           d d d            n# 1 swxY w Y   t          j                            t          j        d|          5  |                     t"          d          5  t%          j                    }|                                dk    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	N)dirz__init__.pyrt   ztest_file.pyz                import unittest

                class TestCase(unittest.TestCase):
                    def test_passed(self):
                        pass
                r   zFake pytest module was usedr.   )rv   r   rj   r   rw   ry   r   rx   textwrapdedentlstripr   rc   objectrm   r   assertWarnsRegexUserWarningr   maincountTestCases)rB   tmpdirr}   rO  s       r9   	test_mainzTestFakePytest.test_main
  sf   T**
"',,v}55s;; 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	"',,v~66<< 	GGHO %   VXX  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Zv|VV<< 	3 	3&&:  3 3 $(**++--22222	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sZ   A,,A03A0%:C++C/2C/!F=.E8,F8E<	<F?E<	 FFFc                    t          j        t                    5  t          j        dt          d           d d d            n# 1 swxY w Y   	 t          j        t                    5  t          j        dt
          d           d d d            n# 1 swxY w Y   |                     d          # t          $ r Y nw xY wt          j        t          d          5  t          j        dt          d           d d d            n# 1 swxY w Y   	 t          j        t          d          5  t          j        dt          d           d d d            n# 1 swxY w Y   |                     d          # t          $ r Y d S w xY w)Nr:   r.   )
stacklevelrU  r/  rT  )r   warnsr  warningswarnDeprecationWarningrX  r2  r   s    r9   
test_warnszTestFakePytest.test_warns  s   {++ 	< 	<M%;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<	4";// G Ge%7AFFFFG G G G G G G G G G G G G G G
 ))2333  	 	 	D	 {%888 	< 	<M%;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<	4";e<<< @ @e[Q????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 ))2333  	 	 	DD	s   AA
AB1 (BB1 BB1 BB1 1
B>=B>DD	D	E5 ,E	E5 EE5 EE5 5
FFN)r`   ra   rb   rR  r\  rd  rr  r   r   r   r	   rx  r  r  rP   r<   r9   rG  rG    s          4 4 4      ( ( (( [C	22	0 	0 32	03 3 3(4 4 4 4 4r<   rG  c                       e Zd Zd Zd ZdS )TestTestingUtilsc                    t          j                    }t          |          }|                                 d |                    |j                  D             d         d         } |            |                                k    sJ d S )Nc                 *    g | ]}|d          dk    |S )r.   r   rP   .0xs     r9   
<listcomp>z;TestTestingUtils.test_process_namespace.<locals>.<listcomp>?  s!    @@@Q1qr<   r   )rm   r   r   testro   gettersr   )rB   r   nsr  s       r9   test_process_namespacez'TestTestingUtils.test_process_namespace;  sy    Nq!!
			@@"''"*--@@@CAFsuu      r<   c                     t                      }d |                    |j                  D             d         d         } |            t          j                    k    sJ d S )Nc                 *    g | ]}|d          dk    |S )r.   net_if_addrsrP   r  s     r9   r  z:TestTestingUtils.test_system_namespace.<locals>.<listcomp>D  s&    HHHQ11G1Gq1G1G1Gr<   r   )r$   ro   r  rm   r  )rB   r  r  s      r9   test_system_namespacez&TestTestingUtils.test_system_namespaceB  s^    HH"''"*--HHHKANsuu+--------r<   N)r`   ra   rb   r  r  rP   r<   r9   r  r  :  s2        ! ! !. . . . .r<   r  c                       e Zd Zd ZdS )TestOtherUtilsc                     t           t          j        dd          ddd                    sJ t          t                                rJ d S )Nr:   za b cr.   r   r=   )r   r  
namedtupletupler   s    r9   test_is_namedtuplez!TestOtherUtils.test_is_namedtupleI  sP    C[3E7CCAq!LLMMMMM )))))))r<   N)r`   ra   rb   r  rP   r<   r9   r  r  H  s#        * * * * *r<   r  )@__doc__r  r   r   rj   r   r   r   r{  rI  r  rm   psutil.testsr   r   r   psutil._commonr   r   r   psutil._compatr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r+   re   r   r   r   r   rc  r  rG  r  r  rP   r<   r9   <module>r     s   8 7          				                                 & & & & & & $ $ $ $ $ $ ( ( ( ( ( (       # # # # # # ! ! ! ! ! ! 1 1 1 1 1 1       # # # # # # ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' $ $ $ $ $ $ ) ) ) ) ) ) # # # # # #       ' ' ' ' ' ' $ $ $ $ $ $ 4 4 4 4 4 4 & & & & & & & & & & & &       * * * * * *       & & & & & &       ) ) ) ) ) ) # # # # # # $ $ $ $ $ $ ) ) ) ) ) ) ' ' ' ' ' ' " " " " " " ( ( ( ( ( ( & & & & & & % % % % % %B( B( B( B( B( B( B( B(J$ $ $ $ $ $ $ $P*# *# *# *# *#n *# *# *#ZI+ I+ I+ I+ I+~ I+ I+ I+XK1 K1 K1 K1 K1> K1 K1 K1\ h''H9 H9 H9 H9 H9~ H9 H9 ('H9Vs4 s4 s4 s4 s4^ s4 s4 s4l. . . . .~ . . .* * * * *^ * * * * *r<   