
    <eݛ                         d Z ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ 	 ddlZn# e$ r dZY nw xY wddlZddlmZ d Z G d dej                  Zed	k    r ej                     dS dS )
zTests for streams.py.    N)mock)socket_helper)utilsc                  .    t          j        d            d S N)asyncioset_event_loop_policy     5/usr/lib/python3.11/test/test_asyncio/test_streams.pytearDownModuler      s    !$'''''r   c                       e Zd ZdZ fdZ fdZd Zd Zej	        d             Z
d Z ej        edu d	          d
             Zej	         ej        edu d	          d                         Zd Zd Zej	        d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4ej	        d0             Z5 ej        edu d	          d1             Z6 ej        e7j8        d2k    d3          d4             Z9d5 Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZDd@ ZEdA ZFdB ZGdC ZHdD ZIdE ZJdF ZKdG ZLdH ZMdI ZNdJ ZO xZPS )KStreamTestss   line1
line2
line3
c                     t                                                       t          j                    | _        |                     | j                   d S r   )supersetUpr   new_event_looploopset_event_loopself	__class__s    r   r   zStreamTests.setUp   s@    *,,	DI&&&&&r   c                     t          j        | j                   | j                                         t	          j                     t                                                       d S r   )
test_utilsrun_brieflyr   closegccollectr   tearDownr   s    r   r   zStreamTests.tearDown#   sO    ty)))	

r   c                 2   g | j                             fd           | j                             |          \  }}|                    d           |                                }| j                             |          }|                     |d           |                                }| j                             |          }|                     |                    d                     |	                                 |                     g            d S )Nc                 .                         |          S r   appendr   ctxmessagess     r   <lambda>z7StreamTests._basetest_open_connection.<locals>.<lambda>-       (//#:N:N r      GET / HTTP/1.0

   HTTP/1.0 200 OK
   

Test message)
r   set_exception_handlerrun_until_completewritereadlineassertEqualread
assertTrueendswithr   r   open_connection_futreaderwriterfdatar&   s         @r   _basetest_open_connectionz%StreamTests._basetest_open_connection+   s    	''(N(N(N(NOOO556IJJ.///OOy++A..5666KKMMy++A..&=>>???2&&&&&r   c                     t          j                    5 }t          j        |j         }|                     |           d d d            d S # 1 swxY w Y   d S r   )r   run_test_serverr   open_connectionaddressr:   r   httpdconn_futs      r   test_open_connectionz StreamTests.test_open_connection9   s    ')) 	5U.>H**8444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5   )A

AAc                     t          j                    5 }t          j        |j                  }|                     |           d d d            d S # 1 swxY w Y   d S r   )r   run_test_unix_serverr   open_unix_connectionr>   r:   r?   s      r   test_open_unix_connectionz%StreamTests.test_open_unix_connection>   s    ,.. 	5%3EMBBH**8444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5   /AAAc                    g | j                             fd           	 | j                             |          \  }}t          j        d            n# t          j        d            w xY w|                    d           |                                }| j                             |          }|                     |                    d                     |	                                 | 
                    g            d S )Nc                 .                         |          S r   r"   r$   s     r   r'   zCStreamTests._basetest_open_connection_no_loop_ssl.<locals>.<lambda>F   r(   r   r)   r+   )r   r,   r-   r   r   r.   r1   r2   r3   r   r0   r4   s         @r   %_basetest_open_connection_no_loop_sslz1StreamTests._basetest_open_connection_no_loop_sslD   s    	''(N(N(N(NOOO	)!Y99:MNNNFF"4((((G"4((((.///KKMMy++A..&=>>???2&&&&&s   A A*NzNo ssl modulec                     t          j        d          5 }t          j        |j        dt          j                    i}|                     |           d d d            d S # 1 swxY w Y   d S )NTuse_sslssl)r   r<   r   r=   r>   dummy_ssl_contextrK   r?   s      r    test_open_connection_no_loop_sslz,StreamTests.test_open_connection_no_loop_sslS   s    '555 	A.40224 4H 66x@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   =A  A$'A$c                     t          j        d          5 }t          j        |j        t          j                    d          }|                     |           d d d            d S # 1 swxY w Y   d S )NTrM    )rO   server_hostname)r   rE   r   rF   r>   rP   rK   r?   s      r   %test_open_unix_connection_no_loop_sslz1StreamTests.test_open_unix_connection_no_loop_ssl\   s     ,T::: 	Ae3022 "  H 66x@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   AA&&A*-A*c                    g | j                             fd           | j                             |          \  }}|j                            t                                 |                                }|                     t
                    5  | j                             |           d d d            n# 1 swxY w Y   |                                 t          j
        | j                    |                     g            d S )Nc                 .                         |          S r   r"   r$   s     r   r'   z=StreamTests._basetest_open_connection_error.<locals>.<lambda>j   r(   r   )r   r,   r-   	_protocolconnection_lostZeroDivisionErrorr1   assertRaisesr   r   r   r0   )r   r5   r6   r7   r8   r&   s        @r   _basetest_open_connection_errorz+StreamTests._basetest_open_connection_errorh   s)   	''(N(N(N(NOOO556IJJ(():)<)<===KKMM011 	, 	,I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,ty)))2&&&&&s   B99B= B=c                     t          j                    5 }t          j        |j         }|                     |           d d d            d S # 1 swxY w Y   d S r   )r   r<   r   r=   r>   r\   r?   s      r   test_open_connection_errorz&StreamTests.test_open_connection_errort   s    ')) 	;U.>H00:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;rC   c                     t          j                    5 }t          j        |j                  }|                     |           d d d            d S # 1 swxY w Y   d S r   )r   rE   r   rF   r>   r\   r?   s      r   test_open_unix_connection_errorz+StreamTests.test_open_unix_connection_errory   s    ,.. 	;%3EMBBH00:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;rH   c                     t          j        | j                  }|                    d           |                     d|j                   d S Nr   r   )r   StreamReaderr   	feed_datar0   _bufferr   streams     r   test_feed_empty_dataz StreamTests.test_feed_empty_data   sI    %49555fn-----r   c                     t          j        | j                  }|                    | j                   |                     | j        |j                   d S Nrc   )r   rd   r   re   DATAr0   rf   rg   s     r   test_feed_nonempty_dataz#StreamTests.test_feed_nonempty_data   sM    %49555###FN33333r   c                 4   t          j        | j                  }|                    | j                   | j                            |                    d                    }|                     d|           |                     | j        |j                   d S )Nrc   r   r   )	r   rd   r   re   rl   r-   r1   r0   rf   r   rh   r9   s      r   test_read_zerozStreamTests.test_read_zero   s    %49555###y++FKKNN;;d###FN33333r   c                 x    t          j         j                   j                                                d                    } fd} j                            |            j                            |          }                      j        |                                dj	                   d S )Nrc      c                  <                          j                   d S r   re   rl   rg   s   r   cbz!StreamTests.test_read.<locals>.cb   s    TY'''''r   r   )
r   rd   r   create_taskr1   	call_soonr-   r0   rl   rf   r   	read_taskru   r9   rh   s   `   @r   	test_readzStreamTests.test_read   s    %49555I))&++b//::		( 	( 	( 	( 	( 	(	By++I66D)))fn-----r   c                 J   t          j        | j                  }|                    d           |                    d           | j                            |                    d                    }|                     d|           |                     d|j                   d S )Nrc   s   line1s   line2   r   rd   r   re   r-   r1   r0   rf   ro   s      r   test_read_line_breaksz!StreamTests.test_read_line_breaks   s    %49555""""""y++FKKNN;;4(((6>22222r   c                 j   t          j        | j                  | j                                                d                    }fd}| j                            |           | j                            |          }|                     d|           |                     dj                   d S )Nrc   i   c                  0                                       d S r   )feed_eofrh   s   r   ru   z%StreamTests.test_read_eof.<locals>.cb   s    OOr   r   	r   rd   r   rv   r1   rw   r-   r0   rf   rx   s       @r   test_read_eofzStreamTests.test_read_eof   s    %49555I))&++d*;*;<<		 	 	 	 		By++I66d###fn-----r   c                 j   t          j        | j                  | j                                                d                    }fd}| j                            |           | j                            |          }|                     d|           |                     dj                   d S )Nrc   c                                            d                                 d                                             d S )Ns   chunk1
   chunk2re   r   r   s   r   ru   z+StreamTests.test_read_until_eof.<locals>.cb   sA    [)))Y'''OOr   s   chunk1
chunk2r   r   rx   s       @r   test_read_until_eofzStreamTests.test_read_until_eof   s    %49555I))&++b//::		 	 	 	 	 		By++I66*D111fn-----r   c                    t          j        | j                  }|                    d           | j                            |                    d                    }|                     d|           |                    t                                 | 	                    t          | j        j        |                    d                     d S Nrc      line
      li)
r   rd   r   re   r-   r1   r0   set_exception
ValueErrorr[   ro   s      r   test_read_exceptionzStreamTests.test_read_exception   s    %49555###y++FKKNN;;%%%Z\\***	4fkk!nn	F 	F 	F 	F 	Fr   c                 @   |                      t          d          5  t          j        d| j                   d d d            n# 1 swxY w Y   |                      t          d          5  t          j        d| j                   d d d            d S # 1 swxY w Y   d S )Nimitr   limitr   r   )assertRaisesRegexr   r   rd   r   r   s    r   test_invalid_limitzStreamTests.test_invalid_limit   s   ##J77 	: 	: qty9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ##J77 	; 	; r	::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s#   AAA*BBBc                 "   t          j        d| j                  }|                    d           | j                            |                    d                    }|                     d|           |                     d|j                   d S N   r   s   chunkr|   r   r}   ro   s      r   test_read_limitzStreamTests.test_read_limit   s    %ADI>>>"""y++FKKNN;;4(((fn-----r   c                    t          j        | j                                      d           | j                                                                      }fd}| j                            |           | j                            |          }|                     d|           |                     dj	                   d S )Nrc   s   chunk1 c                                            d                                 d                                 d           d S )Ns   chunk2 s   chunk3 s   
 chunk4)re   r   s   r   ru   z%StreamTests.test_readline.<locals>.cb   sE    Z(((Z(((\*****r   s   chunk1 chunk2 chunk3 
s    chunk4)
r   rd   r   re   rv   r/   rw   r-   r0   rf   )r   ry   ru   linerh   s       @r   test_readlinezStreamTests.test_readline   s     %49555$$$I))&//*;*;<<		+ 	+ 	+ 	+ 	+ 		By++I663T:::V^44444r   c                    t          j        d| j                  }|                    d           |                    d           |                     t
          | j        j        |                                           |                     d|j	                   t          j        d| j                  }|                    d           |                    d           |                    d           |                     t
          | j        j        |                                           |                     d|j	                   d S )Nr   r   r   s
   ne1
line2
s   line2
s   ne1r   )
r   rd   r   re   r[   r   r-   r/   r0   rf   rg   s     r   &test_readline_limit_with_existing_dataz2StreamTests.test_readline_limit_with_existing_data   s2    %ADI>>>)))	4foo6G6G	I 	I 	I 	V^444%ADI>>>   	4foo6G6G	I 	I 	I 	fn-----r   c                    t          j        | j                  }|                     |                                           |                    d           |                     |                                           | j                            |                                           |                     |                                           |                    d           |                                 | j                            |                                           | 	                    |                                           d S )Nrc   s
   some data
)
r   rd   r   assertFalseat_eofre   r-   r/   r   r2   rg   s     r   test_at_eofzStreamTests.test_at_eof  s   %49555)))((()))	$$V__%6%6777)))(((	$$V__%6%6777(((((r   c                    t          j        d| j                  fd}| j                            |           |                     t
          | j        j                                                   |                     dj	                   t          j        d| j                  fd}| j                            |           |                     t
          | j        j                                                   |                     dj	                   t          j        d| j                  
                    d           | j                                                                      }|                     d|           |                     dj	                   
                    d           |                     t
                    5 }| j                                                                       d d d            n# 1 swxY w Y   |                     dj	                   
                    d	           |                     t
                    5 }| j                                                                       d d d            n# 1 swxY w Y   |                     dj	                   d S )
N   r   c                                            d                                 d                                 d                                             d S )N   chunk1r      chunk3
r   r   s   r   ru   z+StreamTests.test_readline_limit.<locals>.cb"  sU    Y'''Y'''[)))OOr   r   c                                            d                                 d                                 d                                             d S )Nr   s   chunk2
r   r   r   s   r   ru   z+StreamTests.test_readline_limit.<locals>.cb0  sU    Y'''[)))[)))OOr   r   s   1234567
s	   12345678
s   12345678)r   rd   r   rw   r[   r   r-   r/   r0   rf   re   )r   ru   r   cmrh   s       @r   test_readline_limitzStreamTests.test_readline_limit  s    %ADI>>>	 	 	 	 	
 		B	4foo6G6G	I 	I 	I 	fn---%ADI>>>	 	 	 	 	
 		B	4foo6G6G	I 	I 	Ifn555 %ADI>>>&&&y++FOO,=,=>>t,,,fn---'''z** 	<bI(():):;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<fn---%%%z** 	<bI(():):;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<fn-----s$   -HHH&-JJ#&J#c                 |   t          j        | j                  }|                    | j        d d                    |                    | j        dd                     | j                            |                                          }|                     d|           |                     d|j                   d S )Nrc      s   line1
s   line2
line3
)	r   rd   r   re   rl   r-   r/   r0   rf   r   rh   r   s      r   test_readline_nolimit_nowaitz(StreamTests.test_readline_nolimit_nowaitL  s     %495552A2'''122'''y++FOO,=,=>>T****FN;;;;;r   c                    t          j        | j                  }|                    d           |                                 | j                            |                                          }|                     d|           d S )Nrc   s	   some data)r   rd   r   re   r   r-   r/   r0   r   s      r   test_readline_eofzStreamTests.test_readline_eofX  sv    %49555&&&y++FOO,=,=>>t,,,,,r   c                     t          j        | j                  }|                                 | j                            |                                          }|                     d|           d S rb   )r   rd   r   r   r-   r/   r0   r   s      r   test_readline_empty_eofz#StreamTests.test_readline_empty_eof`  sb    %49555y++FOO,=,=>>d#####r   c                    t          j        | j                  }|                    | j                   | j                            |                                           | j                            |                    d                    }|                     d|           |                     d|j	                   d S )Nrc   r   s   line2
ls   ine3
)
r   rd   r   re   rl   r-   r/   r1   r0   rf   ro   s      r   test_readline_read_byte_countz)StreamTests.test_readline_read_byte_countg  s    %49555###	$$V__%6%6777y++FKKNN;;d+++FN33333r   c                    t          j        | j                  }|                    d           | j                            |                                          }|                     d|           |                    t                                 | 	                    t          | j        j        |                                           |                     d|j
                   d S )Nrc   r   r   )r   rd   r   re   r-   r/   r0   r   r   r[   rf   ro   s      r   test_readline_exceptionz#StreamTests.test_readline_exceptionr  s    %49555###y++FOO,=,=>>D)))Z\\***	4foo6G6G	I 	I 	Ifn-----r   c                     t          j        | j                  }|                     t          d          5  | j                            |                    d                     d d d            d S # 1 swxY w Y   d S )Nrc   zSeparator should ber   	separator)r   rd   r   r   r   r-   	readuntilrg   s     r   test_readuntil_separatorz$StreamTests.test_readuntil_separator~  s    %49555##J0EFF 	J 	JI(()9)9C)9)H)HIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   /A22A69A6c                    t          j        | j                  }|                    d           | j                            |                    d                    }|                     d|           |                     d|j                   |                    d           | j                            |                    d                    }|                     d|           |                     d|j                   |                    d           | j                            |                    d                    }|                     d|           |                     d|j                   d S )Nrc   s   lineAAA   AAAr   r   s
   lineAAAxxxs   xxxr   rd   r   re   r-   r   r0   rf   ro   s      r   test_readuntil_multi_chunksz'StreamTests.test_readuntil_multi_chunks  sO   %49555$$$y++F,<,<v,<,N,NOOT***fn---$$$y++F,<,<V,D,DEET***fn---'''y++F,<,<V,D,DEET***00000r   c                    t          j        | j                  }|                    d           |                    d           |                    d           | j                            |                    d                    }|                     d|           |                     d|j                   |                    d           |                    d           |                    d	           | j                            |                    d                    }|                     d|           |                     d|j                   |                    d           | j                            |                    d                    }|                     d|           |                     d|j                   |                    d
           | j                            |                    d                    }|                     d
|           |                     d|j                   |                    d           |                    d           |                    d           |                    d           | j                            |                    d                    }|                     d|           |                     d|j                   d S )Nrc   s   QWEaas   XYaa   as   aaas
   QWEaaXYaaar   s   XYas   aas   Xaaas   XXXs   XXXaaar   ro   s      r   test_readuntil_multi_chunks_1z)StreamTests.test_readuntil_multi_chunks_1  s   %49555"""!!!y++F,<,<V,D,DEE---fn---"""   y++F,<,<V,D,DEE---fn---   y++F,<,<V,D,DEE&&&fn---!!!y++F,<,<V,D,DEE$'''fn---   y++F,<,<V,D,DEED)))fn-----r   c                    t          j        | j                  }d}|                    |           |                                 |                     t           j        d          5 }| j                            |                    d                     d d d            n# 1 swxY w Y   | 	                    |j
        j        |           |                     |j
        j                   | 	                    d|j                   d S )Nrc      some dataAAzundefined expected bytesr   r   )r   rd   r   re   r   r   IncompleteReadErrorr-   r   r0   	exceptionpartialassertIsNoneexpectedrf   )r   rh   r9   r   s       r   test_readuntil_eofzStreamTests.test_readuntil_eof  s;   %49555##G$?$>@ @ 	CCEI(()9)9&)A)ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	-t444",/000fn-----s   &.B  B$'B$c                    t          j        | j        d          }|                    d           |                     t           j        d          5 }| j                            |                    d                     d d d            n# 1 swxY w Y   |                     d|j	                   |                    d           |                     t           j        d          5 }| j                            |                    d                     d d d            n# 1 swxY w Y   |                     d|j	                   d S )	Nr   r   r   r   z	not foundr      Azis founds   some dataAAA)
r   rd   r   re   r   LimitOverrunErrorr-   r   r0   rf   )r   rh   r   s      r   test_readuntil_limit_found_sepz*StreamTests.test_readuntil_limit_found_sep  s   %49A>>>(((##G$=$/1 1 	C46I(()9)9&)A)ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	888##G$=$.0 0 	C35I(()9)9&)A)ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	&.99999s$   .BBB&.D  D$'D$c                 4   t          j        | j                  }|                    | j                   | j                            |                    d                    }|                     d|           |                     | j        |j                   | 	                    t          d          5  | j                            |                    d                     d d d            n# 1 swxY w Y   |                     | j        |j                   d S )Nrc   r   r   zless than zeror   )r   rd   r   re   rl   r-   readexactlyr0   rf   r   r   ro   s      r   test_readexactly_zero_or_lessz)StreamTests.test_readexactly_zero_or_less  sA   %49555###y++F,>,>q,A,ABBd###FN333##J0@AA 	A 	AI((););B)?)?@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AFN33333s   3.C--C14C1c                     t          j         j                  dt           j                  z  } j                                                |                    } fd} j                            |            j                            |          } 	                     j         j        z   |            	                     j        j
                   d S )Nrc   r   c                                            j                                         j                                         j                   d S r   rt   rg   s   r   ru   z(StreamTests.test_readexactly.<locals>.cb  sK    TY'''TY'''TY'''''r   )r   rd   r   lenrl   rv   r   rw   r-   r0   rf   )r   nry   ru   r9   rh   s   `    @r   test_readexactlyzStreamTests.test_readexactly  s    %49555DII))&*<*<Q*?*?@@		( 	( 	( 	( 	( 	( 		By++I66TY.555FN33333r   c                 "   t          j        d| j                  }|                    d           | j                            |                    d                    }|                     d|           |                     d|j                   d S r   )r   rd   r   re   r-   r   r0   rf   ro   s      r   test_readexactly_limitz"StreamTests.test_readexactly_limit  s    %ADI>>>"""y++F,>,>q,A,ABB4(((fn-----r   c                     t          j         j                  dt           j                  z  } j                                                |                    } fd} j                            |                                t           j	                  5 } j        
                    |           d d d            n# 1 swxY w Y                        |j        j         j                                        |j        j        |                                t          |j                  d                                dj                   d S )Nrc   r   c                  d                          j                                                    d S r   )re   rl   r   rg   s   r   ru   z,StreamTests.test_readexactly_eof.<locals>.cb   s/    TY'''OOr   z-18 bytes read on a total of 36 expected bytesr   )r   rd   r   r   rl   rv   r   rw   r[   r   r-   r0   r   r   r   strrf   )r   r   ry   ru   r   rh   s   `    @r   test_readexactly_eofz StreamTests.test_readexactly_eof  s   %49555DII))&*<*<Q*?*?@@		 	 	 	 	 	 		Bw:;; 	4rI((333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4-ty999.222R\**H	J 	J 	Jfn-----s    CCCc                    t          j        | j                  }|                    d           | j                            |                    d                    }|                     d|           |                    t                                 | 	                    t          | j        j        |                    d                     d S r   )
r   rd   r   re   r-   r   r0   r   r   r[   ro   s      r   test_readexactly_exceptionz&StreamTests.test_readexactly_exception  s    %49555###y++F,>,>q,A,ABB%%%Z\\***	4f6H6H6K6K	M 	M 	M 	M 	Mr   c                    t          j        | j                  }|                     |                                           t                      }|                    |           |                     |                                |           d S rk   )r   rd   r   r   r   r   r   assertIsr   rh   excs      r   test_exceptionzStreamTests.test_exception  sz    %49555&**,,---llS!!!f&&((#.....r   c                 ~   t          j        | j                  fd}| j                                                                      }| j                             |                      }| j                            t          j        ||g                     |                     t          |j	                   d S )Nrc   c                  N   K                         t                                 d S r   )r   r   r   s   r   set_errz2StreamTests.test_exception_waiter.<locals>.set_err#  s%        .....r   )
r   rd   r   rv   r/   r-   waitr[   r   result)r   r   t1t2rh   s       @r   test_exception_waiterz!StreamTests.test_exception_waiter   s    %49555	/ 	/ 	/ 	/ 	/ Y""6??#4#455Y""7799--	$$W\2r(%;%;<<<*bi00000r   c                    t          j        | j                  }| j                            |                                          }t          j        | j                   |                                 t          j        | j                   |                    t          d                     t          j        | j                   | 
                    |j        d            d S )Nrc   message)r   rd   r   rv   r/   r   r   cancelr   RuntimeErrorr   _waiter)r   rh   ts      r   test_exception_cancelz!StreamTests.test_exception_cancel-  s    %49555I!!&//"3"344ty)))	


ty)))\)44555ty)))fnd+++++r   c                     G d d          }d }g | j                             fd            || j                   }|                                }| j                             | j                              ||                              }|                                 |                     |d            || j                   }|                                }| j                             | j                              ||                              }|                                 |                     |d           |                     g            d S )Nc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )/StreamTests.test_start_server.<locals>.MyServerc                 "    d | _         || _        d S r   serverr   r   r   s     r   __init__z8StreamTests.test_start_server.<locals>.MyServer.__init__=      " 			r   c                    K   |                                  d {V }|                    |           |                                 d {V  |                                 |                                 d {V  d S r   r/   r.   drainr   wait_closedr   client_readerclient_writerr9   s       r   handle_clientz=StreamTests.test_start_server.<locals>.MyServer.handle_clientA        *3355555555##D)))#))+++++++++##%%%#//11111111111r   c                     t          j        d          }| j                            t	          j        | j        |                    | _        |                                S Nz	127.0.0.1r   )sock	socketcreate_serverr   r-   r   start_serverr	  r   getsocknamer   r  s     r   startz5StreamTests.test_start_server.<locals>.MyServer.startH  ]    +,<=="i::();.24 4 45 5 '')))r   c                 b    | j                             |                     ||                     d S r   r   rv   r	  r   r  r  s      r   handle_client_callbackzFStreamTests.test_start_server.<locals>.MyServer.handle_client_callbackO  D    	%%d&8&89F'H 'H I I I I Ir   c                    t          j        d          }|                                }|                                 | j                            t          j        | j        |d         |d                             | _	        |S )Nr  r      )hostport)
r  r  r  r   r   r-   r   r  r  r   )r   r  addrs      r   start_callbackz>StreamTests.test_start_server.<locals>.MyServer.start_callbackS  s}    +,<==''))

"i::()D.21gDGE E EF F r   c                     | j         S| j                                          | j                            | j                                                    d | _         d S d S r   r   r   r   r-   r  r   s    r   stopz4StreamTests.test_start_server.<locals>.MyServer.stop\  U    ;*K%%'''I001H1H1J1JKKK"&DKKK +*r   N	__name__
__module____qualname__r   r	  r  r  r!  r$  r
   r   r   MyServerr   ;  sq        ! ! !2 2 2* * *I I I  ' ' ' ' 'r   r*  c                    K   t          j        |   d {V \  }}|                    d           |                                 d {V }|                                 |                                 d {V  |S N   hello world!
)r   r=   r.   r/   r   r  )r   r6   r7   msgbacks       r   clientz-StreamTests.test_start_server.<locals>.clientb  s      #*#:D#AAAAAAANFFLL*+++"OO--------GLLNNN$$&&&&&&&&&Nr   c                 .                         |          S r   r"   r$   s     r   r'   z/StreamTests.test_start_server.<locals>.<lambda>m  r(   r   r-  )r   r,   r  r-   rv   r$  r0   r!  )r   r*  r/  r   r   msgr&   s         @r   test_start_serverzStreamTests.test_start_server9  sd   %	' %	' %	' %	' %	' %	' %	' %	'N	 	 	 	''(N(N(N(NOOO $)$$||~~i**49+@+@+N+NOO/000 $)$$$$&&i**49+@+@+N+NOO/0002&&&&&r   c                 f    G d d          }d }g | j                             fd           t          j                    5 } || j         |          }|                                 | j                             | j                              ||                              }|                                 |                     |d           d d d            n# 1 swxY w Y   t          j                    5 } || j         |          }|	                                 | j                             | j                              ||                              }|                                 |                     |d           d d d            n# 1 swxY w Y   |                     g            d S )Nc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )4StreamTests.test_start_unix_server.<locals>.MyServerc                 0    d | _         || _        || _        d S r   )r   r   path)r   r   r7  s      r   r   z=StreamTests.test_start_unix_server.<locals>.MyServer.__init__  s    " 	 			r   c                    K   |                                  d {V }|                    |           |                                 d {V  |                                 |                                 d {V  d S r   r  r  s       r   r	  zBStreamTests.test_start_unix_server.<locals>.MyServer.handle_client  r
  r   c                     | j                             t          j        | j        | j                            | _        d S N)r7  )r   r-   r   start_unix_serverr	  r7  r   r   s    r   r  z:StreamTests.test_start_unix_server.<locals>.MyServer.start  s>    "i::-d.@379> > >? ?r   c                 b    | j                             |                     ||                     d S r   r  r  s      r   r  zKStreamTests.test_start_unix_server.<locals>.MyServer.handle_client_callback  r  r   c                     t          j        | j        | j                  }| j                            |          | _        d S r:  )r   r;  r  r7  r   r-   r   )r   r  s     r   r!  zCStreamTests.test_start_unix_server.<locals>.MyServer.start_callback  sA    1$2M7;yB B B"i::5AAr   c                     | j         S| j                                          | j                            | j                                                    d | _         d S d S r   r#  r   s    r   r$  z9StreamTests.test_start_unix_server.<locals>.MyServer.stop  r%  r   Nr&  r
   r   r   r*  r5    st        ! ! !
2 2 2? ? ?
I I IB B B
' ' ' ' 'r   r*  c                    K   t          j        |            d {V \  }}|                    d           |                                 d {V }|                                 |                                 d {V  |S r,  )r   rF   r.   r/   r   r  )r7  r6   r7   r.  s       r   r/  z2StreamTests.test_start_unix_server.<locals>.client  s      #*#?#E#EEEEEEENFFLL*+++"OO--------GLLNNN$$&&&&&&&&&Nr   c                 .                         |          S r   r"   r$   s     r   r'   z4StreamTests.test_start_unix_server.<locals>.<lambda>  r(   r   r-  )
r   r,   r   unix_socket_pathr  r-   rv   r$  r0   r!  )r   r*  r/  r7  r   r1  r&   s         @r   test_start_unix_serverz"StreamTests.test_start_unix_server  s7    	'  	'  	'  	'  	'  	'  	'  	'D	 	 	 	''(N(N(N(NOOO (** 	5dXdi..FLLNNN)..	%%ffTll335 5CKKMMMS"3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 (** 	5dXdi..F!!###)..	%%ffTll335 5CKKMMMS"3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	2&&&&&s&   BCC"C9BFFFc                     G d d          }d }g | j                             fd            || j                   }|                                }| j                              ||                    \  }}|                                 |                     g            |                     |d           |                     |d           d S )Nc                   &    e Zd Zd Zd Zd Zd ZdS ),StreamTests.test_start_tls.<locals>.MyServerc                 "    d | _         || _        d S r   r   r   s     r   r   z5StreamTests.test_start_tls.<locals>.MyServer.__init__  r  r   c                 >  K   |                                  d {V }|                    |           |                                 d {V  |                    d          J |                    t          j                               d {V  |                    d          J |                                  d {V }|                    |           |                                 d {V  |                                 |                                 d {V  d S )N
sslcontext)	r/   r.   r  get_extra_info	start_tlsr   simple_server_sslcontextr   r  )r   r  r  data1data2s        r   r	  z:StreamTests.test_start_tls.<locals>.MyServer.handle_client  sn     +4466666666##E***#))+++++++++$33LAAIII#--799; ; ; ; ; ; ; ; ;$33LAAMMM+4466666666##E***#))+++++++++##%%%#//11111111111r   c                     t          j        d          }| j                            t	          j        | j        |                    | _        |                                S r  r  r  s     r   r  z2StreamTests.test_start_tls.<locals>.MyServer.start  r  r   c                     | j         S| j                                          | j                            | j                                                    d | _         d S d S r   r#  r   s    r   r$  z1StreamTests.test_start_tls.<locals>.MyServer.stop  r%  r   N)r'  r(  r)  r   r	  r  r$  r
   r   r   r*  rE    sP        ! ! !2 2 2* * *' ' ' ' 'r   r*  c                 p  K   t          j        |   d {V \  }}|                    d           |                                 d {V  |                                 d {V }|                    d          J |                    t          j                               d {V  |                    d          J |                    d           |                                 d {V  |                                 d {V }|	                                 |
                                 d {V  ||fS )N   hello world 1!
rH     hello world 2!
)r   r=   r.   r  r/   rI  rJ  r   simple_client_sslcontextr   r  )r   r6   r7   msgback1msgback2s        r   r/  z*StreamTests.test_start_tls.<locals>.client  sp     #*#:D#AAAAAAANFFLL,---,,..       #__........H((66>>>"":#F#H#HIIIIIIIII((66BBBLL,---,,..       #__........HLLNNN$$&&&&&&&&&X%%r   c                 .                         |          S r   r"   r$   s     r   r'   z,StreamTests.test_start_tls.<locals>.<lambda>  r(   r   rQ  rR  )r   r,   r  r-   r$  r0   )r   r*  r/  r   r   msg1msg2r&   s          @r   test_start_tlszStreamTests.test_start_tls  s    	' 	' 	' 	' 	' 	' 	' 	'B	& 	& 	& 	''(N(N(N(NOOO$)$$||~~Y11&&,,??
d2&&&2333233333r   win32zDon't have pipesc                    d}t          j                    \  }}t          j        d|t	          |          g}t          |dd          }t          j        | j        d          }t          j	        || j                  | j        
                    | j                            fd|                    \  }}t          j                    }	|	                    | j                   	 t          j        |	           t          j        |d	|hi}
| j        
                    |
          }| j        
                    |                                           t          j        d            n# t          j        d            w xY wt          j        |           | j        
                    |                    d
                    }|                     |d           d S )NzHimport os, sys
fd = int(sys.argv[1])
os.write(fd, b'data')
os.close(fd)
z-crbr   r  r   rc   c                       S r   r
   protocols   r   r'   z<StreamTests.test_read_all_from_pipe_reader.<locals>.<lambda>  s     r   pass_fdsr      data)ospipesys
executabler   openr   rd   r   StreamReaderProtocolr-   connect_read_pipeSafeChildWatcherattach_loopset_child_watchercreate_subprocess_execr   r   r1   r0   )r   coderfdwfdargsrc  r6   	transport_watchercreateprocr9   r_  s                @r   test_read_all_from_pipe_readerz*StreamTests.test_read_all_from_pipe_reader  s    799SdCHH5Cq!!%49A>>>/TYGGGy33I''(8(8(8(8$??A A	1 *,,DI&&&		,%g...3 F 9//77DI((555%d++++G%d++++
y++FKKOO<<w'''''s   %A,E& &E<c                     |                      t          d          5  t          j                     d d d            d S # 1 swxY w Y   d S Nzno current event loop)r   r   r   rd   r   s    r   *test_streamreader_constructor_without_loopz6StreamTests.test_streamreader_constructor_without_loop,  s    ##L2IJJ 	# 	# """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   =AAc                     d }| j                              |                      }|                     |j        | j                    d S )Nc                  ,   K   t          j                    S r   )r   rd   r
   r   r   testzHStreamTests.test_streamreader_constructor_use_running_loop.<locals>.test3  s      ')))r   )r   r-   r   _loop)r   r|  r6   s      r   .test_streamreader_constructor_use_running_loopz:StreamTests.test_streamreader_constructor_use_running_loop0  sL    	* 	* 	* --ddff55flDI.....r   c                     |                      t          j        d            t          j        | j                   t          j                    }|                     |j        | j                   d S r   )
addCleanupr   r   r   rd   r   r}  r   r6   s     r   -test_streamreader_constructor_use_global_loopz9StreamTests.test_streamreader_constructor_use_global_loop9  sZ     	.555ty)))%''flDI.....r   c                     t          j                    }|                     t          d          5  t	          j        |           d d d            d S # 1 swxY w Y   d S rx  )r   Mockr   r   r   rg  r  s     r   2test_streamreaderprotocol_constructor_without_loopz>StreamTests.test_streamreaderprotocol_constructor_without_loopC  s    ##L2IJJ 	1 	1(000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AAAc                     t          j                    fd}| j                             |                      }|                     |j        | j                   d S )Nc                  0   K   t          j                   S r   )r   rg  )r6   s   r   r|  zPStreamTests.test_streamreaderprotocol_constructor_use_running_loop.<locals>.testL  s      /777r   )r   r  r   r-   r   r}  )r   r|  r_  r6   s      @r   6test_streamreaderprotocol_constructor_use_running_loopzBStreamTests.test_streamreaderprotocol_constructor_use_running_loopH  sb     	8 	8 	8 	8 	89//77hndi00000r   c                    |                      t          j        d            t          j        | j                   t	          j                    }t          j        |          }|                     |j        | j                   d S r   )	r  r   r   r   r   r  rg  r   r}  )r   r6   r_  s      r   5test_streamreaderprotocol_constructor_use_global_loopzAStreamTests.test_streamreaderprotocol_constructor_use_global_loopQ  sg     	.555ty)))/77hndi00000r   c                 l     dfd fd} j                              |                       d S )Nr   c                 J   K   |                                   d {V  dz  d S )Nr  )_drain_helper)rh   draineds    r   drainerz0StreamTests.test_multiple_drain.<locals>.drainer_  s8      &&(((((((((qLGGGr   c                  X  K   t          j                    } t           j                            |                                            |                     dj                   t          j        fdt          d          D               d {V  	                    d           d S )Ng?c                 &    g | ]}           S r
   r
   ).0rr  r  rh   s     r   
<listcomp>zAStreamTests.test_multiple_drain.<locals>.main.<locals>.<listcomp>i  s!    "F"F"Fq776??"F"F"Fr   
   )
r   get_running_loopstreamsFlowControlMixinpause_writing
call_laterresume_writinggatherranger0   )r   rh   r  r  r   s    @r   mainz-StreamTests.test_multiple_drain.<locals>.maind  s      +--D_55d;;F  """OOC!6777."F"F"F"F"FE"II"F"F"FGGGGGGGGWb)))))r   )r   r-   )r   r  r  r  s   ` @@r   test_multiple_drainzStreamTests.test_multiple_drain[  sj    	 	 	 	 	
	* 	* 	* 	* 	* 	* 	* 		$$TTVV,,,,,r   c                    g | j                             fd           t          j                    fd}d }t	          j        |          }d|_        |                                                                 }| 	                    t          t          t          f          5  | j                              ||            d d d            n# 1 swxY w Y   |                                 |                     g            d S )Nc                 .                         |          S r   r"   r$   s     r   r'   z/StreamTests.test_drain_raises.<locals>.<lambda>w  r(   r   c                  
   t          j        d          5 } |                                 }                    |           |                                 \  }}|                                 d d d            d S # 1 swxY w Y   d S )N)	localhostr   )r  r  r  putacceptr   )r  r   cltrr  qs       r   r   z-StreamTests.test_drain_raises.<locals>.serverz  s    %&677 4''))dQ			                 s   AA88A<?A<c                    K   t          j        | |           d {V \  }}	 |                    d           |                                 d {V  0)NTs   foo
)r   r=   r.   r  )r  r  r6   r7   s       r   r/  z-StreamTests.test_drain_raises.<locals>.client  sj      #*#:4#F#FFFFFFFNFF%X&&&llnn$$$$$$$%r   )targetT)r   r,   queueQueue	threadingThreaddaemonr  getr[   ConnectionResetErrorConnectionAbortedErrorBrokenPipeErrorr-   joinr0   )r   r   r/  threadr   r&   r  s        @@r   test_drain_raiseszStreamTests.test_drain_raisesn  sV    	''(N(N(N(NOOOKMM	 	 	 	 		% 	% 	% !000uuww  46L / 1 2 2 	8 	8I((777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	X&&&&&s   (CCCc                     t          j        | j                  }|                     dt	          |                     d S )Nrc   <StreamReader>r   rd   r   r0   reprrg   s     r   test___repr__zStreamTests.test___repr__  s:    %49555)4<<88888r   c                     t          j        | j        d          }|                     dt	          |                     d S )N{   r   z<StreamReader limit=123>r  rg   s     r   test___repr__nondefault_limitz)StreamTests.test___repr__nondefault_limit  s<    %49C@@@3T&\\BBBBBr   c                     t          j        | j                  }|                                 |                     dt          |                     d S )Nrc   z<StreamReader eof>)r   rd   r   r   r0   r  rg   s     r   test___repr__eofzStreamTests.test___repr__eof  sJ    %49555-tF||<<<<<r   c                     t          j        | j                  }|                    d           |                     dt          |                     d S )Nrc   ra  z<StreamReader 4 bytes>)r   rd   r   re   r0   r  rg   s     r   test___repr__datazStreamTests.test___repr__data  sN    %49555!!!14<<@@@@@r   c                     t          j        | j                  }t                      }|                    |           |                     dt          |                     d S )Nrc   z'<StreamReader exception=RuntimeError()>)r   rd   r   r   r   r0   r  r   s      r   test___repr__exceptionz"StreamTests.test___repr__exception  sb    %49555nnS!!!Bf	' 	' 	' 	' 	'r   c                    t          j        | j                  }t          j        | j                  |_        |                     t          |          d           |j                            d            | j                            |j                   d |_        | 	                    dt          |                     d S )Nrc   z,<StreamReader waiter=<Future pending[\S ]*>>r  )
r   rd   r   Futurer   assertRegexr  
set_resultr-   r0   rg   s     r   test___repr__waiterzStreamTests.test___repr__waiter  s    %49555 TY777LL;	= 	= 	= 	!!$'''	$$V^444)4<<88888r   c                    t          j        | j                  }t          j                    |_        t          j                    |j        _        d|j        j        _        |                     dt          |                     d S )Nrc   z<Transport>z$<StreamReader transport=<Transport>>)
r   rd   r   r   r  
_transport__repr__return_valuer0   r  rg   s     r   test___repr__transportz"StreamTests.test___repr__transport  sg    %49555 IKK%)Y[["2?"/?fNNNNNr   c                    t          j        dd          }t          t          j        dz             D ]}|                     |          5  t          j        t          j        ||                    }|                     t          |          t          |                     |                     |j
        |j
                   |                     |j        |j                   d d d            n# 1 swxY w Y   d S )Ns   abcr  r  pickle_protocolr^  )r   r   r  pickleHIGHEST_PROTOCOLsubTestloadsdumpsr0   r   r   r   r   eprotoe2s       r   #test_IncompleteReadError_pickleablez/StreamTests.test_IncompleteReadError_pickleable  s   '3362Q677 	: 	:Ee44 : :\&,q5"A"A"ABB  QR111  BJ777  R[999	: : : : : : : : : : : : : : :	: 	:s   
BC//C3	6C3	c                    t          j        dd          }t          t          j        dz             D ]}|                     |          5  t          j        t          j        ||                    }|                     t          |          t          |                     |                     |j
        |j
                   d d d            n# 1 swxY w Y   d S )Nr   r  r  r  r^  )r   r   r  r  r  r  r  r  r0   r   consumedr  s       r   !test_LimitOverrunError_pickleablez-StreamTests.test_LimitOverrunError_pickleable  s   %i4462Q677 	: 	:Ee44 : :\&,q5"A"A"ABB  QR111  R[999: : : : : : : : : : : : : : :	: 	:s   
A9CC	C	c                 4   t          j                    5 }| j                            t	          j        |j                   \  }}|                    d           |                                }| j                            |          }| 	                    |d           |
                                }| j                            |          }|                     |                    d                     |                     |                                           |                                 |                     |                                           | j                            |                                           d d d            d S # 1 swxY w Y   d S Nr)   r*   r+   )r   r<   r   r-   r   r=   r>   r.   r/   r0   r1   r2   r3   r   
is_closingr   r  r   r@   rdwrr8   r9   s         r   test_wait_closed_on_closez%StreamTests.test_wait_closed_on_close  s   ')) 	;UY11'79 9FB HH.///A9//22DT#9:::		A9//22DOODMM*ABBCCCR]]__---HHJJJOOBMMOO,,,I(()9)9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   E,FFFc                    t          j                    5 }| j                            t	          j        |j                   \  }}|                    d           |                                }| j                            |          }| 	                    |d           |
                                 | j                            |                                           d d d            d S # 1 swxY w Y   d S )Nr)   r*   )r   r<   r   r-   r   r=   r>   r.   r/   r0   r   r  r  s         r   *test_wait_closed_on_close_with_unread_dataz6StreamTests.test_wait_closed_on_close_with_unread_data  s   ')) 		;UY11'79 9FB HH.///A9//22DT#9:::HHJJJI(()9)9:::		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		; 		;s   CC))C-0C-c                      fd}g  j                             fd           t          j                    5 } j                              ||                     d d d            n# 1 swxY w Y                        g            d S )Nc                   K   t          j        | j          d {V \  }}|                    d           |                                 d {V }                    |d           |                                 d {V }                    |                    d                     |	                                 |
                                 d {V  d S r  )r   r=   r>   r.   r/   r0   r1   r2   r3   r   r  r@   r  r  r9   r   s       r   innerz0StreamTests.test_async_writer_api.<locals>.inner  s      "2EMBBBBBBBFBHH.///&&&&&&DT#9:::??????DOODMM*ABBCCCHHJJJ.."""""""""""r   c                 .                         |          S r   r"   r$   s     r   r'   z3StreamTests.test_async_writer_api.<locals>.<lambda>  r(   r   r   r,   r   r<   r-   r0   r   r  r@   r&   s   `  @r   test_async_writer_apiz!StreamTests.test_async_writer_api  s    		# 		# 		# 		# 		# 	''(N(N(N(NOOO')) 	7UI((u666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	2&&&&&   $A**A.1A.c                      fd}g  j                             fd           t          j                    5 } j                              ||                     d d d            n# 1 swxY w Y                        g            d S )Nc                 >  K   t          j        | j          d {V \  }}|                    d           |                                 d {V }                    |d           |                                 d {V }                    |                    d                     |	                                 
                    t                    5  |                    d           |                                 d {V  d d d            d S # 1 swxY w Y   d S )Nr)   r*   r+   ra  )r   r=   r>   r.   r/   r0   r1   r2   r3   r   r[   r  r  r  s       r   r  zFStreamTests.test_async_writer_api_exception_after_close.<locals>.inner  se     "2EMBBBBBBBFBHH.///&&&&&&DT#9:::??????DOODMM*ABBCCCHHJJJ""#788 ! !!!!hhjj       ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   0DDDc                 .                         |          S r   r"   r$   s     r   r'   zIStreamTests.test_async_writer_api_exception_after_close.<locals>.<lambda>  r(   r   r  r  s   `  @r   +test_async_writer_api_exception_after_closez7StreamTests.test_async_writer_api_exception_after_close  s    	! 	! 	! 	! 	! 	''(N(N(N(NOOO')) 	7UI((u666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	2&&&&&r  c                 ~   g | j                             fd           t          j                    5 }| j                             t          j        |j                   \  }}|                                 |	                                }| j                             |           | 
                    |                                           |                                }| j                             |          }|                     |d           d d d            n# 1 swxY w Y   |                     g            d S )Nc                 .                         |          S r   r"   r$   s     r   r'   z?StreamTests.test_eof_feed_when_closing_writer.<locals>.<lambda>  r(   r   r   )r   r,   r   r<   r-   r   r=   r>   r   r  r2   r   r1   r0   )r   r@   r  r  r8   r9   r&   s         @r   !test_eof_feed_when_closing_writerz-StreamTests.test_eof_feed_when_closing_writer  sU   	''(N(N(N(NOOO')) 
	(UY11+U];= =FB HHJJJ  AI((+++OOBIIKK(((		A9//22DT3'''
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 
	( 	2&&&&&s   CDD #D )Qr'  r(  r)  rl   r   r   r:   rB   r   skip_unless_bind_unix_socketrG   rK   unittestskipIfrO   rQ   rU   r\   r^   r`   ri   rm   rp   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2  rB  rY  rd  platformrv  ry  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__)r   s   @r   r   r      s'       #D' ' ' ' '
    ' ' '5 5 5
 /5 5 0/5
' ' ' X_SD[/22A A 32A /X_SD[/22A A 32 0/A
' 
' 
'; ; ;
 /; ; 0/;
. . .4 4 44 4 4. . .	3 	3 	3. . .. . . 	F 	F 	F; ; ;. . .5 5 5". . .6) ) )-. -. -.^
< 
< 
<- - -$ $ $	4 	4 	4
. 
. 
.J J J
1 1 1$!. !. !.F. . .: : : 4 4 44 4 4". . .. . .&	M 	M 	M/ / /1 1 1
, 
, 
,D' D' D'L /C' C' 0/C'J X_SD[/22<4 <4 32<4| X_S\W,.@AA%( %( BA%(N# # #/ / // / /1 1 1
1 1 11 1 1- - -&)' )' )'V9 9 9C C C= = =
A A A
' ' '	9 	9 	9O O O: : :: : :; ; ;"
; 
; 
;' ' '(' ' ',' ' ' ' ' ' 'r   r   __main__)__doc__r   rb  r  r  r  rd  r  r  r   test.supportr   rO   ImportErrorr   test.test_asyncior   r   r   TestCaser   r'  r  r
   r   r   <module>r     s6     				 				    



            & & & & & &JJJJ   
CCC  1 1 1 1 1 1( ( (S' S' S' S' S'*% S' S' S'l  zHMOOOOO s   5 ??