
    <|hK                        d dl mZmZmZ d dlZd dlmZ d dlZd dlmZ d dlmZ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ej"                        Z ej&                   eed      d       G d de             Z ej&                   eed      d       G d dej"                               Zedk(  r ej0                          yy)    )print_functionabsolute_importdivisionNpipe)os)Greenletjoinall)testing)mock)six)skipOnLibuvOnPyPyOnWinc                       e Zd Zej                  Zd Z eej                        Z
 eej                        Z ed      d        Zej                   d   dk  rd Zej                   dd d	k\  rd
 Zyy)	TestOS_tpc                     t               S Nr   selfs    T/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/tests/test__os.pyr   zTestOS_tp.pipe   s	    v    zSometimes times outc                 `   	
  j                         \  d
d} ||      dgdg		
 fd}
 fd}t        |      }|j                          t        |      }|j                  d       t	        ||g        j                  d   
        j                  d   	d          y )Ni@B s   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   c                      d   k7  r<d   z
  } dxx   j                  d t        | d             z  cc<   d   k7  r;y y Nr   i   )writemin)	bytesleftbufbyteswrittennbytesr   ws    r   producez/TestOS_tp._test_if_pipe_blocks.<locals>.produce&   sS    q/V+"\!_4	Q4::a5Jc)T6J1K#LL q/V+r   c                      d   k7  rBd   z
  } dxx   t        j                  t        | d                  z  cc<   d   k7  rAy y r   )lenreadr   )r   	bytesreadr   rr   s    r   consumez/TestOS_tp._test_if_pipe_blocks.<locals>.consume+   sP    A,&("Yq\1	!DIIaY1E$F GG A,&(r      )r   r	   startstart_laterr
   assertEqual)r   buffer_classblockr!   r'   producerconsumerr   r%   r   r   r&   r    s   `      @@@@@@r   _test_if_pipe_blockszTestOS_tp._test_if_pipe_blocks   s    yy{15!C	s	M 	M
	H
 G$G$Q 	8$%1v.1|A7r   r      c                 V    | j                  t        j                  j                         y r   )r0   r   builtinsbufferr   s    r   test_if_pipe_blocks_bufferz$TestOS_tp.test_if_pipe_blocks_buffer=   s    %%cll&9&9:r   N   )r6      c                 V    | j                  t        j                  j                         y r   )r0   r   r3   
memoryviewr   s    r   test_if_pipe_blocks_memoryviewz(TestOS_tp.test_if_pipe_blocks_memoryviewB   s    %%cll&=&=>r   )__name__
__module____qualname__	greentestLARGE_TIMEOUT__timeout__r   staticmethodr   tp_readr$   tp_writer   r   r0   sysversion_infor5   r:    r   r   r   r      s    ))K 

#D%E128 38> Q	; v%	? &r   r   make_nonblockingzOnly on POSIXc                       e Zd Zd Zd Z fdZd Zd Zd Zd Z	 e
j                  d       e
j                  d	      d
               Z e
j                  d       e
j                  d	      d               Z e
j                  d       e
j                  d      d               Z e
j                  d       e
j                  d      d               Z xZS )	TestOS_nbc                 .    t        j                  ||      S r   )r   nb_readr   fdcounts      r   r$   zTestOS_nb.readJ   s    zz"e$$r   c                 .    t        j                  ||      S r   )r   nb_writerL   s      r   r   zTestOS_nb.writeM   s    {{2u%%r   c                     t         t        |          \  }}t        j                  |       t        j                  |       ||fS r   )superrI   r   r   rG   )r   r&   r    	__class__s      r   r   zTestOS_nb.pipeP   s;    Y*,1
A
A!tr   c                 D    dd l }t               }|j                  |_         |S )Nr   )errnoOSErrorEINTR)r   rU   ignored_oserrors      r   _make_ignored_oserrorzTestOS_nb._make_ignored_oserrorV   s    !) %r   c                     |j                          |j                  }|j                  j                  }|j                  ||       |j                  }|j                  j                          y r   )assert_called_once_withreturn_valueloopioclose)r   mock_get_hubrM   eventhubr^   s         r   _check_hub_event_closedz!TestOS_nb._check_hub_event_closed]   sO    ,,.''XX[[
""2u-++-r   c                     | j                         dg|_        d} |||      }| j                  |d       | j                  |||       y )N*   d   )rY   side_effectr+   rc   )r   nb_funcnb_argmock_ior`   ra   rM   results           r   _test_event_closed_on_normal_ioz)TestOS_nb._test_event_closed_on_normal_iof   sK    #99;R@V$$$$\2u=r   c                     | j                         t               g|_        d}| j                  t              5   |||       d d d        | j	                  |||       y # 1 sw Y   xY w)Nrf   )rY   
ValueErrorrg   assertRaisesrc   )r   rh   ri   rj   r`   ra   rM   s          r   _test_event_closed_on_io_errorz(TestOS_nb._test_event_closed_on_io_errorp   s`    #99;Z\Jz* 	 B	  	$$\2u=	  	 s   
AA&zgevent.os.get_hubzgevent.os._writec                 J    | j                  t        j                  d||d       y N   bufr6   )rl   r   rP   r   
mock_writer`   s      r   test_event_closed_on_writez$TestOS_nb.test_event_closed_on_write{   s"     	,,R[[&-7-.	0r   c                 J    | j                  t        j                  d||d       y rr   )rp   r   rP   rt   s      r    test_event_closed_on_write_errorz*TestOS_nb.test_event_closed_on_write_error   s"     	++BKK,6,-	/r   zgevent.os._readc                 J    | j                  t        j                  d||d       y Nrs   r(   )rl   r   rK   r   	mock_readr`   s      r   test_event_closed_on_readz#TestOS_nb.test_event_closed_on_read   s"     	,,RZZ-6-.	0r   c                 J    | j                  t        j                  d||d       y rz   )rp   r   rK   r{   s      r   test_event_closed_on_read_errorz)TestOS_nb.test_event_closed_on_read_error   s"     	++BJJ,5|,-	/r   )r;   r<   r=   r$   r   r   rY   rc   rl   rp   r   patchrv   rx   r}   r   __classcell__)rS   s   @r   rI   rI   F   s    %&.>	> TZZ#$TZZ"#0 $ %0
 TZZ#$TZZ"#/ $ %/
 TZZ#$TZZ!"0 # %0
 TZZ#$TZZ!"/ # %/r   rI   fork_and_watchc                   6    e Zd Zej                  Zd Zd Zd Zy)TestForkAndWatchc                     t        j                         }|r,t        j                  dd       t        j                  d       y t	        j
                  d       t        j                  d       y )Nr   r6   )r   r   waitpid_reap_childrengeventsleep_exit)r   pids     r   test_waitpid_allz!TestForkAndWatch.test_waitpid_all   sI    !JJr1 a LLO HHQKr   c                 P    | j                  t        t        j                  dd       y )Nr   ro   rV   r   r   r   s    r   test_waitpid_wrong_negz'TestForkAndWatch.test_waitpid_wrong_neg   s    '2::r15r   c                 P    | j                  t        t        j                  dd       y )Nr(   r   r   r   s    r   test_waitpid_wrong_posz'TestForkAndWatch.test_waitpid_wrong_pos   s    '2::q!4r   N)	r;   r<   r=   r>   r?   r@   r   r   r   rF   r   r   r   r      s     ))K65r   r   __main__)
__future__r   r   r   rD   r   r   r   r	   r
   r   r>   gevent.testingr   r   gevent.testing.skippingr   TestCaser   
skipUnlesshasattrrI   r   r;   mainrF   r   r   <module>r      s    @ @ 
    $ '   :2?	"" 2?j gb"45%'M/	 M/'M/` gb"23%'5y)) 5'52 zINN r   