
    o                    N   % S SK Jr  S SKrS SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
r
S SKJrJrJrJrJrJr  \R$                  \\4   r\R(                  S\4   r\
R.                  SS j5       r\\/rS\S	'   \" 5       (       a  \R7                  \5        \
R8                  R;                  S
\5      SS j5       rSS jr\
R8                  RA                  \!" \S5      (       + SS9\
R8                  R;                  S
\5      SS j5       5       r"\
R8                  RA                  \!" \S5      (       + SS9\
R8                  R;                  S
\5      SS j5       5       r#\
R8                  RA                  \!" \S5      (       + SS9\
R8                  R;                  S
\5      SS j5       5       r$g)    )annotationsN)socket
socketpair)	FrameType)_have_working_pollpoll_wait_for_socketselect_wait_for_socketwait_for_readwait_for_socketwait_for_write.c               #  n   #    [        5       u  pX4v   U R                  5         UR                  5         g 7f)N)r   close)abs     5platform/gsutil/third_party/urllib3/test/test_wait.pyspairr      s'     <DA
$JGGIGGIs   35zlist[TYPE_WAIT_FOR]variantswfsc                   Uu  p#[         R                  " [        5         U " USSS9  S S S 5        U " USSS9(       a   eU " USSS9(       d   eUR                  S5        U " USSS9(       d   eU " USSS9(       d   eU " USS S9(       d   eUR	                  S5          UR                  SS	-  5        M  ! , (       d  f       N= f! [
         a     Of = fU " USSS9(       a   eU " USSSS
9(       d   eUR                  S5      S:X  d   eU " USSSS
9(       a   eUR                  5         U " USSS9(       d   e[         R                  " [        5         U " USS9  S S S 5        g ! , (       d  f       g = f)NF)readwriteTr   r   timeout)r   r      x
   ?B )r   r   r      r   )	pytestraisesRuntimeErrorsendsetblockingOSErrorrecvr   	Exception)r   r   r   r   s       r   test_wait_for_socketr'   &   sk   DA	|	$AE' 
% 14+++qa(((FF4LqtQ'''qtR(((qtT*** MM%FF4&=!  
%	$    1D!,,, qt4333 66!914tQ777 GGIqtQ'''
 
y	!AD 
"	!	!s)   	B5C 5
C
CCE&&
E4c                ^   U u  p[        US5      (       a   e[        US5      (       d   eUR                  S5        [        US5      (       d   e[        US5      (       d   eUR                  S5          UR                  SS-  5        M  ! [         a     Of = f[        US5      (       a   eg )Nr   r   Fr   )r
   r   r"   r#   r$   )r   r   r   s      r   test_wait_for_read_writer)   R   s    DAQ""""!QFF4LA!Q MM%FF4&=!   a#####s   4B 
BB	setitimerzneed setitimer() support)reasonc                  ^	 Uu  p#S/m	S	U	4S jjn[         R                   " [         R                  U5      n U " USSS9(       a   e[        R                  " 5       n [         R                  " [         R
                  SS5        U " USSS9  [         R                  " [         R
                  S5        [        R                  " 5       nXv-
  nSUs=:  a  S:  d   e   e [         R                   " [         R                  U5        T	S   S:  d   eg ! [         R                  " [         R
                  S5        f = f! [         R                   " [         R                  U5        f = f)
Nr   c                L   > U [         R                  :X  d   eTS==   S-  ss'   g Nr   r   signalSIGALRMsigframeinterrupt_counts     r   handlertest_eintr.<locals>.handlero   %    fnn$$$a    Tr   皙?r   ?   r3   intr4   zFrameType | Nonereturnz
typing.Any)r0   r1   time	monotonicr*   ITIMER_REAL)
r   r   r   r   r6   old_handlerstartenddurr5   s
            @r   
test_eintrrG   i   s    DAcO  --8K3qtQ/// 	4V//c:a( V//3nnkS}1}}}fnnk21!!! V//3
 	fnnk2s$   $D6 .D 
AD6 'D33D6 6'Ec                  ^ Uu  p#S/mSU4S jjn[         R                   " [         R                  U5      n U " USSS9(       a   e [         R                  " [         R                  SS5        [        R
                  " 5       S-   n[        S5       H&  nU " USSS9  [        R
                  " 5       U:  d  M&    O   [         R                  " [         R                  S5         [         R                   " [         R                  U5        TS   S:  d   eg ! [         R                  " [         R                  S5        f = f! [         R                   " [         R                  U5        f = f)	Nr   c                L   > U [         R                  :X  d   eTS==   S-  ss'   g r.   r/   r2   s     r   r6   (test_eintr_zero_timeout.<locals>.handler   r8   r9   Tr   gMbP?   i r=   )r0   r1   r*   rB   r@   rA   range)	r   r   r   r   r6   rC   rE   ir5   s	           @r   test_eintr_zero_timeoutrN      s    DAcO  --8K3qtQ///	4 V//> .."Q&C6]AD!,>>#s* # V//3fnnk21!!!	 V//3fnnk2s*   D; A+D 6D :%D; 'D88D; ;'E"c                Z  ^
^ Uu  nm
S/mSU4S jjnSU
4S jjn[         R                   " [         R                  U5      n U " USSS9(       a   e[        R                  " 5       n [         R                  " [         R
                  SS5        [        R                  " US9nUR                  5         U " USS9  [         R                  " [         R
                  S5        UR                  5         [        R                  " 5       nX-
  n	S	U	s=:  a  S
:  d   e   e [         R                   " [         R                  U5        TS   S:  d   eg ! [         R                  " [         R
                  S5        WR                  5         f = f! [         R                   " [         R                  U5        f = f)Nr   c                L   > U [         R                  :X  d   eTS==   S-  ss'   g r.   r/   r2   s     r   r6   ,test_eintr_infinite_timeout.<locals>.handler   r8   r9   c                 T   > [         R                  " S5        T R                  S5        g )Nr   r   )r@   sleepr"   )r   s   r    make_a_readable_after_one_secondEtest_eintr_infinite_timeout.<locals>.make_a_readable_after_one_second   s    

1	tr9   Tr   r:   )targetr   r;   r<   r=   )r?   None)
r0   r1   r@   rA   r*   rB   	threadingThreadrD   join)r   r   r   r6   rT   rC   rD   threadrE   rF   r   r5   s             @@r   test_eintr_infinite_timeoutr\      s?    DAqcO  --8K3qtQ/// 
	V//c:%%-MNFLLN V//3KKMnnkS}1}}}fnnk21!!! V//3KKM
 	fnnk2s&   $F &AE	 7A F 	7F  F 'F*)r?   z.typing.Generator[TYPE_SOCKET_PAIR, None, None])r   TYPE_WAIT_FORr   TYPE_SOCKET_PAIRr?   rW   )r   r^   r?   rW   )%
__future__r   r0   rX   r@   typingr   r   typesr   r   urllib3.util.waitr   r   r	   r
   r   r   Tupler^   Callableboolr]   fixturer   r   __annotations__appendmarkparametrizer'   r)   skipifhasattrrG   rN   r\    r9   r   <module>rn      s   "     %    <</ T	*   "12H I
 IOO() )( *(V$. 44=WX)" * Y": 44=WX)" * Y"@ 44=WX)!" * Y!"r9   