
    i                         d dl mZ  ej                     d dlZd dlZd dlmZ  G d deej                  Ze	dk    r ej
                     dS dS )    )monkeyN)SubscriberCleanupMixinc                   b     e Zd ZdZ fdZ fdZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z xZS )
TestMonkeyNc                 *   t          t          |                                            g | _        |                     | j        j                   i x| _        }t          j        	                                D ]\  }}|
                                ||<   d S N)superr   setUp
all_eventsaddSubscriberappend
orig_savedr   saveditemscopy)selfr   kv	__class__s       D/usr/local/lib/python3.11/dist-packages/gevent/tests/test__monkey.pyr
   zTestMonkey.setUp   s    j$%%'''4?1222'))*L&&(( 	% 	%DAqFFHHJqMM	% 	%    c                     | j         t          _        | ` | `t	          t
          |                                            d S r   )r   r   r   r   r	   r   tearDown)r   r   s    r   r   zTestMonkey.tearDown   s8    OOj$((*****r   c                 Z    dd l }ddlm } |                     |j        |j                   d S )Nr   )time)r   geventassertIssleep)r   r   gtimes      r   	test_timezTestMonkey.test_time   s;    ((((((dj%+.....r   c                 r   dd l }dd l}ddlm} |                     |j        |j                   t          j        d d         dk     r!|                     |j        |j                   n |                     |j	        |j
                   |                     t          j        dd                     t          j        d         dk    rqddlm} ddlm} |                     |j        |j                   |                     t          j        dd	                     |                     |j        |           d S d S )
Nr   )thread   )      	threadingEvent)r&   )r'   _Event)_threadr&   r   r"   r   start_new_threadsysversion_info_start_new_thread_start_joinable_threadstart_joinable_thread
assertTruer   is_object_patchedgevent.eventr'   _sleepr(   )r   r"   r&   gthread
gthreadingGEvents         r   test_threadzTestMonkey.test_thread!   sJ       ,,,,,,f-w/GHHHBQB'))MM)5w7OPPPPMM):G<YZZZ 	0gFFGGGA!##666666444444MM)*J,=>>>OOF4[(KKLLLMM)*F33333 $#r   c                 Z    dd l }ddlm } |                     |j        |j                   d S )Nr   )socket)r9   r   r   create_connection)r   r9   gevent_sockets      r   test_socketzTestMonkey.test_socket6   s=    222222f.0OPPPPPr   c                 f   dd l }dd l}ddlm } dD ]}t          ||          rt	          ||          }|                     dt          |                     |                     ||j                   | 	                    ||j
                   |                     |t	          ||                     d S )Nr   os)forkforkptyzbuilt-in)r?   typesr   hasattrgetattrassertNotInreprassertNotIsInstanceBuiltinFunctionTypeassertIsInstanceFunctionTyper   )r   r?   rB   gosnameattrs         r   test_oszTestMonkey.test_os;   s    			$$$$$$' 	8 	8Dr4   8r4((  T$ZZ888((u/HIII%%dE,>???dGC$6$6777	8 	8r   c                 4   |                      t          j                   t          j                                        D ]Y\  }}|                      t          j        |                     |D ]*}|                      t          j        ||                     +Zd S r   )r0   r   r   r   is_module_patchedr1   )r   modnameobjectsobjnames       r   
test_savedzTestMonkey.test_savedG   s    %%% & 2 2 4 4 	L 	LGWOOF4W==>>>" L L 8' J JKKKKL	L 	Lr   c                 @   t          j        dd          }|                     dt          |                     |                     |t          j        dd                     t          j                     |                     |t          j        dd                     d S )N
subprocessPopenr   )r   get_originalrE   rF   r   patch_subprocess)r   rW   s     r   test_patch_subprocess_twicez&TestMonkey.test_patch_subprocess_twiceO   s    #L'::4;;///eV0wGGHHH!!!eV0wGGHHHHHr   c                    dd l }| j        }|                    d          5 }t          j        dd           |                     t          |          d           |                     dt          |d         j	                             |                     |g            |d d = t          j        d	           |                     t          |          d           |                     dt          |d         j	                             |                     |g            t          j
        d
         | j        d
<   d d d            n# 1 swxY w Y   dt          j
        v r#d| j        vrt          j
        d         | j        d<   |                     | j        t          j
                   t          j
        d                                         D ]+\  }}|                     dt          |          ||f           ,d S )Nr   T)recordF*   )r?   extra_kwarg   zmore than oncer>   '_gevent_saved_patch_all_module_settingsloggingr&   r   )warningsr   catch_warningsr   	patch_allassertEquallenassertInstrmessager   r   r   rE   )r   rb   r   issued_warningsr   r   s         r    test_patch_twice_warnings_eventsz+TestMonkey.test_patch_twice_warnings_eventsV   s   _
$$D$11 	;_ 26666S111555MM*C0B0J,K,KLLLZ,,,  "&&&&S111555MM*C0B0J,K,KLLLZ,,,IO9J;DOEF	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;( $$$/)I)I)/i)@DOI&&,777 L-3355 	7 	7DAqXs1vv1v6666	7 	7s   DEEEc                    ddl m ddlm} | j        }fd}|                     |           i t          _        t          j        ddd           | 	                    |d         j
                   |                     ddi|d         j                   |                    j        |d                    | 	                    |d	         j                   |                    j        |d	                    | 	                    |d
         j                   |                    j        |d	                    | 	                    |d         j                   |                    j        |d                    | 	                    |d         j                   |                    j        |d                    |D ]5}|                     t/          |j                  o
|j        dk               6d S )Nr   )events)verifyc                 Z    t          | j                  r| j        dk    r	j        d S d S )Nssl)
isinstanceGeventWillPatchModuleEventmodule_name
DoNotPatch)eventrm   s    r   vetoz*TestMonkey.test_patch_events.<locals>.veto~   s?    %!BCC (HY]bHbHb''( (HbHbr   Fr]   )r"   selectr^   r^   r_   r#   rp   )r   rm   gevent.testingrn   r   r   r   r   rd   rI   GeventWillPatchAllEventre   patch_all_kwargsverifyObjectIGeventWillPatchAllEventrr   IGeventWillPatchModuleEventGeventDidPatchModuleEvent!GeventDidPatchBuiltinModulesEvent"IGeventDidPatchBuiltinModulesEventGeventDidPatchAllEventIGeventDidPatchAllEventassertFalserq   rs   )r   rn   r   rv   erm   s        @r   test_patch_eventszTestMonkey.test_patch_eventsy   s   !!!!!!))))))_
	( 	( 	( 	( 	( 	4   eDDDDjmV-KLLL-,jm.LMMMF;Z]KKKjmV-NOOOF>
1NNNjmV-MNNNF>
1NNNjnf.VWWWFEzRT~VVVjnf.KLLLF:JrNKKK 	9 	9AZ6+KLL 8!"%!79 9 9 9	9 	9r   c                    dd l }dd lm } |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   d S )Nr   )queuegevent.queuer   SimpleQueue	LifoQueueQueuePriorityQueue)r   r   gqs      r   test_patch_queuezTestMonkey.test_patch_queue   s    !!!!!! 	e'888eor|444ek28,,,e)2+;<<<<<r   )__name__
__module____qualname__maxDiffr
   r   r    r7   r<   rN   rT   rZ   rk   r   r   __classcell__)r   s   @r   r   r      s        G% % % % %+ + + + +/ / /
4 4 4*Q Q Q

8 
8 
8L L LI I I!7 !7 !7F9 9 9B= = = = = = =r   r   __main__)r   r   rd   r+   unittestgevent.testing.testcaser   TestCaser   r   main r   r   <module>r      s               



  : : : : : :Z= Z= Z= Z= Z='): Z= Z= Z=x zHMOOOOO r   