o
    tPf                     @   s\   d dl mZ e  d dlZd dlZd dlmZ G dd deejZe	dkr,e
  dS dS )    )monkeyN)SubscriberCleanupMixinc                       st   e Zd ZdZ fddZ 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  ZS )
TestMonkeyNc                    sP   t t|   g | _| | jj i  | _}tj	 D ]
\}}|
 ||< qd S N)superr   setUp
all_eventsaddSubscriberappend
orig_savedr   saveditemscopy)selfr   kv	__class__ Z/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__monkey.pyr      s   
zTestMonkey.setUpc                    s"   | j t_| ` | `tt|   d S r   )r   r   r   r   r   r   tearDown)r   r   r   r   r      s   zTestMonkey.tearDownc                 C   (   dd l }ddlm } | |j|j d S )Nr   )time)r   geventassertIssleep)r   r   gtimer   r   r   	test_time      zTestMonkey.test_timec                 C   s   zdd l }W n ty   dd l}Y nw dd l}ddlm } | |j|j | |j|j | t	
dd tjd dkrdddlm} ddlm} | |j|j | t	
dd | |j| d S d S )	Nr   )thread	threadingEvent   )r    )r!   _Event)r   ImportError_threadr    r   r   start_new_thread_start_new_thread
assertTruer   is_object_patchedsysversion_infogevent.eventr!   _sleepr#   )r   r   r    gthread
gthreadingGEventr   r   r   test_thread!   s"   zTestMonkey.test_threadc                 C   r   )Nr   )socket)r2   r   r   create_connection)r   r2   gevent_socketr   r   r   test_socket6   r   zTestMonkey.test_socketc                 C   s|   dd l }dd l}ddlm } dD ]+}t||r;t||}| dt| | ||j | 	||j
 | |t|| qd S )Nr   os)forkforkptyzbuilt-in)r7   typesr   hasattrgetattrassertNotInreprassertNotIsInstanceBuiltinFunctionTypeassertIsInstanceFunctionTyper   )r   r7   r:   gosnameattrr   r   r   test_os;   s   

zTestMonkey.test_osc                 C   sP   |  tj tj D ]\}}|  t| |D ]}|  t|| qqd S r   )r(   r   r   r   is_module_patchedr)   )r   modnameobjectsobjnamer   r   r   
test_savedG   s   zTestMonkey.test_savedc                 C   sP   t dd}| dt| | |t dd t   | |t dd d S )N
subprocessPopenr   )r   get_originalr=   r>   r   patch_subprocess)r   rM   r   r   r   test_patch_subprocess_twiceO   s
   z&TestMonkey.test_patch_subprocess_twicec                 C   s8  dd l }| j}|jddT}tjddd | t|d | dt|d j	 | |g  |d d = tjdd	 | t|d | dt|d j	 | |g  tj
d
 | jd
< W d    n1 sdw   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 qd S )Nr   T)recordF*   )r7   extra_kwarg   zmore than oncer6   '_gevent_saved_patch_all_module_settingsloggingr    r   )warningsr   catch_warningsr   	patch_allassertEquallenassertInstrmessager   r   r   r=   )r   rW   r   issued_warningsr   r   r   r   r    test_patch_twice_warnings_eventsV   s,   
z+TestMonkey.test_patch_twice_warnings_eventsc                    s>  ddl m  ddlm} | j} fdd}| | i t_tjd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 ]}| t| jo|jdk qd S )Nr   events)verifyc                    s$   t |  jr| jdkr jd S d S )Nssl)
isinstanceGeventWillPatchModuleEventmodule_name
DoNotPatch)eventra   r   r   veto~   s   z*TestMonkey.test_patch_events.<locals>.vetoFrR   )r   selectrS   rS   rT   r"   rd   )r   rb   gevent.testingrc   r   r	   r   r   rY   rA   GeventWillPatchAllEventrZ   patch_all_kwargsverifyObjectIGeventWillPatchAllEventrf   IGeventWillPatchModuleEventGeventDidPatchModuleEvent!GeventDidPatchBuiltinModulesEvent"IGeventDidPatchBuiltinModulesEventGeventDidPatchAllEventIGeventDidPatchAllEventassertFalsere   rg   )r   rc   r   rj   er   ra   r   test_patch_eventsy   s.   
zTestMonkey.test_patch_eventsc                 C   sL   zdd l }W n ty   d }Y nw t|dstd| |j|j d S )Nr   SimpleQueuezNeeds SimpleQueue)queuer$   r;   unittestSkipTestr   r|   _PySimpleQueue)r   r}   r   r   r   test_patch_queue   s   

zTestMonkey.test_patch_queue)__name__
__module____qualname__maxDiffr   r   r   r1   r5   rF   rK   rP   r`   r{   r   __classcell__r   r   r   r   r      s    
#!r   __main__)r   r   rY   r*   r~   gevent.testing.testcaser   TestCaser   r   mainr   r   r   r   <module>   s      