a
    xdJ                     @   s  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	T ddl
mZ dd	lmZ dd
lmZ ddlm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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S )0    N   )can_bind_ipv6)sleep)_core)aclose_forcefully)*)_assert_raises)_UnboundedByteQueue)socket)SocketListenerc               	      s   g   fdd}  fdd}t  4 I d H 4}||  || || W d   I d H  qv1 I d H sl0    Y  g   fdd}t  4 I d H *}|| |j  W d   I d H  q1 I d H s0    Y   dgksJ d S )Nc                     s*   t dD ]} t I d H  q d d S )N
   zbusy bee exhausted)ranger   
checkpointappend)_record O/var/www/html/Ranjet/env/lib/python3.9/site-packages/trio/tests/test_testing.pybusy_bee   s    z-test_wait_all_tasks_blocked.<locals>.busy_beec                      s   t  I d H   d d S )Nzquiet at last!wait_all_tasks_blockedr   r   r   r   r   waiting_for_bee_to_leave   s    z=test_wait_all_tasks_blocked.<locals>.waiting_for_bee_to_leavec                      s4   zt  I d H  W n tjy.    d Y n0 d S )Nok)r   r   	Cancelledr   r   r   r   r   cancelled_while_waiting&   s    z<test_wait_all_tasks_blocked.<locals>.cancelled_while_waitingr   )r   open_nursery
start_sooncancel_scopecancel)r   r   nurseryr   r   r   r   test_wait_all_tasks_blocked   s    

4
4r!   c              	      s   g   fdd}t  4 I d H `}|| t I d H   dgksFJ | d t I d H   ddgkslJ W d   I d H  q1 I d H s0    Y  d S )Nc                      s&     d tdI d H    d d S )Ntt start   tt finishedr   r   r   r   r   r   timeout_task5   s    
z?test_wait_all_tasks_blocked_with_timeouts.<locals>.timeout_taskr"   r   r$   )r   r   r   r   Zjump)Z
mock_clockr&   r    r   r   r   )test_wait_all_tasks_blocked_with_timeouts2   s    

r'   c               	      s   g   fdd}  fdd} fdd} fdd}t  4 I d H H}||  || || || || W d   I d H  q1 I d H s0    Y   g d	ksJ d S )
Nc                      sB     d tdI d H  tdI d H  tdI d H    d d S )Nblink startg{Gz?	blink endr%   r   r   r   r   blinkF   s
    
z7test_wait_all_tasks_blocked_with_cushion.<locals>.blinkc                      s   t  I d H   d d S )Nwait_no_cushion endr   r   r   r   r   wait_no_cushionM   s    zAtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_no_cushionc                      s   t dI d H   d d S )Ng{Gz?wait_small_cushion endr   r   r   r   r   wait_small_cushionQ   s    zDtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_small_cushionc                      s   t dI d H   d d S )NgQ?wait_big_cushion endr   r   r   r   r   wait_big_cushionU   s    zBtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_big_cushion)r(   r+   r)   r-   r-   r/   )r   r   r   )r*   r,   r.   r0   r    r   r   r   (test_wait_all_tasks_blocked_with_cushionC   s    



4r1   c              
      sB  t   t I d H  W d    n1 s*0    Y  tt6 t   W d    n1 s\0    Y  W d    n1 sz0    Y  tjtjfD ]h}t| ttB t   | I d H  W d    n1 s0    Y  W d    q1 s0    Y  qt  , t I d H  t I d H  W d    n1 s40    Y  d S N)	assert_checkpointsr   r   pytestraisesAssertionErrorcheckpoint_if_cancelledcancel_shielded_checkpointprintZrecwarnZpartial_yieldr   r   r   test_assert_checkpointsm   s    ,<Jr;   c              
      sn  t   W d    n1 s0    Y  ttD t   t I d H  W d    n1 s\0    Y  W d    n1 sz0    Y  tjtjfD ]h}t| ttB t   | I d H  W d    n1 s0    Y  W d    q1 s0    Y  qttT t  , t I d H  t I d H  W d    n1 s@0    Y  W d    n1 s`0    Y  d S r2   )	Zassert_no_checkpointsr4   r5   r6   r   r   r7   r8   r9   r:   r   r   r   test_assert_no_checkpoints   s     JJr<   c               
      s  g   fddfdd} fdd}t  }t 4 I d H }|| | ||| |d4 I d H " t I d H  W d   I d H  q1 I d H s0    Y   g dksJ W d   I d H  q1 I d H s0    Y  t  }|d	4 I d H  W d   I d H  q 1 I d H s0    Y  ttP |d	4 I d H  W d   I d H  ql1 I d H sb0    Y  W d    n1 s0    Y  d S )
Nc                    s   t |   |  d S r2   )r9   r   )valr   r   r   t   s    ztest_Sequencer.<locals>.tc              	      s   | d4 I d H   d W d   I d H  qD1 I d H s:0    Y  | d4 I d H   d W d   I d H  q1 I d H s~0    Y  | d4 I d H   d W d   I d H  q1 I d H s0    Y  d S )N   f1r?      rA   rB      rA   rD   r   seqr>   r   r   rA      s    22ztest_Sequencer.<locals>.f1c              	      s   | d4 I d H   d W d   I d H  qD1 I d H s:0    Y  | d4 I d H   d W d   I d H  q1 I d H s~0    Y  d S )Nr   f2r   r   rJ   r   r   rF   rH   r   r   rJ      s    2ztest_Sequencer.<locals>.f2r#   )rI   r@   rK   rC   rE   r   )	Sequencerr   r   r   r   r4   r5   RuntimeError)rA   rJ   rG   r    r   )r   r>   r   test_Sequencer   s"    6:.rN   c               
      s&  g  t   fdd} t 4 I d H j}|| d || d d4 I d H  W d   I d H  q~1 I d H st0    Y  W d   I d H  q1 I d H s0    Y   ddgksJ ttN d4 I d H  W d   I d H  q1 I d H s0    Y  W d    n1 s0    Y  d S )	Nc              
      s   t  }| dkr|  z@| 4 I d H  W d   I d H  qX1 I d H sN0    Y  W n" ty|    d|  Y n0 W d    n1 s0    Y  d S )Nr?   zseq({}) RuntimeError)r   ZCancelScoper   rM   r   format)iZscoper   rG   r   r   child   s    
.z$test_Sequencer_cancel.<locals>.childr?   r   r   zseq(1) RuntimeErrorzseq(2) RuntimeErrorrB   )rL   r   r   r   r4   r5   rM   )rR   r    r   rQ   r   test_Sequencer_cancel   s    
TrS   c                	      s   t t8 tt W d    n1 s*0    Y  W d    n1 sH0    Y  t t@ tt dd  W d    n1 s0    Y  W d    n1 s0    Y  tt tW d    n1 s0    Y  d S )NZfoor?   )r4   r5   r6   r   rM   	TypeErrorr   r   r   r   test__assert_raises   s    
<
D
rU   c               
      s  t    d  d  ddks,J  ddks>J  d   dksXJ ttj  d W d    n1 s0    Y  ttj    W d    n1 s0    Y  tt  d W d    n1 s0    Y   d	 t *  	dI d H d	ks"J W d    n1 s80    Y   d
  d t *  	dI d H dksxJ W d    n1 s0    Y  t (  	 I d H dksJ W d    n1 s0    Y   fdd}  fdd}t
 4 I d H 0}||d || d W d   I d H  qH1 I d H s>0    Y  ttjh t
 4 I d H 0}||d ||d W d   I d H  q1 I d H s0    Y  W d    n1 s0    Y     ttj  d W d    n1 s0    Y   ddks"J   dks4J  	dI d H dksNJ  	 I d H dksfJ    t  fdd}t
 4 I d H .}||d || W d   I d H  q1 I d H s0    Y  d S )N   123   456r?      1r   s   23456   789string   abc   defs   ghi   ds   efghic                    s   t  I d H   |  d S r2   )r   putdataubqr   r   putter  s    z'test__UnboundeByteQueue.<locals>.putterc                    s@   t  &   I d H | ksJ W d    n1 s20    Y  d S r2   )r3   get)expectra   r   r   getter  s    z'test__UnboundeByteQueue.<locals>.getter   xyzs   asdf   ---    c                      s   t  I d H     d S r2   )r   closer   )ubq2r   r   closer9  s    z'test__UnboundeByteQueue.<locals>.closer)r	   r^   
get_nowaitr4   r5   r   
WouldBlockrT   r3   rd   r   r   BusyResourceErrorrj   ClosedResourceError)rc   rf   r    rl   r   )rb   rk   r   test__UnboundeByteQueue   sX    


(&(
:

:8:Z*rq   c               	      s$  t  fdd  dI d H  ddks2J  dksBJ t   I d H  W d    n1 sl0    Y  ttj   W d    n1 s0    Y  ttj d W d    n1 s0    Y   dI d H  t (  I d H dksJ W d    n1 s$0    Y  d	 fd
d} t	 4 I d H ,}|
|  |
|  W d   I d H  q1 I d H s0    Y  dksJ t   I d H  W d    n1 s0    Y   I d H dksJ  I d H dksJ ttj  dI d H  W d    n1 s:0    Y  jd u sTJ jd u sdJ jd u stJ g fdd}fdd}fdd}t |||j|u sJ j|u sJ j|u sJ dI d H   I d H  tI d H    g dks J d S )Nc                    s:   t     | I d H  W d    n1 s,0    Y  d S r2   )r3   send_allr_   )mssr   r   do_send_allE  s    z*test_MemorySendStream.<locals>.do_send_allrV   r?   rX   s   23r   rW   r   c                      s4   z dI d H  W n t jy.   d7 Y n0 d S )N   xxxr?   )r   ro   r   )rt   resource_busy_countr   r   do_send_all_count_resourcebusy_  s    z=test_MemorySendStream.<locals>.do_send_all_count_resourcebusyru   ri   rh   c                      s      dksJ d d S )Nr[   send_all_hook)get_data_nowaitr   r   )mss2r   r   r   rx   |  s    z,test_MemorySendStream.<locals>.send_all_hookc                      s     d d S )N"wait_send_all_might_not_block_hookr   r   r   r   r   r{     s    zAtest_MemorySendStream.<locals>.wait_send_all_might_not_block_hookc                      s     d d S )N
close_hookr|   r   r   r   r   r}     s    z)test_MemorySendStream.<locals>.close_hookr[   )rx   r{   r}   r}   )MemorySendStreamry   r3   Zwait_send_all_might_not_blockr4   r5   r   rn   get_datar   r   acloserp   rx   r{   r}   rr   r   rj   )rw   r    rx   r{   r}   r   )rt   rs   rz   r   rv   r   test_MemorySendStreamB  sX    ,&(8
8..r   c               
      s  t    fdd}  d | dI d H dks2J | dI d H dksHJ  d | d I d H dkshJ ttjd t 4 I d H .}|| d || d W d   I d H  q1 I d H s0    Y  W d    n1 s0    Y   jd u sJ  d  	   	  | dI d H dks(J | dI d H d	ks@J | dI d H d	ksXJ ttj
  d
 W d    n1 s0    Y  fdd}g fdd}t ||j|u sJ j|u sJ d dI d H dksJ dI d H dksJ dI d H dks.J d d _dI d H dksXJ d t   I d H  W d    n1 s0    Y  dgksJ ttj
  dI d H  W d    n1 s0    Y  d S )Nc                    s:   t     | I d H W  d    S 1 s,0    Y  d S r2   )r3   receive_someZ	max_bytes)mrsr   r   do_receive_some  s    z1test_MemoryReceiveStream.<locals>.do_receive_somer[   r?      ar   s   bcr\   ri   rh   c                      s     d d S )Nru   )put_datar   )mrs2r   r   receive_some_hook  s    z3test_MemoryReceiveStream.<locals>.receive_some_hookc                      s     d d S )Nclosedr|   r   r   r   r   r}     s    z,test_MemoryReceiveStream.<locals>.close_hooks   yyys   yyyxxxru   s   zzzs   lost on closer   )MemoryReceiveStreamr   r4   r5   r   ro   r   r   r   Zput_eofrp   r}   r   r3   r   )r   r    r   r}   r   )r   r   r   r   test_MemoryReceiveStream  sN    

T
*



.r   c                     s   t  } |   ttj( | dI d H dks4J W d    n1 sH0    Y  |   ttj | d W d    n1 s0    Y  t  }|d |  ttj  |dI d H  W d    n1 s0    Y  d S )Nr   ri   rV   rg   )r   rj   r4   r5   r   rp   r   r   )r   r   r   r   r   test_MemoryRecvStream_closing  s    6(
r   c                     s   t  } t }t| | | dI d H  t| | |dI d H dksHJ | dI d H  t| |ddsjJ |dI d H dksJ t| |ddsJ t| |ddsJ t| |ddrJ |dI d H dksJ |   t| | |dI d H dksJ d S )	NrV   r   rW   r?   r      4s   56ri   )r~   r   Zmemory_stream_pumprr   r   rj   )rs   r   r   r   r   test_memory_stream_pump  s     


r   c               	      sn  t  \}  | jd usJ | jd u s&J | jd us4J  jd u sBJ | dI d H   dI d H dksjJ  fdd}t 4 I d H >}|	|d t
 I d H  | dI d H  W d   I d H  q1 I d H s0    Y  t 4 I d H >}|	|d t
 I d H  |  I d H  W d   I d H  q@1 I d H s60    Y  t  \}  t 4 I d H 8}|	|d t
 I d H  |   W d   I d H  q1 I d H s0    Y  t  \}  | j}d | _| dI d H  dd	 } fd
d}t 4 I d H .}|	|| |	| W d   I d H  q:1 I d H s00    Y  || _| dI d H   dI d H dksjJ d S )NrV   r   c                    s     dI d H | ksJ d S Nr   r   )expectedrr   r   receiver  s    z1test_memory_stream_one_way_pair.<locals>.receiverr[   ri   rW   c                    s   t  I d H  | j  d S r2   )r   r   r   )r    r   r   r   cancel_after_idle*  s    z:test_memory_stream_one_way_pair.<locals>.cancel_after_idlec                      s@   t tj   dI d H  W d    n1 s20    Y  d S r   )r4   r5   r   r   r   r   r   r   r   check_for_cancel.  s    z9test_memory_stream_one_way_pair.<locals>.check_for_cancelrY   s   456789)memory_stream_one_way_pairrx   r{   r}   r   rr   r   r   r   r   r   r   rj   )sr   r    oldr   r   r   r   r   test_memory_stream_one_way_pair  sB    
:<
6
8r   c               	      s   t  \  dI d H  dI d H  dI d H dksBJ  dI d H dksZJ   I d H  dI d H dksJ fdd}  fdd}t 4 I d H *}|| ||  W d   I d H  q1 I d H s0    Y  d S )	NrV   r[   r   ri   c                      s    t  I d H   dI d H  d S )Nrg   )r   rr   r   )br   r   senderG  s    z'test_memory_stream_pair.<locals>.senderc                      s     dI d H dksJ d S )Nr   rg   r   r   )ar   r   r   K  s    z)test_memory_stream_pair.<locals>.receiver)memory_stream_pairrr   r   Zsend_eofr   r   r   )r   r   r    r   )r   r   r   test_memory_stream_pair=  s    

r   c                     s4   dd } t | d I d H  dd }t|d I d H  d S )Nc                      s   t  S r2   )r   r   r   r   r   one_way_stream_makerT  s    zDtest_memory_streams_with_generic_tests.<locals>.one_way_stream_makerc                      s   t  S r2   )r   r   r   r   r   half_closeable_stream_makerY  s    zKtest_memory_streams_with_generic_tests.<locals>.half_closeable_stream_maker)check_one_way_streamZcheck_half_closeable_stream)r   r   r   r   r   &test_memory_streams_with_generic_testsS  s    r   c                     s4   dd } t | | I d H  dd }t||I d H  d S )Nc                      s   t  S r2   )Zlockstep_stream_one_way_pairr   r   r   r   r   `  s    zFtest_lockstep_streams_with_generic_tests.<locals>.one_way_stream_makerc                      s   t  S r2   )Zlockstep_stream_pairr   r   r   r   two_way_stream_makere  s    zFtest_lockstep_streams_with_generic_tests.<locals>.two_way_stream_maker)r   Zcheck_two_way_stream)r   r   r   r   r   (test_lockstep_streams_with_generic_tests_  s    r   c                     s,  dd } t  }|dI d H  |d | t|I d H  t  }|dI d H  |d | t|I d H  trt jt jd}|dI d H  |d | t|I d H  tt dr(t jt jd}t	
 F}d	|}||I d H  |d | t|I d H  W d    n1 s0    Y  d S )
Nc                    s   | 4 I d H  t | I d H }|4 I d H  |  I d H }|4 I d H : |dI d H  |dI d H dk W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  d S )N   xr?   )Zopen_stream_to_socket_listeneracceptrr   r   )ZlistenerZclient_streamZserver_streamr   r   r   checkl  s    z2test_open_stream_to_socket_listener.<locals>.check)z	127.0.0.1r   r   )z0.0.0.0r   )family)z::r   AF_UNIXz{}/sock)tsocketr
   bindlistenr   r   AF_INET6hasattrr   tempfileTemporaryDirectoryrO   )r   sockZtmpdirpathr   r   r   #test_open_stream_to_socket_listenerk  s*    






r   )$r   r4   Z_core.tests.tutilr    r   r   Z_highlevel_genericr   ZtestingZtesting._check_streamsr   Ztesting._memory_streamsr	   r
   r   Z_highlevel_socketr   r!   r'   r1   r;   r<   rN   rS   rU   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s8    *& HZ=8