a
    	¼3j
½  ã                   @   s8  d Z ddlZddlZddlZddlZddlmZ zddlZW n eyR   dZY n0 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mZ ejZd	d
„ ZG dd„ de
ƒZddd„Zdd„ ZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkr4e ¡  dS )zTests for selector_events.pyé    N)Úmock)ÚBaseSelectorEventLoop)Ú_SelectorTransport)Ú_SelectorSocketTransport)Ú_SelectorDatagramTransport)Úutilsc                   C   s   t  d ¡ d S ©N)ÚasyncioZset_event_loop_policy© r
   r
   úb/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_asyncio/test_selector_events.pyÚtearDownModule   s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestBaseSelectorEventLoopc                 C   s&   t  ¡ | _t  ¡ | _|  jd7  _d S ©Né   ©r   ÚMockÚ_ssockÚ_csockZ_internal_fds©Úselfr
   r
   r   Ú_make_self_pipe   s    

z)TestBaseSelectorEventLoop._make_self_pipec                 C   s   d S r   r
   r   r
   r
   r   Ú_close_self_pipe#   s    z*TestBaseSelectorEventLoop._close_self_pipeN)Ú__name__Ú
__module__Ú__qualname__r   r   r
   r
   r
   r   r      s   r   r
   c                 C   s   t ƒ  | ¡S r   )Ú	bytearrayÚjoin)Úlr
   r
   r   Úlist_to_buffer'   s    r   c                 C   s"   | j d u rd S | j  ¡  d | _ d S r   )Ú_sockÚclose)Ú	transportr
   r
   r   Úclose_transport+   s    

r"   c                       s  e Zd Z‡ fdd„Zdd„ Ze edu d¡dd„ ƒZe	 
d	d¡e	 
d
d¡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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!‡  Z"S )9ÚBaseSelectorEventLoopTestsc                    s:   t ƒ  ¡  t ¡ | _g | jj_t| jƒ| _|  	| j¡ d S r   )
ÚsuperÚsetUpr   r   ÚselectorÚselectÚreturn_valuer   ÚloopÚset_event_loopr   ©Ú	__class__r
   r   r%   6   s
    


z BaseSelectorEventLoopTests.setUpc                 C   sZ   t  ¡ }t  ¡ | j_d| jj_| j |t ¡ ¡}|  |t	¡ | j 
¡  t|ƒ t|ƒ d S )NF)r   r   r)   Ú
add_readerÚ_is_coroutineZ_make_socket_transportr	   ÚProtocolÚassertIsInstancer   r    Úreprr"   )r   Úmr!   r
   r
   r   Útest_make_socket_transport=   s    

z5BaseSelectorEventLoopTests.test_make_socket_transportNzNo ssl modulec              	   C   sT  t  ¡ }t  ¡ | j_d| jj_t  ¡ | j_t  ¡ | j_t  ¡ | j_| j ¡ }t	 
¡ f | j |t ¡ ||¡}|  td¡ | ¡  W d   ƒ n1 s–0    Y  t	 | j¡ W d   ƒ n1 sÀ0    Y  |  | ¡ ¡ | ¡  | ¡  |  | ¡ ¡ | ¡  | ¡  |  | ¡ ¡ |jj}|  d| ¡ ¡ |  d| ¡ ¡ | ¡  t	 | j¡ d S )NFzSSL transport.*not.*initializedÚsslr!   )r   r   r)   Ú_add_readerr.   Ú_add_writerÚ_remove_readerÚ_remove_writerÚcreate_futureÚ
test_utilsÚdisable_loggerÚ_make_ssl_transportr	   r/   ZassertRaisesRegexÚRuntimeErrorÚ
is_readingÚrun_brieflyÚ
assertTrueÚpause_readingÚassertFalseÚresume_readingr,   r   ZassertInÚlowerr    )r   r2   Úwaiterr!   Ú
class_namer
   r
   r   Útest_make_ssl_transportJ   s8    


ÿÿ&*z2BaseSelectorEventLoopTests.test_make_ssl_transportzasyncio.selector_events.sslzasyncio.sslproto.sslc                 C   sx   t  ¡ }t  ¡ | j_t  ¡ | j_t  ¡ | j_t  ¡ | j_|  t¡" | j 	||||¡ W d   ƒ n1 sj0    Y  d S r   )
r   r   r)   r-   Ú
add_writerÚremove_readerÚremove_writerÚassertRaisesr=   r<   )r   r2   r
   r
   r   Ú)test_make_ssl_transport_without_ssl_errorp   s    zDBaseSelectorEventLoopTests.test_make_ssl_transport_without_ssl_errorc           	      C   sh  G dd„ dt ƒ}|| jƒ| _|  | j¡ | jj}d|j_| jj}d|j_t 	¡  }| j_
| jj ¡  t 	¡  | j_}|  | j ¡ ¡ | j ¡  |  | j ¡ ¡ |  | jj¡ |  | jj¡ |  | jj¡ |j ¡  |j ¡  |j ¡  | d¡ | j ¡  | j ¡  | j ¡ }|  t| jj¡ |  t| jj|¡ d}dd„ }|  t| jj||¡ |  t| jj||¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z8BaseSelectorEventLoopTests.test_close.<locals>.EventLoopc                 S   s&   t  ¡ | _t  ¡ | _|  jd7  _d S r   r   r   r
   r
   r   r   }   s    

zHBaseSelectorEventLoopTests.test_close.<locals>.EventLoop._make_self_pipeN)r   r   r   r   r
   r
   r
   r   Ú	EventLoop|   s   rM   é   r   r   c                   S   s   d S r   r
   r
   r
   r
   r   Úcallback¢   s    z7BaseSelectorEventLoopTests.test_close.<locals>.callback)r   r&   r)   r*   r   Úfilenor(   r   r   r   r7   Ú	_selectorr    rB   Z	is_closedr@   ÚassertIsNoneÚassert_called_withr9   rK   r=   Zrun_foreverÚrun_until_completer-   rH   )	r   rM   ZssockZcsockrI   r&   ÚfÚfdrO   r
   r
   r   Ú
test_close{   s:    







z%BaseSelectorEventLoopTests.test_closec                 C   s<   t  ¡ | j_| jj ¡  d | j_| j ¡  |  | jj¡ d S r   )r   r   r)   rI   rQ   r    rR   r   r
   r
   r   Útest_close_no_selector§   s
    
z1BaseSelectorEventLoopTests.test_close_no_selectorc                 C   s    t | jjj_|  | j ¡ ¡ d S r   )ÚBlockingIOErrorr)   r   ÚrecvÚside_effectrR   Ú_read_from_selfr   r
   r
   r   Útest_read_from_self_tryagain®   s    z7BaseSelectorEventLoopTests.test_read_from_self_tryagainc                 C   s    t | jjj_|  t | jj¡ d S r   )ÚOSErrorr)   r   rZ   r[   rK   r\   r   r
   r
   r   Útest_read_from_self_exception²   s    z8BaseSelectorEventLoopTests.test_read_from_self_exceptionc                 C   sH   t | jjj_t ¡   |  | j ¡ ¡ W d   ƒ n1 s:0    Y  d S r   )	rY   r)   r   Úsendr[   r:   r;   rR   Ú_write_to_selfr   r
   r
   r   Útest_write_to_self_tryagain¶   s    
z6BaseSelectorEventLoopTests.test_write_to_self_tryagainc                 C   s"   t ƒ | jjj_|  t | jj¡ d S r   )r=   r)   r   r`   r[   rK   ra   r   r
   r
   r   Útest_write_to_self_exception»   s    z7BaseSelectorEventLoopTests.test_write_to_self_exceptionc                 C   s„   t | jjj_dd„ }| j d|¡ |  | jjjj¡ | jjjj	d \}}\}}|  
d|¡ |  
tj|¡ |  
||j¡ |  |¡ d S )Nc                   S   s   dS ©NTr
   r
   r
   r
   r   Ú<lambda>Â   ó    z<BaseSelectorEventLoopTests.test_add_reader.<locals>.<lambda>r   r   )ÚKeyErrorr)   rQ   Úget_keyr[   r-   r@   ÚregisterÚcalledÚ	call_argsÚassertEqualÚ	selectorsÚ
EVENT_READÚ	_callbackrR   ©r   ÚcbrV   ÚmaskÚrÚwr
   r
   r   Útest_add_readerÀ   s    z*BaseSelectorEventLoopTests.test_add_readerc                 C   sÎ   t  ¡ }t  ¡ }t ddtj||f¡| jjj_dd„ }| j 	d|¡ |  
|jj¡ |  | jjjj¡ |  
| jjjj¡ | jjjjd \}}\}}|  d|¡ |  tjtjB |¡ |  ||j¡ |  ||¡ d S )Nr   c                   S   s   dS rd   r
   r
   r
   r
   r   re   Ñ   rf   zEBaseSelectorEventLoopTests.test_add_reader_existing.<locals>.<lambda>r   )r   r   rm   ÚSelectorKeyÚEVENT_WRITEr)   rQ   rh   r(   r-   r@   Úcancelrj   rB   ri   Úmodifyrk   rl   rn   ro   ©r   ÚreaderÚwriterrq   rV   rr   rs   rt   r
   r
   r   Útest_add_reader_existingÌ   s    ÿz3BaseSelectorEventLoopTests.test_add_reader_existingc                 C   s¸   t  ¡ }t ddtjd |f¡| jjj_dd„ }| j 	d|¡ |  
| jjjj¡ |  | jjjj¡ | jjjjd \}}\}}|  d|¡ |  tjtjB |¡ |  ||j¡ |  ||¡ d S )Nr   c                   S   s   dS rd   r
   r
   r
   r
   r   re   á   rf   zLBaseSelectorEventLoopTests.test_add_reader_existing_writer.<locals>.<lambda>r   )r   r   rm   rv   rw   r)   rQ   rh   r(   r-   rB   ri   rj   r@   ry   rk   rl   rn   ro   )r   r|   rq   rV   rr   rs   rt   r
   r
   r   Útest_add_reader_existing_writerÝ   s    ÿz:BaseSelectorEventLoopTests.test_add_reader_existing_writerc                 C   sB   t  ddt jd¡| jjj_|  | j d¡¡ |  	| jjj
j¡ d S ©Nr   )NN)rm   rv   rn   r)   rQ   rh   r(   rB   rI   r@   Ú
unregisterrj   r   r
   r
   r   Útest_remove_readerì   s
    
ÿz-BaseSelectorEventLoopTests.test_remove_readerc                 C   s€   t  ¡ }t  ¡ }t ddtjtjB ||f¡| jjj_	|  
| j d¡¡ |  | jjjj¡ |  dtjd |ff| jjjjd ¡ d S ©Nr   r   )r   r   rm   rv   rn   rw   r)   rQ   rh   r(   r@   rI   rB   r€   rj   rl   ry   rk   ©r   r{   r|   r
   r
   r   Útest_remove_reader_read_writeó   s    þ
ÿþz8BaseSelectorEventLoopTests.test_remove_reader_read_writec                 C   s"   t | jjj_|  | j d¡¡ d S r   )rg   r)   rQ   rh   r[   rB   rI   r   r
   r
   r   Útest_remove_reader_unknown  s    
ÿz5BaseSelectorEventLoopTests.test_remove_reader_unknownc                 C   s„   t | jjj_dd„ }| j d|¡ |  | jjjj¡ | jjjj	d \}}\}}|  
d|¡ |  
tj|¡ |  |¡ |  
||j¡ d S )Nc                   S   s   dS rd   r
   r
   r
   r
   r   re     rf   z<BaseSelectorEventLoopTests.test_add_writer.<locals>.<lambda>r   r   )rg   r)   rQ   rh   r[   rH   r@   ri   rj   rk   rl   rm   rw   rR   ro   rp   r
   r
   r   Útest_add_writer  s    
z*BaseSelectorEventLoopTests.test_add_writerc                 C   sÎ   t  ¡ }t  ¡ }t ddtj||f¡| jjj_dd„ }| j 	d|¡ |  
|jj¡ |  | jjjj¡ |  
| jjjj¡ | jjjjd \}}\}}|  d|¡ |  tjtjB |¡ |  ||¡ |  ||j¡ d S )Nr   c                   S   s   dS rd   r
   r
   r
   r
   r   re     rf   zEBaseSelectorEventLoopTests.test_add_writer_existing.<locals>.<lambda>r   )r   r   rm   rv   rn   r)   rQ   rh   r(   rH   r@   rx   rj   rB   ri   ry   rk   rl   rw   ro   rz   r
   r
   r   Útest_add_writer_existing  s    ÿz3BaseSelectorEventLoopTests.test_add_writer_existingc                 C   sB   t  ddt jd¡| jjj_|  | j d¡¡ |  	| jjj
j¡ d S r   )rm   rv   rw   r)   rQ   rh   r(   rB   rJ   r@   r€   rj   r   r
   r
   r   Útest_remove_writer#  s
    
ÿz-BaseSelectorEventLoopTests.test_remove_writerc                 C   s€   t  ¡ }t  ¡ }t ddtjtjB ||f¡| jjj_	|  
| j d¡¡ |  | jjjj¡ |  dtj|d ff| jjjjd ¡ d S r‚   )r   r   rm   rv   rn   rw   r)   rQ   rh   r(   r@   rJ   rB   r€   rj   rl   ry   rk   rƒ   r
   r
   r   Útest_remove_writer_read_write*  s    þ
ÿþz8BaseSelectorEventLoopTests.test_remove_writer_read_writec                 C   s"   t | jjj_|  | j d¡¡ d S r   )rg   r)   rQ   rh   r[   rB   rJ   r   r
   r
   r   Útest_remove_writer_unknown8  s    
ÿz5BaseSelectorEventLoopTests.test_remove_writer_unknownc              	   C   sb   t  ¡ }d|_t  ¡ | j_| j t ddtj|d f¡tjfg¡ |  	| jjj
¡ | jj |¡ d S ©NFr   )r   r   Ú
_cancelledr)   Ú_add_callbackÚ_process_eventsrm   rv   rn   r@   rj   rS   ©r   r{   r
   r
   r   Útest_process_events_read=  s    ÿþÿz3BaseSelectorEventLoopTests.test_process_events_readc              	   C   sR   t  ¡ }d|_t  ¡ | j_| j t ddtj|d f¡tjfg¡ | jj 	d¡ d S ©NTr   )
r   r   Ú	cancelledr)   r7   rŽ   rm   rv   rn   rS   r   r
   r
   r   Ú"test_process_events_read_cancelledI  s    ÿþÿz=BaseSelectorEventLoopTests.test_process_events_read_cancelledc              	   C   sR   t  ¡ }d|_t  ¡ | j_| j t ddtjd |f¡tjfg¡ | jj 	|¡ d S r‹   )
r   r   rŒ   r)   r   rŽ   rm   rv   rw   rS   ©r   r|   r
   r
   r   Útest_process_events_writeT  s    ÿþÿz4BaseSelectorEventLoopTests.test_process_events_writec              	   C   sR   t  ¡ }d|_t  ¡ | j_| j t ddtjd |f¡tjfg¡ | jj 	d¡ d S r‘   )
r   r   r’   r)   r8   rŽ   rm   rv   rw   rS   r”   r
   r
   r   Ú#test_process_events_write_cancelled_  s    ÿþÿz>BaseSelectorEventLoopTests.test_process_events_write_cancelledc                 C   s   t  ¡ }t  ¡ t  ¡ f|j_d}t jj}|| jdƒ&}| jjt  ¡ ||d W d   ƒ n1 s`0    Y  | j t	 
d¡¡ |  |jj|¡ d S )Néd   Z_accept_connection2)Úbacklogr   )r   r   Úacceptr(   ÚpatchÚobjectr)   Z_accept_connectionrT   r	   Úsleeprl   Ú
call_count)r   Úsockr˜   Zmock_objZaccept2_mockr
   r
   r   Útest_accept_connection_multiplej  s    
ÿ$z:BaseSelectorEventLoopTests.test_accept_connection_multiple)#r   r   r   r%   r3   ÚunittestÚskipIfr4   rG   r   rš   rL   rW   rX   r]   r_   rb   rc   ru   r}   r~   r   r„   r…   r†   r‡   rˆ   r‰   rŠ   r   r“   r•   r–   rŸ   Ú__classcell__r
   r
   r+   r   r#   4   s:   
%

	,r#   c                       s€   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
 d¡dd„ ƒZe
 d¡dd„ ƒZdd„ Zdd„ Z‡  ZS )ÚSelectorTransportTestsc                    s>   t ƒ  ¡  |  ¡ | _t tj¡| _t	 
tj¡| _d| jj_d S ©NrN   )r$   r%   Únew_test_loopr)   r:   Úmake_test_protocolr	   r/   Úprotocolr   r   Úsocketrž   rP   r(   r   r+   r
   r   r%   ~  s
    

zSelectorTransportTests.setUpc                 C   s$   t | j| j| jd ƒ}|  t|¡ |S r   )r   r)   rž   r§   Ú
addCleanupr"   ©r   r!   r
   r
   r   Úcreate_transport…  s
    ÿz'SelectorTransportTests.create_transportc                 C   s:   |   ¡ }|  |j| j¡ |  |j| j¡ |  |jd¡ d S r¤   )r«   ZassertIsÚ_loopr)   r   rž   Z_sock_fd©r   Útrr
   r
   r   Ú	test_ctor‹  s    z SelectorTransportTests.test_ctorc                 C   s*   |   ¡ }t ¡ |_| ¡  |j d ¡ d S r   )r«   r   r   Ú_force_closeÚabortrS   r­   r
   r
   r   Ú
test_abort‘  s    
z!SelectorTransportTests.test_abortc                 C   sz   |   ¡ }| ¡  |  | ¡ ¡ |  d| jjd ¡ | j d ¡ |  |j	d¡ | ¡  |  |j	d¡ |  d| jjd ¡ d S )Nr   rN   )
r«   r    r@   Ú
is_closingrl   r)   Úremove_reader_countr§   Úconnection_lostÚ
_conn_lostr­   r
   r
   r   rW   ˜  s    z!SelectorTransportTests.test_closec                 C   sJ   |   ¡ }|j d¡ | ¡  |  | jj¡ t | j¡ |  | j	j
j¡ d S ©Nó   data)r«   Ú_bufferÚextendr    rB   r)   Úreadersr:   r?   r§   rµ   rj   r­   r
   r
   r   Útest_close_write_buffer¥  s    z.SelectorTransportTests.test_close_write_bufferc                 C   s¨   |   ¡ }|j d¡ | j dtj¡ | j dtj¡ | d ¡ |  	| 
¡ ¡ |  |jtƒ ¡ |  | jj¡ |  | jj¡ | d ¡ |  | jj¡ |  d| jjd ¡ d S )Nó   1rN   r   )r«   r¹   rº   r)   r5   r   Úsentinelr6   r°   r@   r³   rl   r   rB   r»   Úwritersr´   r­   r
   r
   r   Útest_force_close®  s    

z'SelectorTransportTests.test_force_closezasyncio.log.logger.errorc                 C   s:   t ƒ }|  ¡ }t ¡ |_| |¡ | ¡  |j |¡ d S r   )r^   r«   r   r   r°   Ú_fatal_errorÚassert_not_calledrS   )r   Úm_excÚexcr®   r
   r
   r   Útest_fatal_error¿  s    

z'SelectorTransportTests.test_fatal_errorc                 C   s\   G dd„ dt ƒ}|ƒ }|  ¡ }t ¡ |_| |¡ |jt d¡|t	t	fd |j |¡ d S )Nc                   @   s   e Zd ZdS )zISelectorTransportTests.test_fatal_error_custom_exception.<locals>.MyErrorN©r   r   r   r
   r
   r
   r   ÚMyErrorÌ  s   rÇ   ú1Fatal error on transport
protocol:.*
transport:.*©Úexc_info)
Ú	Exceptionr«   r   r   r°   rÁ   rS   r:   ÚMockPatternÚMOCK_ANY)r   rÃ   rÇ   rÄ   r®   r
   r
   r   Ú!test_fatal_error_custom_exceptionÊ  s    

ÿýz8SelectorTransportTests.test_fatal_error_custom_exceptionc                 C   sr   t ƒ }|  ¡ }|  |j¡ |  |j¡ | |¡ | jj |¡ | j	j
 ¡  |  |j¡ |  |j¡ |  |j¡ d S r   )r^   r«   ZassertIsNotNoneZ	_protocolr¬   Z_call_connection_lostr§   rµ   rS   rž   r    rR   r   )r   rÄ   r®   r
   r
   r   Útest_connection_lostÚ  s    
z+SelectorTransportTests.test_connection_lostc                 C   sv   |   ¡ }|j d¡ | dtj¡ |  | jj¡ | 	d ¡ |  | 
¡ ¡ |  | jj¡ | dtj¡ |  | jj¡ d S )Nr½   rN   )r«   r¹   rº   r5   r   r¾   r@   r)   r»   r°   r³   rB   r­   r
   r
   r   Útest__add_readerè  s    
z'SelectorTransportTests.test__add_reader)r   r   r   r%   r«   r¯   r²   rW   r¼   rÀ   r   rš   rÅ   rÎ   rÏ   rÐ   r¢   r
   r
   r+   r   r£   |  s   	


r£   c                       s’  e Zd Z‡ fdd„ZdRd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e d¡dd„ ƒZe d¡dd„ ƒZe d¡dd„ ƒZe d¡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/d0„ Zd1d2„ Ze d3¡d4d5„ ƒZd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!e" #e$j%j&d>¡d?d@„ ƒZ'dAdB„ Z(dCdD„ Z)dEdF„ Z*dGdH„ Z+dIdJ„ Z,dKdL„ Z-dMdN„ Z.e dO¡dPdQ„ ƒZ/‡  Z0S )SÚSelectorSocketTransportTestsc                    sD   t ƒ  ¡  |  ¡ | _t tj¡| _t	 
tj¡| _d | _| jj_d S r¤   )r$   r%   r¥   r)   r:   r¦   r	   r/   r§   r   r   r¨   rž   Úsock_fdrP   r(   r   r+   r
   r   r%   ú  s
    

z"SelectorSocketTransportTests.setUpNc                 C   s&   t | j| j| j|d}|  t|¡ |S ©N©rE   ©r   r)   rž   r§   r©   r"   ©r   rE   r!   r
   r
   r   Úsocket_transport  s
    
ÿz-SelectorSocketTransportTests.socket_transportc                 C   sP   | j  ¡ }| j|d}| j  |¡ | j  d|j¡ t | j ¡ | jj	 
|¡ d S ©NrÔ   rN   ©r)   r9   r×   rT   Úassert_readerÚ_read_readyr:   r?   r§   Zconnection_maderS   ©r   rE   r®   r
   r
   r   r¯     s    
z&SelectorSocketTransportTests.test_ctorc                 C   s4   | j  ¡ }| j|d | j  |¡ |  | ¡ ¡ d S rÓ   )r)   r9   r×   rT   rR   Úresult)r   rE   r
   r
   r   Útest_ctor_with_waiter  s    
z2SelectorSocketTransportTests.test_ctor_with_waiterc                 C   sÔ   |   ¡ }t | j¡ |  |j¡ |  | ¡ ¡ | j d|j	¡ | 
¡  | 
¡  |  |j¡ |  | ¡ ¡ | j d¡ | ¡  | ¡  |  |j¡ |  | ¡ ¡ | j d|j	¡ | ¡  |  | ¡ ¡ | j d¡ d S r¤   )r×   r:   r?   r)   rB   Z_pausedr@   r>   rÚ   rÛ   rA   Zassert_no_readerrC   r    r­   r
   r
   r   Útest_pause_resume_reading  s$    z6SelectorSocketTransportTests.test_pause_resume_readingc                 C   sd   |   ¡ }t ¡ |_t ¡ |_t ¡ | j_tƒ | jj	_
d| jj_| ¡  | jj	 ¡  |  |jj¡ d S ©Nrf   )r×   r   r   r    rÁ   r)   Úcall_exception_handlerÚLookupErrorr§   Úeof_receivedr[   rž   rZ   r(   rÛ   rS   r@   rj   rª   r
   r
   r   Útest_read_eof_received_error.  s    


z9SelectorSocketTransportTests.test_read_eof_received_errorc                 C   s^   |   ¡ }t ¡ |_t ¡ | j_tƒ | jj_	d| j
j_| ¡  |  |jj¡ |  | jjj¡ d S r·   )r×   r   r   rÁ   r)   rá   râ   r§   Údata_receivedr[   rž   rZ   r(   rÛ   r@   rj   rª   r
   r
   r   Útest_data_received_error=  s    

z5SelectorSocketTransportTests.test_data_received_errorc                 C   s,   |   ¡ }d| jj_| ¡  | jj d¡ d S r·   )r×   rž   rZ   r(   rÛ   r§   rå   rS   rª   r
   r
   r   Útest_read_readyJ  s    
z,SelectorSocketTransportTests.test_read_readyc                 C   s>   |   ¡ }t ¡ |_d| jj_| ¡  | jj	 
¡  |j 
¡  d S rà   )r×   r   r   r    rž   rZ   r(   rÛ   r§   rã   rS   rª   r
   r
   r   Útest_read_ready_eofR  s    

z0SelectorSocketTransportTests.test_read_ready_eofc                 C   sL   |   ¡ }t ¡ |_d| jj_d| jj_| 	¡  | jj 
¡  |  |jj¡ d S )Nrf   T)r×   r   r   r    rž   rZ   r(   r§   rã   rÛ   rS   rB   rj   rª   r
   r
   r   Útest_read_ready_eof_keep_open\  s    


z:SelectorSocketTransportTests.test_read_ready_eof_keep_openúlogging.exceptionc                 C   s6   t | jj_|  ¡ }t ¡ |_| ¡  |  	|jj
¡ d S r   )rY   rž   rZ   r[   r×   r   r   rÁ   rÛ   rB   rj   ©r   rÃ   r!   r
   r
   r   Útest_read_ready_tryagaing  s
    

z5SelectorSocketTransportTests.test_read_ready_tryagainc                 C   s6   t | jj_|  ¡ }t ¡ |_| ¡  |  	|jj
¡ d S r   )ÚInterruptedErrorrž   rZ   r[   r×   r   r   rÁ   rÛ   rB   rj   rë   r
   r
   r   Ú$test_read_ready_tryagain_interruptedq  s
    

zASelectorSocketTransportTests.test_read_ready_tryagain_interruptedc                 C   sb   t ƒ  }| jj_|  ¡ }t ¡ |_t 	¡  | 
¡  W d   ƒ n1 sH0    Y  |j |¡ d S r   )ÚConnectionResetErrorrž   rZ   r[   r×   r   r   r°   r:   r;   rÛ   rS   ©r   rÃ   Úerrr!   r
   r
   r   Útest_read_ready_conn_reset{  s    

&z7SelectorSocketTransportTests.test_read_ready_conn_resetc                 C   s<   t ƒ  }| jj_|  ¡ }t ¡ |_| ¡  |j 	|d¡ d S ©Nz$Fatal read error on socket transport)
r^   rž   rZ   r[   r×   r   r   rÁ   rÛ   rS   rð   r
   r
   r   Útest_read_ready_err…  s    
þz0SelectorSocketTransportTests.test_read_ready_errc                 C   s6   d}t |ƒ| jj_|  ¡ }| |¡ | jj |¡ d S r·   )Úlenrž   r`   r(   r×   ÚwriterS   ©r   Údatar!   r
   r
   r   Ú
test_write‘  s
    
z'SelectorSocketTransportTests.test_writec                 C   sJ   t dƒ}t|ƒ| jj_|  ¡ }| |¡ | jj |¡ |  |t dƒ¡ d S r·   )	r   rõ   rž   r`   r(   r×   rö   rS   rl   r÷   r
   r
   r   Útest_write_bytearray™  s    
z1SelectorSocketTransportTests.test_write_bytearrayc                 C   s:   t dƒ}t|ƒ| jj_|  ¡ }| |¡ | jj |¡ d S r·   )Ú
memoryviewrõ   rž   r`   r(   r×   rö   rS   r÷   r
   r
   r   Útest_write_memoryview¢  s
    
z2SelectorSocketTransportTests.test_write_memoryviewc                 C   sF   |   ¡ }|j d¡ | d¡ |  | jjj¡ |  t	dgƒ|j¡ d S )Nr¸   rf   ©
r×   r¹   rº   rö   rB   rž   r`   rj   rl   r   rª   r
   r
   r   Útest_write_no_dataª  s
    
z/SelectorSocketTransportTests.test_write_no_datac                 C   sH   |   ¡ }|j d¡ | d¡ |  | jjj¡ |  t	ddgƒ|j¡ d S )Nó   data1ó   data2rý   rª   r
   r
   r   Útest_write_buffer±  s    
ÿz.SelectorSocketTransportTests.test_write_bufferc                 C   sH   d}d| j j_|  ¡ }| |¡ | j d|j¡ |  t	dgƒ|j
¡ d S ©Nr¸   é   rN   s   ta)rž   r`   r(   r×   rö   r)   Úassert_writerÚ_write_readyrl   r   r¹   r÷   r
   r
   r   Útest_write_partial¹  s    

z/SelectorSocketTransportTests.test_write_partialc                 C   s\   t dƒ}d| jj_|  ¡ }| |¡ | j d|j¡ |  	t
dgƒ|j¡ |  	|t dƒ¡ d S r  )r   rž   r`   r(   r×   rö   r)   r  r  rl   r   r¹   r÷   r
   r
   r   Útest_write_partial_bytearrayÃ  s    

z9SelectorSocketTransportTests.test_write_partial_bytearrayc                 C   sL   t dƒ}d| jj_|  ¡ }| |¡ | j d|j¡ |  	t
dgƒ|j¡ d S r  )rû   rž   r`   r(   r×   rö   r)   r  r  rl   r   r¹   r÷   r
   r
   r   Útest_write_partial_memoryviewÎ  s    

z:SelectorSocketTransportTests.test_write_partial_memoryviewc                 C   sR   d}d| j j_d| j j_|  ¡ }| |¡ | j d|j¡ |  	t
dgƒ|j¡ d S ©Nr¸   r   rN   )rž   r`   r(   rP   r×   rö   r)   r  r  rl   r   r¹   r÷   r
   r
   r   Útest_write_partial_noneØ  s    


z4SelectorSocketTransportTests.test_write_partial_nonec                 C   sH   t | jj_d}|  ¡ }| |¡ | j d|j¡ |  	t
dgƒ|j¡ d S ©Nr¸   rN   )rY   rž   r`   r[   r×   rö   r)   r  r  rl   r   r¹   r÷   r
   r
   r   Útest_write_tryagainã  s    

z0SelectorSocketTransportTests.test_write_tryagainúasyncio.selector_events.loggerc                 C   s®   t ƒ  }| jj_d}|  ¡ }t ¡ |_| |¡ |j 	|d¡ d|_
| j ¡  | |¡ |  | jjj¡ |  |j
d¡ | |¡ | |¡ | |¡ | |¡ |j 	d¡ d S )Nr¸   ú%Fatal write error on socket transportr   r  úsocket.send() raised exception.)r^   rž   r`   r[   r×   r   r   rÁ   rö   rS   r¶   Z
reset_mockrB   rj   rl   Úwarning)r   Úm_logrñ   rø   r!   r
   r
   r   Útest_write_exceptioní  s&    

þ





z1SelectorSocketTransportTests.test_write_exceptionc                 C   s   |   ¡ }|  t|jd¡ d S )NÚstr)r×   rK   Ú	TypeErrorrö   rª   r
   r
   r   Útest_write_str  s    z+SelectorSocketTransportTests.test_write_strc                 C   s:   |   ¡ }| ¡  |  |jd¡ | d¡ |  |jd¡ d S )Nr   r¸   r  )r×   r    rl   r¶   rö   rª   r
   r
   r   Útest_write_closing  s
    
z/SelectorSocketTransportTests.test_write_closingc                 C   s`   d}t |ƒ| jj_|  ¡ }|j |¡ | j d|j	¡ | 	¡  |  
| jjj¡ |  | jj¡ d S r  )rõ   rž   r`   r(   r×   r¹   rº   r)   r6   r  r@   rj   rB   r¿   r÷   r
   r
   r   Útest_write_ready  s    z-SelectorSocketTransportTests.test_write_readyc                 C   s€   d}t |ƒ| jj_|  ¡ }d|_|j |¡ | j 	d|j
¡ | 
¡  |  | jjj¡ |  | jj¡ | jj ¡  | jj d ¡ d S )Nr¸   TrN   )rõ   rž   r`   r(   r×   Ú_closingr¹   rº   r)   r6   r  r@   rj   rB   r¿   r    rS   r§   rµ   r÷   r
   r
   r   Útest_write_ready_closing  s    z5SelectorSocketTransportTests.test_write_ready_closingz)Assertions are disabled in optimized modec                 C   s   |   ¡ }|  t|j¡ d S r   )r×   rK   ÚAssertionErrorr  rª   r
   r
   r   Útest_write_ready_no_data(  s    z5SelectorSocketTransportTests.test_write_ready_no_datac                 C   sb   d}d| j j_|  ¡ }|j |¡ | j d|j¡ | ¡  | j 	d|j¡ |  
tdgƒ|j¡ d S r  ©rž   r`   r(   r×   r¹   rº   r)   r6   r  r  rl   r   r÷   r
   r
   r   Útest_write_ready_partial.  s    
z5SelectorSocketTransportTests.test_write_ready_partialc                 C   sb   d}d| j j_|  ¡ }|j |¡ | j d|j¡ | ¡  | j 	d|j¡ |  
tdgƒ|j¡ d S r	  r  r÷   r
   r
   r   Útest_write_ready_partial_none9  s    
z:SelectorSocketTransportTests.test_write_ready_partial_nonec                 C   s`   t | jj_|  ¡ }tddgƒ|_| j d|j	¡ | 	¡  | j 
d|j	¡ |  tdgƒ|j¡ d S )Nrÿ   r   rN   s
   data1data2)rY   rž   r`   r[   r×   r   r¹   r)   r6   r  r  rl   rª   r
   r
   r   Útest_write_ready_tryagainD  s    
z6SelectorSocketTransportTests.test_write_ready_tryagainc                 C   sH   t ƒ  }| jj_|  ¡ }t ¡ |_|j 	d¡ | 
¡  |j |d¡ d S )Nr¸   r  )r^   rž   r`   r[   r×   r   r   rÁ   r¹   rº   r  rS   ©r   rñ   r!   r
   r
   r   Útest_write_ready_exceptionO  s    
þz7SelectorSocketTransportTests.test_write_ready_exceptionc                 C   sT   |   ¡ }|  | ¡ ¡ | ¡  | jj tj¡ | ¡  |  	| jjj
d¡ | ¡  d S r   )r×   r@   Zcan_write_eofÚ	write_eofrž   ÚshutdownrS   r¨   ÚSHUT_WRrl   r   r    r­   r
   r
   r   Útest_write_eofZ  s    z+SelectorSocketTransportTests.test_write_eofc                 C   s–   |   ¡ }t| jj_| d¡ | ¡  |  |jt	dgƒ¡ |  
|j¡ |  | jjj¡ dd„ | jj_| ¡  |  
| jjj¡ | jj tj¡ | ¡  d S )Nr¸   c                 S   s   dS )Né   r
   )Ú_r
   r
   r   re   k  rf   zDSelectorSocketTransportTests.test_write_eof_buffer.<locals>.<lambda>)r×   rY   rž   r`   r[   rö   r"  rl   r¹   r   r@   Ú_eofrB   r#  rj   r  rS   r¨   r$  r    r­   r
   r
   r   Útest_write_eof_bufferc  s    

z2SelectorSocketTransportTests.test_write_eof_bufferc                 C   s.   |   ¡ }| ¡  | j t d¡¡ | ¡  d S ©Nr   )r×   r    r)   rT   r	   rœ   r"  r­   r
   r
   r   Útest_write_eof_after_closeq  s    z7SelectorSocketTransportTests.test_write_eof_after_closezasyncio.base_events.loggerc                 C   s0   t  ¡  }| j_|  ¡ }| ¡  | | j¡ d S r   )r   r   r)   r8   r×   r    rS   rÒ   )r   r  rJ   r!   r
   r
   r   Ú"test_transport_close_remove_writerw  s    z?SelectorSocketTransportTests.test_transport_close_remove_writer)N)1r   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  r  r  r  r  r  r    r¡   ÚsysÚflagsÚoptimizer  r  r  r  r!  r%  r)  r+  r,  r¢   r
   r
   r+   r   rÑ   ø  sZ   
	

	
	
	
	




	rÑ   c                       s¶   e Zd Z‡ fdd„Zd!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e d¡dd„ ƒZe d¡dd„ ƒZe d¡dd„ ƒZe d¡dd „ ƒZ‡  ZS )"Ú,SelectorSocketTransportBufferedProtocolTestsc                    s`   t ƒ  ¡  ˆ  ¡ ˆ _t tj¡ˆ _t	dƒˆ _
‡ fdd„ˆ jj_t tj¡ˆ _d ˆ _ˆ jj_d S )Nr   c                    s   ˆ j S r   ©Úbuf©Úhintr   r
   r   re   ˆ  rf   zDSelectorSocketTransportBufferedProtocolTests.setUp.<locals>.<lambda>rN   )r$   r%   r¥   r)   r:   r¦   r	   ÚBufferedProtocolr§   r   r2  Ú
get_bufferr[   r   r   r¨   rž   rÒ   rP   r(   r   r+   r   r   r%   ‚  s    


z2SelectorSocketTransportBufferedProtocolTests.setUpNc                 C   s&   t | j| j| j|d}|  t|¡ |S rÓ   rÕ   rÖ   r
   r
   r   r×     s
    
ÿz=SelectorSocketTransportBufferedProtocolTests.socket_transportc                 C   sP   | j  ¡ }| j|d}| j  |¡ | j  d|j¡ t | j ¡ | jj	 
|¡ d S rØ   rÙ   rÜ   r
   r
   r   r¯   “  s    
z6SelectorSocketTransportBufferedProtocolTests.test_ctorc                 C   sd   |   ¡ }t ¡ |_t ¡ | j_tƒ | jj_	| 
¡  |  |jj¡ |  | jjj¡ |  | jjj¡ d S r   )r×   r   r   rÁ   r)   rá   râ   r§   r6  r[   rÛ   r@   rj   rB   Úbuffer_updatedrª   r
   r
   r   Útest_get_buffer_errorœ  s    
zBSelectorSocketTransportBufferedProtocolTests.test_get_buffer_errorc                 C   sf   |   ¡ }t ¡ |_t ¡ | j_dd„ | jj_| 	¡  |  
|jj¡ |  
| jjj¡ |  | jjj¡ d S )Nc                 S   s   t dƒS r*  )r   r3  r
   r
   r   re   ®  rf   zXSelectorSocketTransportBufferedProtocolTests.test_get_buffer_zerosized.<locals>.<lambda>)r×   r   r   rÁ   r)   rá   r§   r6  r[   rÛ   r@   rj   rB   r7  rª   r
   r
   r   Útest_get_buffer_zerosized©  s    
zFSelectorSocketTransportBufferedProtocolTests.test_get_buffer_zerosizedc                    s’   t  tj¡| _|  ¡ }d| jj_| 	¡  | jj
 d¡ t  tj¡}tdƒ‰ ‡ fdd„|j_| |¡ d| jj_| 	¡  |j d¡ |j d¡ d S )Nr¸   r&  c                    s   ˆ S r   r
   r3  r1  r
   r   re   Ã  rf   zUSelectorSocketTransportBufferedProtocolTests.test_proto_type_switch.<locals>.<lambda>é
   éÿÿÿÿ)r:   r¦   r	   r/   r§   r×   rž   rZ   r(   rÛ   rå   rS   r5  r   r6  r[   Zset_protocolÚ	recv_intor7  )r   r!   Z	buf_protor
   r1  r   Útest_proto_type_switch¶  s    


zCSelectorSocketTransportBufferedProtocolTests.test_proto_type_switchc                 C   sn   |   ¡ }t ¡ |_t ¡ | j_tƒ | jj_	d| j
j_| ¡  |  |jj¡ |  | jjj¡ |  | jjj¡ d S )Nr:  )r×   r   r   rÁ   r)   rá   râ   r§   r7  r[   rž   r<  r(   rÛ   r@   rj   r6  rª   r
   r
   r   Útest_buffer_updated_errorÍ  s    

zFSelectorSocketTransportBufferedProtocolTests.test_buffer_updated_errorc                 C   sd   |   ¡ }t ¡ |_t ¡ |_t ¡ | j_tƒ | jj	_
d| jj_| ¡  | jj	 ¡  |  |jj¡ d S r*  )r×   r   r   r    rÁ   r)   rá   râ   r§   rã   r[   rž   r<  r(   rÛ   rS   r@   rj   rª   r
   r
   r   rä   Û  s    


zISelectorSocketTransportBufferedProtocolTests.test_read_eof_received_errorc                 C   s:   |   ¡ }d| jj_| ¡  | jj d¡ | jj d¡ d S )Nr:  r;  )	r×   rž   r<  r(   rÛ   r§   r6  rS   r7  rª   r
   r
   r   rç   ê  s
    
z<SelectorSocketTransportBufferedProtocolTests.test_read_readyc                 C   s>   |   ¡ }t ¡ |_d| jj_| ¡  | jj	 
¡  |j 
¡  d S r*  )r×   r   r   r    rž   r<  r(   rÛ   r§   rã   rS   rª   r
   r
   r   rè   ó  s    

z@SelectorSocketTransportBufferedProtocolTests.test_read_ready_eofc                 C   sL   |   ¡ }t ¡ |_d| jj_d| jj_| 	¡  | jj 
¡  |  |jj¡ d S )Nr   T)r×   r   r   r    rž   r<  r(   r§   rã   rÛ   rS   rB   rj   rª   r
   r
   r   ré   ý  s    


zJSelectorSocketTransportBufferedProtocolTests.test_read_ready_eof_keep_openrê   c                 C   s6   t | jj_|  ¡ }t ¡ |_| ¡  |  	|jj
¡ d S r   )rY   rž   r<  r[   r×   r   r   rÁ   rÛ   rB   rj   rë   r
   r
   r   rì     s
    

zESelectorSocketTransportBufferedProtocolTests.test_read_ready_tryagainc                 C   s6   t | jj_|  ¡ }t ¡ |_| ¡  |  	|jj
¡ d S r   )rí   rž   r<  r[   r×   r   r   rÁ   rÛ   rB   rj   rë   r
   r
   r   rî     s
    

zQSelectorSocketTransportBufferedProtocolTests.test_read_ready_tryagain_interruptedc                 C   sb   t ƒ  }| jj_|  ¡ }t ¡ |_t 	¡  | 
¡  W d   ƒ n1 sH0    Y  |j |¡ d S r   )rï   rž   r<  r[   r×   r   r   r°   r:   r;   rÛ   rS   rð   r
   r
   r   rò     s    

&zGSelectorSocketTransportBufferedProtocolTests.test_read_ready_conn_resetc                 C   s<   t ƒ  }| jj_|  ¡ }t ¡ |_| ¡  |j 	|d¡ d S ró   )
r^   rž   r<  r[   r×   r   r   rÁ   rÛ   rS   rð   r
   r
   r   rô   &  s    
þz@SelectorSocketTransportBufferedProtocolTests.test_read_ready_err)N)r   r   r   r%   r×   r¯   r8  r9  r=  r>  rä   rç   rè   ré   r   rš   rì   rî   rò   rô   r¢   r
   r
   r+   r   r0  €  s&   
		

	
	
	r0  c                       s  e Zd Z‡ fdd„Zd>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e d¡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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Ze d9¡d:d;„ ƒZ e d9¡d<d=„ ƒZ!‡  Z"S )?ÚSelectorDatagramTransportTestsc                    s@   t ƒ  ¡  |  ¡ | _t tj¡| _t	j
tjd| _d| jj_d S )N)Zspec_setrN   )r$   r%   r¥   r)   r:   r¦   r	   ZDatagramProtocolr§   r   r   r¨   rž   rP   r(   r   r+   r
   r   r%   5  s
    

z$SelectorDatagramTransportTests.setUpNc                 C   s8   |rd nt | jj_t| j| j| j|d}|  t|¡ |S )N©Úaddress)	r^   rž   Úgetpeernamer[   r   r)   r§   r©   r"   )r   rA  r!   r
   r
   r   Údatagram_transport<  s    
þz1SelectorDatagramTransportTests.datagram_transportc                 C   s.   |   ¡ }d| jj_| ¡  | jj dd¡ d S )N)r¸   ©ú0.0.0.0iÒ  r¸   rD  )rC  rž   Úrecvfromr(   rÛ   r§   Zdatagram_receivedrS   rª   r
   r
   r   rç   D  s    
ÿz.SelectorDatagramTransportTests.test_read_readyc                 C   s6   |   ¡ }t| jj_t ¡ |_| ¡  |  	|jj
¡ d S r   )rC  rY   rž   rF  r[   r   r   rÁ   rÛ   rB   rj   rª   r
   r
   r   rì   M  s
    

z7SelectorDatagramTransportTests.test_read_ready_tryagainc                 C   s<   |   ¡ }tƒ  }| jj_t ¡ |_| ¡  |j 	|d¡ d S )Nz&Fatal read error on datagram transport)
rC  r=   rž   rF  r[   r   r   rÁ   rÛ   rS   ©r   r!   rñ   r
   r
   r   rô   V  s    
þz2SelectorDatagramTransportTests.test_read_ready_errc                 C   sJ   |   ¡ }tƒ  }| jj_t ¡ |_| ¡  |  	|jj
¡ | jj |¡ d S r   )rC  r^   rž   rF  r[   r   r   rÁ   rÛ   rB   rj   r§   Úerror_receivedrS   rG  r
   r
   r   Útest_read_ready_oserra  s    
z4SelectorDatagramTransportTests.test_read_ready_oserrc                 C   sF   d}|   ¡ }| |d¡ |  | jjj¡ |  | jjjd |df¡ d S ©Nr¸   rD  r   )rC  Úsendtor@   rž   rj   rl   rk   r÷   r
   r
   r   Útest_sendtok  s    ÿz*SelectorDatagramTransportTests.test_sendtoc                 C   sJ   t dƒ}|  ¡ }| |d¡ |  | jjj¡ |  | jjjd |df¡ d S rJ  )r   rC  rK  r@   rž   rj   rl   rk   r÷   r
   r
   r   Útest_sendto_bytearrays  s    ÿz4SelectorDatagramTransportTests.test_sendto_bytearrayc                 C   sJ   t dƒ}|  ¡ }| |d¡ |  | jjj¡ |  | jjjd |df¡ d S rJ  )rû   rC  rK  r@   rž   rj   rl   rk   r÷   r
   r
   r   Útest_sendto_memoryview{  s    ÿz5SelectorDatagramTransportTests.test_sendto_memoryviewc                 C   sH   |   ¡ }|j d¡ | dd¡ |  | jjj¡ |  dgt|jƒ¡ d S )N©r¸   ©rE  i90  rf   r
   ©	rC  r¹   ÚappendrK  rB   rž   rj   rl   Úlistrª   r
   r
   r   Útest_sendto_no_dataƒ  s    ÿz2SelectorDatagramTransportTests.test_sendto_no_datac                 C   sJ   |   ¡ }|j d¡ | dd¡ |  | jjj¡ |  ddgt|jƒ¡ d S )N©rÿ   rP  r   rP  ©r   rP  rQ  rª   r
   r
   r   Útest_sendto_buffer‹  s    ÿýz1SelectorDatagramTransportTests.test_sendto_bufferc                 C   sh   t dƒ}|  ¡ }|j d¡ | |d¡ |  | jjj¡ |  ddgt	|jƒ¡ |  
|jd d t¡ d S ©Nr   rU  rP  rV  r   r   )r   rC  r¹   rR  rK  rB   rž   rj   rl   rS  r0   Úbytes©r   Zdata2r!   r
   r
   r   Útest_sendto_buffer_bytearray•  s    ÿýz;SelectorDatagramTransportTests.test_sendto_buffer_bytearrayc                 C   sh   t dƒ}|  ¡ }|j d¡ | |d¡ |  | jjj¡ |  ddgt	|jƒ¡ |  
|jd d t¡ d S rX  )rû   rC  r¹   rR  rK  rB   rž   rj   rl   rS  r0   rY  rZ  r
   r
   r   Útest_sendto_buffer_memoryview¡  s    ÿýz<SelectorDatagramTransportTests.test_sendto_buffer_memoryviewc                 C   sJ   d}t | jj_|  ¡ }| |d¡ | j d|j¡ |  dgt	|j
ƒ¡ d S )Nr¸   rP  rN   rO  )rY   rž   rK  r[   rC  r)   r  Ú_sendto_readyrl   rS  r¹   r÷   r
   r
   r   Útest_sendto_tryagain­  s    
ÿz3SelectorDatagramTransportTests.test_sendto_tryagainr  c                 C   sœ   d}t ƒ  }| jj_|  ¡ }t ¡ |_| |d¡ |  |jj	¡ |j 
|d¡ d|_d|_| |¡ | |¡ | |¡ | |¡ | |¡ |j 
d¡ d S )Nr¸   r
   ú'Fatal write error on datagram transportr   )Z123r  )r=   rž   rK  r[   rC  r   r   rÁ   r@   rj   rS   r¶   Ú_addressr  )r   r  rø   rñ   r!   r
   r
   r   Útest_sendto_exception¹  s$    
þ




z4SelectorDatagramTransportTests.test_sendto_exceptionc                 C   sL   d}t | jj_|  ¡ }t ¡ |_| |d¡ |  |j	d¡ |  
|jj¡ d S )Nr¸   r
   r   )ÚConnectionRefusedErrorrž   rK  r[   rC  r   r   rÁ   rl   r¶   rB   rj   r÷   r
   r
   r   Útest_sendto_error_receivedÐ  s    

z9SelectorDatagramTransportTests.test_sendto_error_receivedc                 C   sP   d}t | jj_| jdd}t ¡ |_| |¡ |  	|jj
¡ |  | jjj
¡ d S )Nr¸   ©rE  r   r@  )rb  rž   r`   r[   rC  r   r   rÁ   rK  rB   rj   r@   r§   rH  r÷   r
   r
   r   Ú$test_sendto_error_received_connectedÜ  s    


zCSelectorDatagramTransportTests.test_sendto_error_received_connectedc                 C   s   |   ¡ }|  t|jdd¡ d S )Nr  r
   )rC  rK   r  rK  rª   r
   r
   r   Útest_sendto_strè  s    z.SelectorDatagramTransportTests.test_sendto_strc                 C   s"   | j dd}|  t|jdd¡ d S )Nrd  r@  s   str)rE  r  )rC  rK   Ú
ValueErrorrK  rª   r
   r
   r   Útest_sendto_connected_addrì  s    
ÿz9SelectorDatagramTransportTests.test_sendto_connected_addrc                 C   s@   | j dd}| ¡  |  |jd¡ | dd¡ |  |jd¡ d S )N)r   r@  r   r¸   r  )rC  r    rl   r¶   rK  rª   r
   r
   r   Útest_sendto_closingñ  s
    z2SelectorDatagramTransportTests.test_sendto_closingc                 C   s~   d}t |ƒ| jj_|  ¡ }|j |df¡ | j d|j	¡ | 	¡  |  
| jjj¡ |  | jjjd |df¡ |  | jj¡ d S )Nr¸   rP  rN   r   )rõ   rž   rK  r(   rC  r¹   rR  r)   r6   r]  r@   rj   rl   rk   rB   r¿   r÷   r
   r
   r   Útest_sendto_readyø  s    ÿz0SelectorDatagramTransportTests.test_sendto_readyc                 C   s„   d}t |ƒ| jj_|  ¡ }d|_|j |df¡ | j 	d|j
¡ | 
¡  | jj |d¡ |  | jj¡ | jj ¡  | jj d ¡ d S )Nr¸   Tr
   rN   )rõ   rž   r`   r(   rC  r  r¹   rR  r)   r6   r]  rK  rS   rB   r¿   r    r§   rµ   r÷   r
   r
   r   Útest_sendto_ready_closing  s    z8SelectorDatagramTransportTests.test_sendto_ready_closingc                 C   sB   |   ¡ }| j d|j¡ | ¡  |  | jjj¡ |  | jj¡ d S r¤   )	rC  r)   r6   r]  rB   rž   rK  rj   r¿   rª   r
   r
   r   Útest_sendto_ready_no_data  s
    z8SelectorDatagramTransportTests.test_sendto_ready_no_datac                 C   sd   t | jj_|  ¡ }|j ddg¡ | j d|j	¡ | 	¡  | j 
d|j	¡ |  ddgt|jƒ¡ d S )N)rÿ   r
   )r   r
   rN   )rY   rž   rK  r[   rC  r¹   rº   r)   r6   r]  r  rl   rS  rª   r
   r
   r   Útest_sendto_ready_tryagain  s    
þz9SelectorDatagramTransportTests.test_sendto_ready_tryagainc                 C   sH   t ƒ  }| jj_|  ¡ }t ¡ |_|j 	d¡ | 
¡  |j |d¡ d S )N©r¸   r
   r_  )r=   rž   rK  r[   rC  r   r   rÁ   r¹   rR  r]  rS   r   r
   r
   r   Útest_sendto_ready_exception'  s    
þz:SelectorDatagramTransportTests.test_sendto_ready_exceptionc                 C   sB   t | jj_|  ¡ }t ¡ |_|j 	d¡ | 
¡  |  |jj¡ d S )Nrn  )rb  rž   rK  r[   rC  r   r   rÁ   r¹   rR  r]  rB   rj   rª   r
   r
   r   Ú test_sendto_ready_error_received3  s    

z?SelectorDatagramTransportTests.test_sendto_ready_error_receivedc                 C   sV   t | jj_| jdd}t ¡ |_|j 	d¡ | 
¡  |  |jj¡ |  | jjj¡ d S )Nrd  r@  rn  )rb  rž   r`   r[   rC  r   r   rÁ   r¹   rR  r]  rB   rj   r@   r§   rH  rª   r
   r
   r   Ú+test_sendto_ready_error_received_connection=  s    

zJSelectorDatagramTransportTests.test_sendto_ready_error_received_connectionz asyncio.base_events.logger.errorc                 C   s8   | j dd}tƒ }| |¡ |  | jjj¡ | ¡  d S )Nrd  r@  )rC  rb  rÁ   rB   r§   rH  rj   rÂ   )r   rÃ   r!   rñ   r
   r
   r   Útest_fatal_error_connectedH  s
    
z9SelectorDatagramTransportTests.test_fatal_error_connectedc                 C   sZ   G dd„ dt ƒ}| jdd}|ƒ }| |¡ |  | jjj¡ |jt 	d¡|t
t
fd d S )Nc                   @   s   e Zd ZdS )z[SelectorDatagramTransportTests.test_fatal_error_connected_custom_error.<locals>.MyExceptionNrÆ   r
   r
   r
   r   ÚMyExceptionR  s   rs  rd  r@  rÈ   rÉ   )rË   rC  rÁ   rB   r§   rH  rj   rS   r:   rÌ   rÍ   )r   rÃ   rs  r!   rñ   r
   r
   r   Ú'test_fatal_error_connected_custom_errorP  s    
ÿýzFSelectorDatagramTransportTests.test_fatal_error_connected_custom_error)N)#r   r   r   r%   rC  rç   rì   rô   rI  rL  rM  rN  rT  rW  r[  r\  r^  r   rš   ra  rc  re  rf  rh  ri  rj  rk  rl  rm  ro  rp  rq  rr  rt  r¢   r
   r
   r+   r   r?  3  s@   
		




r?  Ú__main__)r
   )Ú__doc__r-  rm   r¨   r    r   r4   ÚImportErrorr	   Zasyncio.selector_eventsr   r   r   r   Ztest.test_asyncior   r:   ÚANYrÍ   r   r   r   r"   ZTestCaser#   r£   rÑ   r0  r?  r   Úmainr
   r
   r
   r   Ú<module>   sF   

	  J|    4  -
