a
    !f$                     @   s^   d dl Z G dd de j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dS )    Nc                   @   s|   e Z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S )TestConnectionPoolc                 C   s   ddl m} |S )Nr   )ConnectionPool)gcloud.bigtable.happybase.poolr   )selfr    r   d/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/bigtable/happybase/test_pool.py_getTargetClass   s    z"TestConnectionPool._getTargetClassc                 O   s   |   |i |S N)r   )r   argskwargsr   r   r   _makeOne   s    zTestConnectionPool._makeOnec                 C   s   dd l }dd l}ddlm} d}t }|g| }t|}| j||d}| t|jt	|
  | t|j|j | |jji  |j}	| t|	|jjj | |	  | |	j| |	jD ]$}
| t|
| | |
j|u  qd S )Nr   
Connection   instance)six	threading$gcloud.bigtable.happybase.connectionr   	_Instancer   
assertTrue
isinstance_locktypeLock_thread_connectionslocalassertEqual__dict___queuemovesqueue	LifoQueuefullmaxsize	_instance)r   r   r   r   sizeinstance_copy
all_copiesr   poolr!   
connectionr   r   r   test_constructor_defaults   s$    

z,TestConnectionPool.test_constructor_defaultsc                 C   sR   d}d}t  }d}| j||||d}|jjD ] }| |j| | |j| q,d S )NZfooz<>   )table_prefixtable_prefix_separatorr   )r   r   r   r!   r   r-   r.   )r   r-   r.   r   r&   r)   r*   r   r   r   test_constructor_passes_kwargs3   s    z1TestConnectionPool.test_constructor_passes_kwargsc                 C   s"  ddl m} ddlm} ddlm} G dd d|}t }t }t }t|||g}|d|d}	| |	j | 	|	j
|u  |d	|d}	| 	|	j | 	|	j
|u  d
}
|||d  | j|
d	|d}W d    n1 s0    Y  |jjD ]0}	| 	t|	| | 	|	j
|u  | |	j qd S )Nr   _Monkeyr   r)   c                   @   s   e Zd ZdZdd ZdS )zSTestConnectionPool.test_constructor_ignores_autoconnect.<locals>.ConnectionWithOpenFc                 S   s
   d| _ d S )NT)_open_calledr   r   r   r   openK   s    zXTestConnectionPool.test_constructor_ignores_autoconnect.<locals>.ConnectionWithOpen.openN)__name__
__module____qualname__r3   r5   r   r   r   r   ConnectionWithOpenG   s   r9   F)Zautoconnectr   Tr,   )gcloud._testingr1   r   r   gcloud.bigtable.happybaser)   r   assertFalser3   r   r%   r   r   r!   r   )r   r1   r   MUTr9   Zinstance_copy1Zinstance_copy2Zinstance_copy3r   r*   r&   r)   r   r   r   $test_constructor_ignores_autoconnectB   s*    .z7TestConnectionPool.test_constructor_ignores_autoconnectc           
         s   ddl m} ddlm} ddlm} d}t }|g| }t|g  d	 fdd	}|||d | |}W d    n1 s0    Y  |jj	D ]$}	| 
t|	| | 
|	j|u  q|  d g d S )
Nr   r0   r   r2   r,   c                    s     |  S r	   )appendtimeoutZget_instance_callsr   r   r   mock_get_instanceo   s    
zNTestConnectionPool.test_constructor_infers_instance.<locals>.mock_get_instance)Z_get_instance)N)r:   r1   r   r   r;   r)   r   r   r   r!   r   r   r%   r   )
r   r1   r   r=   r&   r'   r(   rC   r)   r*   r   rB   r    test_constructor_infers_instanced   s    
(z3TestConnectionPool.test_constructor_infers_instancec                 C   s<   d }|  t | | W d    n1 s.0    Y  d S r	   )assertRaises	TypeErrorr   r   r&   r   r   r   !test_constructor_non_integer_size~   s    z4TestConnectionPool.test_constructor_non_integer_sizec                 C   st   d}|  t | | W d    n1 s.0    Y  d}|  t | | W d    n1 sf0    Y  d S )Nir   )rE   
ValueErrorr   rG   r   r   r   "test_constructor_non_positive_size   s    (z5TestConnectionPool.test_constructor_non_positive_sizec                 C   sj   ddl m} ddlm} d}t }|||d | j||d}W d    n1 sR0    Y  t||_|S )Nr   r0   r2   )Z_MIN_POOL_SIZEr   )r:   r1   r;   r)   objectr   _Queuer   )r   queue_returnr1   r=   r&   r   r)   r   r   r   _makeOneWithMockQueue   s    ,
z(TestConnectionPool._makeOneWithMockQueuec                 C   sX   t  }| |}d}|j|d}| ||u  | |jjd|fg | |jjg  d S )Ni  r@   T)rL   rO   _acquire_connectionr   r   r   
_get_calls
_put_callsr   rN   r)   rA   r*   r   r   r   test__acquire_connection   s    
z+TestConnectionPool.test__acquire_connectionc                 C   sz   ddl m} | d }d}| | |j|d W d    n1 sF0    Y  | |jjd|fg | |jjg  d S )Nr   )NoConnectionsAvailablei  r@   T)	r   rU   rO   rE   rP   r   r   rQ   rR   )r   rU   r)   rA   r   r   r    test__acquire_connection_failure   s    
*z3TestConnectionPool.test__acquire_connection_failurec                 C   sX   dd l }dd l}t }| |}| }|jrB| t||j n| t||j	 d S Nr   )

contextlibr   _ConnectionrO   r*   PY3r   r   _GeneratorContextManagerZGeneratorContextManager)r   rX   r   rN   r)   Zcnxn_contextr   r   r   "test_connection_is_context_manager   s    
z5TestConnectionPool.test_connection_is_context_managerc                 C   s   t  }| |}d}| t|jd |j|d.}| |jj| | ||u  W d    n1 sf0    Y  | t|jd | |j	j
d|fg | |j	j|d d fg d S )N7   currentr@   T)rY   rO   r<   hasattrr   r*   r   r^   r   r   rQ   rR   rS   r   r   r   test_connection_no_current_cnxn   s    
,

z2TestConnectionPool.test_connection_no_current_cnxnc                 C   s   t  }t  }| |}||j_d}|j|d}| ||u  W d    n1 sR0    Y  | |jjg  | |jj	g  | |jj| d S )NiA  r@   )
rY   rO   r   r^   r*   r   r   r   rQ   rR   )r   Zcurrent_cnxnrN   r)   rA   r*   r   r   r   !test_connection_with_current_cnxn   s    
,z4TestConnectionPool.test_connection_with_current_cnxnN)r6   r7   r8   r   r   r+   r/   r>   rD   rH   rJ   rO   rT   rV   r\   r`   ra   r   r   r   r   r      s   "

r   c                   @   s   e Zd Zdd Zdd ZdS )_Clientc                 C   s
   d| _ d S rW   Z
stop_callsr4   r   r   r   __init__   s    z_Client.__init__c                 C   s   |  j d7  _ d S )Nr,   rc   r4   r   r   r   stop   s    z_Client.stopN)r6   r7   r8   rd   re   r   r   r   r   rb      s   rb   c                   @   s   e Zd Zdd ZdS )rY   c                 C   s   d S r	   r   r4   r   r   r   r5      s    z_Connection.openN)r6   r7   r8   r5   r   r   r   r   rY      s   rY   c                   @   s   e Zd ZdddZdd ZdS )r   r   c                 C   s   t || _t | _d S r	   )listcopiesrb   Z_client)r   rg   r   r   r   rd      s    
z_Instance.__init__c                 C   s4   | j r,| j d }| j dd  | j d d < |S | S d S )Nr   r,   )rg   r   resultr   r   r   copy   s
    
z_Instance.copyN)r   )r6   r7   r8   rd   rj   r   r   r   r   r      s   
r   c                   @   s*   e Zd ZdddZd	ddZd
ddZdS )rM   Nc                 C   s   || _ g | _g | _d S r	   )ri   rQ   rR   rh   r   r   r   rd      s    z_Queue.__init__c                 C   s8   | j ||f | jd u r.dd l}|jjjn| jS d S rW   )rQ   r?   ri   r   r    r!   Empty)r   blockrA   r   r   r   r   get   s
    
z
_Queue.getc                 C   s   | j |||f d S r	   )rR   r?   )r   itemrl   rA   r   r   r   put  s    z
_Queue.put)N)NN)NN)r6   r7   r8   rd   rm   ro   r   r   r   r   rM      s   

rM   )Z	unittest2ZTestCaser   rL   rb   rY   r   rM   r   r   r   r   <module>   s    G	