
    <|hB                         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                          yy)    )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                  j
                         i x| _        }t        j                  j                         D ]  \  }}|j                         ||<    y N)superr   setUp
all_eventsaddSubscriberappend
orig_savedr   saveditemscopy)selfr   kv	__class__s       X/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/tests/test__monkey.pyr
   zTestMonkey.setUp   sj    j$%'4??112'))*LL&&( 	%DAqFFHJqM	%    c                 \    | j                   t        _        | ` | `t        t
        |           y r   )r   r   r   r   r	   r   tearDown)r   r   s    r   r   zTestMonkey.tearDown   s%    OOj$(*r   c                 d    dd l }ddlm } | j                  |j                  |j                         y )Nr   )time)r   geventassertIssleep)r   r   gtimes      r   	test_timezTestMonkey.test_time   s    (djj%++.r   c                    dd l }dd l}ddlm} | j	                  |j
                  |j
                         t        j                  d d dk  r'| j	                  |j                  |j
                         n&| j	                  |j                  |j                         | j                  t        j                  dd             t        j                  d   dk(  rtddlm} ddlm} | j	                  |j                   |j                          | j                  t        j                  dd	             | j	                  |j"                  |       y y )
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!   s     ,f--w/G/GHBQ')MM)55w7O7OPMM)::G<Y<YZ 	00gFGA!#64MM)**J,=,=>OOF44[(KLMM)**F3 $r   c                 d    dd l }ddlm } | j                  |j                  |j                         y )Nr   )socket)r9   r   r   create_connection)r   r9   gevent_sockets      r   test_socketzTestMonkey.test_socket6   s"    2f..0O0OPr   c                 >   dd l }dd l}ddlm } dD ]  }t        ||      st	        ||      }| j                  dt        |             | j                  ||j                         | j                  ||j                         | j                  |t	        ||              y )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    $' 	8Dr4 r4(  T$Z8((u/H/HI%%dE,>,>?dGC$67	8r   c                 .   | j                  t        j                         t        j                  j                         D ]U  \  }}| j                  t        j                  |             |D ]'  }| j                  t        j
                  ||             ) W y r   )r0   r   r   r   is_module_patchedr1   )r   modnameobjectsobjnames       r   
test_savedzTestMonkey.test_savedG   sv    % & 2 2 4 	LGWOOF44W=>" L 8 8' JKL	Lr   c                 &   t        j                  dd      }| j                  dt        |             | j	                  |t        j                  dd             t        j
                          | j	                  |t        j                  dd             y )N
subprocessPopenr   )r   get_originalrE   rF   r   patch_subprocess)r   rW   s     r   test_patch_subprocess_twicez&TestMonkey.test_patch_subprocess_twiceO   sj    ##L':4;/eV00wGH!eV00wGHr   c                    dd l }| j                  }|j                  d      5 }t        j                  dd       | j                  t        |      d       | j                  dt        |d   j                               | j                  |g        |d d = t        j                  d	       | j                  t        |      d       | j                  dt        |d   j                               | j                  |g        t        j                  d
   | j                  d
<   d d d        dt        j                  v r.d| j                  vr t        j                  d   | j                  d<   | j                  | j                  t        j                         t        j                  d   j                         D ]#  \  }}| j                  dt        |      ||f       % y # 1 sw Y   xY w)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 	;_ 26S115MM*C0B0J0J,KLZ,  "&S115MM*C0B0J0J,KLZ,IO9J;DOOEF	;( $$//)I)/i)@DOOI&&,,7 LL-335 	7DAqXs1v1v6	77	; 	;s   C=GG#c                    ddl m ddlm} | j                  }fd}| j                  |       i t        _        t        j                  ddd       | j                  |d   j                         | j                  ddi|d   j                         |j                  j                  |d          | j                  |d	   j                         |j                  j                   |d	          | j                  |d
   j"                         |j                  j                   |d	          | j                  |d   j$                         |j                  j&                  |d          | j                  |d   j(                         |j                  j*                  |d          |D ]8  }| j-                  t/        |j"                        xr |j0                  dk(         : y )Nr   )events)verifyc                 j    t        | j                        r| j                  dk(  rj                  y y )Nssl)
isinstanceGeventWillPatchModuleEventmodule_name
DoNotPatch)eventrm   s    r   vetoz*TestMonkey.test_patch_events.<locals>.veto~   s7    %!B!BCHYHY]bHb''' IcCr   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jmV-K-KL-,jm.L.LMF;;Z]KjmV-N-NOF>>
1NjmV-M-MNF>>
1Njnf.V.VWFEEzRT~Vjnf.K.KLF::JrNK 	9AZ6+K+KL 8!"%!79	9r   c                     	 dd l }t        |d      st        j                  d      | j                  |j                  |j                         y # t        $ r d }Y Uw xY w)Nr   SimpleQueuezNeeds SimpleQueue)queueImportErrorrC   unittestSkipTestr   r   _PySimpleQueue)r   r   s     r   test_patch_queuezTestMonkey.test_patch_queue   sZ    	 um,##$788e'')=)=>  	 E		s   A AA)__name__
__module____qualname__maxDiffr
   r   r    r7   r<   rN   rT   rZ   rk   r   r   __classcell__)r   s   @r   r   r      sD    G%+/
4*Q

8LI!7F9B?r   r   __main__)r   r   rd   r+   r   gevent.testing.testcaser   TestCaser   r   main r   r   <module>r      sQ         
  :]?'):): ]?~ zHMMO r   