o
    )ZhN                     @   s   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m	Z	m
Z
 d dlmZ G dd dZG dd	 d	ee	ZG d
d dee	ZdS )    N)	validator)
RuleRouter)AsyncHTTPTestCasegen_test)WSGIContainerc                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )WSGIAppMixinc                 C   s   t  N)NotImplementedErrorself r   M/var/www/html/lang_env/lib/python3.10/site-packages/tornado/test/wsgi_test.pyget_executor   s   zWSGIAppMixin.get_executorc                    sP   |    tjddd| _ fdd}td|| jfd|| jfd|| jfgS )	N   g333333?)timeoutc                    s   t t|  dS )Nexecutor)r   r   )Zappr   r   r   make_container   s   z,WSGIAppMixin.get_app.<locals>.make_container/simple/barrier/streaming_barrier)r   	threadingBarrierbarrierr   simple_wsgi_appbarrier_wsgi_appstreaming_barrier_wsgi_app)r   r   r   r   r   get_app   s   zWSGIAppMixin.get_appc                 C   s   d}dg}||| d S )Nz200 OK)zContent-Typez
text/plainr   )r   start_responsestatusresponse_headersr   r   r   respond_plain"   s   zWSGIAppMixin.respond_plainc                 C   s   |  | dgS )N   Hello world!)r!   )r   environr   r   r   r   r   '   s   
zWSGIAppMixin.simple_wsgi_appc                 C   s>   |  | z| j }W n tjy   dg Y S w d| gS )N   broken barriers   ok %dr!   r   waitr   BrokenBarrierErrorr   r#   r   nr   r   r   r   +   s   


zWSGIAppMixin.barrier_wsgi_appc                 c   sL    |  | dV  z| j }W n tjy   dV  Y d S w d| V  d S )Ns   ok r$   s   %dr%   r(   r   r   r   r   4   s   
z'WSGIAppMixin.streaming_barrier_wsgi_appN)	__name__
__module____qualname__r   r   r!   r   r   r   r   r   r   r   r      s    	r   c                   @   4   e Zd Zdd Zdd Zedd Zedd Zd	S )
WSGIContainerDummyExecutorTestc                 C   s   d S r   r   r
   r   r   r   r   @   s   z+WSGIContainerDummyExecutorTest.get_executorc                 C      |  d}| |jd d S Nr   r"   fetchassertEqualbodyr   responser   r   r   test_simpleC      
z*WSGIContainerDummyExecutorTest.test_simplec                    V   | j   t| j| d| j| dI d H }|D ]	}| |jd qd S )Nr   r$   	r   resetasynciogatherhttp_clientr2   get_urlr3   r4   r   respsrespr   r   r   test_concurrent_barrierG      

z6WSGIContainerDummyExecutorTest.test_concurrent_barrierc                    r9   )Nr   s   ok broken barrierr:   r@   r   r   r   !test_concurrent_streaming_barrierQ   rD   z@WSGIContainerDummyExecutorTest.test_concurrent_streaming_barrierNr*   r+   r,   r   r7   r   rC   rE   r   r   r   r   r.   ?   s    
	r.   c                   @   r-   )
WSGIContainerThreadPoolTestc                 C   s
   t j S r   )
concurrentZfuturesZThreadPoolExecutorr
   r   r   r   r   ]   s   
z(WSGIContainerThreadPoolTest.get_executorc                 C   r/   r0   r1   r5   r   r   r   r7   `   r8   z'WSGIContainerThreadPoolTest.test_simplec                    \   | j   t| j| d| j| dI d H }| ddgtdd |D  d S )Nr      ok 0   ok 1c                 S      g | ]}|j qS r   r4   .0rB   r   r   r   
<listcomp>k       zGWSGIContainerThreadPoolTest.test_concurrent_barrier.<locals>.<listcomp>	r   r;   r<   r=   r>   r2   r?   r3   sortedr   rA   r   r   r   rC   d      

"z3WSGIContainerThreadPoolTest.test_concurrent_barrierc                    rI   )Nr   rJ   rK   c                 S   rL   r   rM   rN   r   r   r   rP   t   rQ   zQWSGIContainerThreadPoolTest.test_concurrent_streaming_barrier.<locals>.<listcomp>rR   rT   r   r   r   rE   m   rU   z=WSGIContainerThreadPoolTest.test_concurrent_streaming_barrierNrF   r   r   r   r   rG   \   s    
rG   )r<   concurrent.futuresrH   r   Zwsgiref.validater   Ztornado.routingr   Ztornado.testingr   r   Ztornado.wsgir   r   r.   rG   r   r   r   r   <module>   s    3