B
    H/\-
                 @   s   d Z ddlmZ e  ddlmZ yddlZW n  ek
rP   ddl	m
Z Y nX yddlZW n  ek
r~   ddlmZ Y nX ddlZddlmZ G dd dejZed	kre  dS )
zTest than modules in gevent.green package are indeed green.
To do that spawn a green server and then access it using a green socket.
If either operation blocked the whole script would block and timeout.
    )monkeyN)request)server)paramsc               @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestGreennessFc             C   s*   t j}dtj_t|tj| _d| j_d S )NzHTTP/1.0r   )r   ZDEFAULT_BIND_ADDR_TUPLEBaseHTTPServerZBaseHTTPRequestHandlerZprotocol_versionZ
HTTPServerhttpdrequest_count)selfZserver_address r   ;lib/python3.7/site-packages/gevent/tests/test__greenness.pysetUp/   s    zTestGreenness.setUpc             C   s   | j   d | _ d S )N)r   Zserver_close)r
   r   r   r   tearDown5   s    
zTestGreenness.tearDownc             C   s   | j   | j  jd7  _d S )N   )r   Zhandle_requestr	   )r
   r   r   r   serve9   s    
zTestGreenness.servec          	   C   sp   t | j}| jj d }| tj}t	d|  W d Q R X | 
|jjd |d | 
| jjd d S )Nr   zhttp://127.0.0.1:%si  g{Gz?)geventZspawnr   r   ZsocketZgetsocknameZassertRaisesurllib2Z	HTTPErrorZurlopenZassertEqualZ	exceptioncodegetr	   )r
   r   Zportexcr   r   r   test_urllib2=   s    
zTestGreenness.test_urllib2N)__name__
__module____qualname__Zcheck_totalrefcountr   r   r   r   r   r   r   r   r   ,   s
   r   __main__)__doc__r   r   Z	patch_allZgevent.testingZtestingZ	greentestr   ImportErrorZurllibr   r   Zhttpr   r   ZTestCaser   r   mainr   r   r   r   <module>   s    