Ë
    #ïàj  ã                   óî   — d Z ddlmZ ddlm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mZ ddlmZmZ exs eZej&                  d	„ «       Zej*                  j-                  d
d¬«      d„ «       Zd„ Zd„ Zy)z
Test wsgi.é    )ÚThreadPoolExecutor)Úprint_tbN)ÚExceptionTrap)ÚBaseUrlSession)Úwsgi)ÚIS_MACOSÚ
IS_WINDOWSc               #   ó  K  — t        j                  «       } d„ }d}|| f}t        j                  ||t        rdnd¬«      } dj
                  di t        «       ¤Ž}|j                  «       5 }t        «       –— ddd«       y# 1 sw Y   yxY w­w)	z)Fucking simple wsgi server fixture (duh).c                 ó$   — d}dg} |||«       dgS )Nz200 OK)zContent-typez
text/plains   Hello world!© )Ú_environÚstart_responseÚstatusÚresponse_headerss       úE/srv/dav/.venv/lib/python3.12/site-packages/cheroot/test/test_wsgi.pyÚappzsimple_wsgi_server.<locals>.app   s$   € ØˆØ:Ð;ÐÙ�vÐ/Ô0ØÐ Ð ó    z::iX  é   )Útimeoutzhttp://localhost:{port}/Nr   )ÚportendÚfind_available_local_portr   ÚServerÚIS_SLOW_ENVÚformatÚlocalsÚ_run_in_thread)Úportr   ÚhostÚaddrÚserverÚurlÚthreads          r   Úsimple_wsgi_serverr#      s‚   è ø€ ô ×,Ñ,Ó.€Dò!ð €DØ�ˆ:€DÜ�[‰[˜˜sµ;©CÀBÔG€Fà
+Ð
$×
+Ñ
+Ñ
7¬f«hÑ
7€Cà	×	Ñ	Ó	 ð  FÜ‹hŠ÷÷ ñ üs   ‚A(BÁ*B Á7	BÂ B	ÂBé   é   )ÚrerunsÚreruns_delayc                 óš  ‡— t        | d   ¬«      Št        j                  j                  dd¬«      }‰j	                  d|«       ˆfd„}t        t        rdnd	¬
«      5 }t        t        rdnd«      D �cg c]  }|j                  |«      ‘Œ }}t        d„ |D «       «      }ddd«       ‰j                  «        rJ ‚yc c}w # 1 sw Y   Œ#xY w)z+Test the connection keep-alive works (duh).r!   )Úbase_urlé   iè  )Úpool_connectionsÚpool_maxsizezhttp://c                  óö   •— t        t        j                  j                  «      5 } ‰j	                  d«      }|j                  «        d d d «       t         j                  «       t        | «      S # 1 sw Y   Œ)xY w)NÚinfo)	r   ÚrequestsÚ
exceptionsÚConnectionErrorÚgetÚraise_for_statusr   ÚtbÚbool)ÚtrapÚrespÚsessions     €r   Ú
do_requestz-test_connection_keepalive.<locals>.do_request3   s`   ø€ Üœ8×.Ñ.×>Ñ>Ó?ð 	$À4Ø—;‘;˜vÓ&ˆDØ×!Ñ!Ô#÷	$ô 	�—‘ÔÜ�D‹zÐ÷		$ð 	$ús   ¥"A/Á/A8é
   é2   )Úmax_workerséú   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w©N)Úresult)Ú.0Útasks     r   ú	<genexpr>z,test_connection_keepalive.<locals>.<genexpr>?   s   è ø€ Ò7¨�t—{‘{—}Ñ7ùs   ‚N)ÚSessionr/   ÚadaptersÚHTTPAdapterÚmountr   r   ÚrangeÚsubmitÚsumÚclose)r#   Úpooledr9   ÚpoolÚnÚtasksÚfailuresr8   s          @r   Útest_connection_keepaliverQ   )   sÍ   ø€ ô Ð1°%Ñ8Ô9€GÜ×Ñ×*Ñ*ØØð +ó €Fð ‡M�M�)˜VÔ$ôô 
­k©¸rÔ	Bð 8Àdô ¥+™3°4Ó8ö
àð �K‰K˜
Õ#ð
ˆð 
ô Ñ7°Ô7Ó7ˆ÷8ð ‡M�M„OÙÐˆ<ˆxùò
÷8ð 8ús   ÁCÁ3B<ÂCÂ<CÃC
c                 ó
  — | j                  t        j                  dd„ «       t        j                  d«      }d|_        d}t	        j
                  t        |¬«      5  |j                  ddd«       ddd«       y# 1 sw Y   yxY w)	z>Verify that repeat calls of ``Gateway.start_response()`` fail.Úget_environc                 ó   — i S r?   r   ©Úselfs    r   ú<lambda>z:test_gateway_start_response_called_twice.<locals>.<lambda>G   ó   € À"€ r   NTz<^WSGI start_response called a second time with no exc_info.$©ÚmatchÚ200r   )Úsetattrr   ÚGatewayÚstarted_responseÚpytestÚraisesÚRuntimeErrorr   ©ÚmonkeypatchÚwsgi_gatewayÚerr_msgs      r   Ú(test_gateway_start_response_called_twicerf   E   sh   € à×ÑœŸ™ m±_ÔEÜ—<‘< Ó%€LØ$(€LÔ!àL€GÜ	�‰”|¨7Ô	3ñ 5Ø×#Ñ# E¨2¨tÔ4÷5÷ 5ñ 5ús   ÁA9Á9Bc                 óø   — | j                  t        j                  dd„ «       t        j                  d«      }d}t        j                  t
        |¬«      5  |j                  d«       ddd«       y# 1 sw Y   yxY w)z>Check that calling ``Gateway.write()`` needs started response.rS   c                 ó   — i S r?   r   rU   s    r   rW   zGtest_gateway_write_needs_start_response_called_before.<locals>.<lambda>R   rX   r   Nz*^WSGI write called before start_response.$rY   )r\   r   r]   r_   r`   ra   Úwriterb   s      r   Ú5test_gateway_write_needs_start_response_called_beforerj   P   s\   € à×ÑœŸ™ m±_ÔEÜ—<‘< Ó%€Là:€GÜ	�‰”|¨7Ô	3ñ !Ø×Ñ˜4Ô ÷!÷ !ñ !ús   ÁA0Á0A9)Ú__doc__Úconcurrent.futures.threadr   Ú	tracebackr   r_   r   r/   Újaraco.contextr   Úrequests_toolbelt.sessionsr   rD   Úcherootr   Úcheroot._compatr   r	   r   Úfixturer#   ÚmarkÚflakyrQ   rf   rj   r   r   r   ú<module>ru      sy   ðÙ å 8Ý ã ã Û Ý (Ý @å ß 0ð Ò$˜*€ð ‡�ñó ðð( ‡�×Ñ˜!¨!ÐÓ,ñó -ðò65ó!r   