o
    )Zh                     @   s*  d dl m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m	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ G d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deeZ G dd deZ!e"dkre#  dS dS )    )futuresN)Futurerun_on_executor"future_set_result_unless_cancelled)utf8
to_unicode)gen)IOStream)	TCPServer)AsyncTestCasebind_unused_portgen_testc                   @   s   e Zd Zdd ZdS )MiscFutureTestc                 C   sz   t  }t|d | | d | |  t  }|  | }t|d | | | |s;| | d d S d S N*   )r   r   assertEqualresultZassertFalseZ	cancelledcancel)selfZfutZis_cancelled r   S/var/www/html/lang_env/lib/python3.10/site-packages/tornado/test/concurrent_test.py'test_future_set_result_unless_cancelled#   s   

z6MiscFutureTest.test_future_set_result_unless_cancelledN)__name__
__module____qualname__r   r   r   r   r   r   "   s    r   c                   @      e Zd Zejdd ZdS )	CapServerc                 c   sP    | dV }t|}|| kr|d n|td|   |  d S )N   
s   error	already capitalized
zok	%s)
read_untilr   upperwriter   close)r   streamaddressdatar   r   r   handle_stream7   s   zCapServer.handle_streamN)r   r   r   r   	coroutiner%   r   r   r   r   r   6       r   c                   @   s   e Zd ZdS )CapErrorN)r   r   r   r   r   r   r   r(   C   s    r(   c                   @   s   e Zd Zdd Zdd ZdS )BaseCapClientc                 C   s
   || _ d S Nport)r   r,   r   r   r   __init__H   s   
zBaseCapClient.__init__c                 C   s@   t dt|}|d u rtd| \}}|dkr|S t|)Nz
(.*)	(.*)
zdid not matchok)rematchr   	Exceptiongroupsr(   )r   r$   mstatusmessager   r   r   process_responseK   s   zBaseCapClient.process_responseN)r   r   r   r-   r6   r   r   r   r   r)   G   s    r)   c                   @   r   )GeneratorCapClientc                 c   s~    t d tt }t d |d| jfV  |t|d  t d |dV }t d |	  t
| |)N
capitalizeZ
connectingz	127.0.0.1
readingr   Z	returning)loggingdebugr	   socketconnectr,   r    r   r   r!   r   Returnr6   )r   Zrequest_datar"   r$   r   r   r   r8   W   s   



zGeneratorCapClient.capitalizeN)r   r   r   r   r&   r8   r   r   r   r   r7   V   r'   r7   c                       sl   e Zd ZdZ fddZ fddZdejfddZdejfd	d
Z	dejfddZ
dejfddZ  ZS )ClientTestMixinNc                    s<   t    t | _t \}}| j|g | j|d| _d S )Nr+   )supersetUpr   serverr   Zadd_socketsclient_classclient)r   sockr,   	__class__r   r   rB   h   s
   

zClientTestMixin.setUpc                    s   | j   t   d S r*   )rC   stoprA   tearDownr   rG   r   r   rJ   o   s   
zClientTestMixin.tearDownr   c                 C   s8   | j d}| j|| j |   | | d d S NZhelloHELLO)rE   r8   io_loop
add_futurerI   waitr   r   r   futurer   r   r   test_futures      zClientTestMixin.test_futurec                 C   s8   | j d}| j|| j |   | td|j d S )NrM   already capitalized)	rE   r8   rN   rO   rI   rP   assertRaisesRegexr(   r   rQ   r   r   r   test_future_errory   rT   z!ClientTestMixin.test_future_errorc                    "   t j fdd} j| d S )Nc                  3   s      j dV }  | d d S rL   )rE   r8   r   )r   rK   r   r   f   s   z)ClientTestMixin.test_generator.<locals>.fr   r&   rN   Zrun_syncr   rY   r   rK   r   test_generator      zClientTestMixin.test_generatorc                    rX   )Nc                   3   sB      td  jdV  W d    d S 1 sw   Y  d S )NrU   rM   )rV   r(   rE   r8   r   rK   r   r   rY      s   "z/ClientTestMixin.test_generator_error.<locals>.frZ   r[   r   rK   r   test_generator_error   r]   z$ClientTestMixin.test_generator_error)r   r   r   rD   rB   rJ   typingAnyrS   rW   r\   r^   __classcell__r   r   rG   r   r@   e   s    r@   c                   @   s   e Zd ZeZdS )GeneratorClientTestN)r   r   r   r7   rD   r   r   r   r   rb      s    rb   c                   @   s<   e Zd Zedd Zedd Zedd Zedd Zd	S )
RunOnExecutorTestc                 c   2    G dd dt }| }| V }| |d d S )Nc                   @   s    e Zd Zdd Zedd ZdS )z1RunOnExecutorTest.test_no_calling.<locals>.Objectc                 S      t jd| _d S N   r   threadThreadPoolExecutorexecutorrK   r   r   r   r-         z:RunOnExecutorTest.test_no_calling.<locals>.Object.__init__c                 S      dS r   r   rK   r   r   r   rY         z3RunOnExecutorTest.test_no_calling.<locals>.Object.fNr   r   r   r-   r   rY   r   r   r   r   Object   s    rp   r   objectrY   r   r   rp   oanswerr   r   r   test_no_calling   
   
z!RunOnExecutorTest.test_no_callingc                 c   rd   )Nc                   @   "   e Zd Zdd Ze dd ZdS )z8RunOnExecutorTest.test_call_with_no_args.<locals>.Objectc                 S   re   rf   rh   rK   r   r   r   r-      rl   zARunOnExecutorTest.test_call_with_no_args.<locals>.Object.__init__c                 S   rm   r   r   rK   r   r   r   rY      rn   z:RunOnExecutorTest.test_call_with_no_args.<locals>.Object.fNro   r   r   r   r   rp          rp   r   rq   rs   r   r   r   test_call_with_no_args   rw   z(RunOnExecutorTest.test_call_with_no_argsc                 c   rd   )Nc                   @   s&   e Zd Zdd Zedddd ZdS )z9RunOnExecutorTest.test_call_with_executor.<locals>.Objectc                 S   re   rf   )r   ri   rj   _Object__executorrK   r   r   r   r-      rl   zBRunOnExecutorTest.test_call_with_executor.<locals>.Object.__init__r{   )rk   c                 S   rm   r   r   rK   r   r   r   rY      rn   z;RunOnExecutorTest.test_call_with_executor.<locals>.Object.fNro   r   r   r   r   rp      s    rp   r   rq   rs   r   r   r   test_call_with_executor   rw   z)RunOnExecutorTest.test_call_with_executorc                 #   s<    G dd dt }|   fdd}| V }| |d d S )Nc                   @   rx   )z2RunOnExecutorTest.test_async_await.<locals>.Objectc                 S   re   rf   rh   rK   r   r   r   r-      rl   z;RunOnExecutorTest.test_async_await.<locals>.Object.__init__c                 S   rm   r   r   rK   r   r   r   rY      rn   z4RunOnExecutorTest.test_async_await.<locals>.Object.fNro   r   r   r   r   rp      ry   rp   c                     s      I d H } | S r*   )rY   )ru   rt   r   r   rY      s   z-RunOnExecutorTest.test_async_await.<locals>.fr   )rr   r   )r   rp   rY   r   r   r}   r   test_async_await   s   z"RunOnExecutorTest.test_async_awaitN)r   r   r   r   rv   rz   r|   r~   r   r   r   r   rc      s    


rc   __main__)$Z
concurrentr   r;   r/   r=   r_   ZunittestZtornado.concurrentr   r   r   Ztornado.escaper   r   tornador   Ztornado.iostreamr	   Ztornado.tcpserverr
   Ztornado.testingr   r   r   r   r   r1   r(   rr   r)   r7   r@   rb   rc   r   mainr   r   r   r   <module>   s.   +?