a
    !fb                     @   s   d dl Z d dlZG dd dejZG dd dej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                   @   sH   e Zd ZdddZdddZdd Zd	d
 Zdd Zdd Zdd Z	dS )Test__get_instanceNc                 C   s   ddl m} ||dS )Nr   _get_instancetimeout)$gcloud.bigtable.happybase.connectionr   )selfr   r    r	   j/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/bigtable/happybase/test_connection.py_callFUT   s    zTest__get_instance._callFUTr	   c                 C   s   ddl m} ddlm} ddlm} |t||d}|||d | j|d}W d    n1 s`0    Y  |\}	| ||	 |	j	}
| |
j
d d	d
i}|d ur|d |d< | |
j| | |
jd | |
jd d S )Nr   )partial_Monkey
connection	instancesfailed_locations)ZClientr   r	   ZadminTg     @@Ztimeout_seconds   )	functoolsr   gcloud._testingr   gcloud.bigtable.happybaser   _Clientr   assertEqualclientargskwargsstart_calls
stop_calls)r   r   r   r   r   r   MUTZclient_with_instancesresultinstancer   Zexpected_kwargsr	   r	   r
   _helper   s$    *zTest__get_instance._helperc                 C   s   t  }| j|gd d S N)r   	_Instancer"   r   r!   r	   r	   r
   test_default2   s    zTest__get_instance.test_defaultc                 C   s   t  }| jd|gd d S )Ni7  )r   r   r$   r&   r	   r	   r
   test_with_timeout6   s    z$Test__get_instance.test_with_timeoutc                 C   s6   |  t |   W d    n1 s(0    Y  d S N)assertRaises
ValueErrorr"   r   r	   r	   r
   test_with_no_instances:   s    z)Test__get_instance.test_with_no_instancesc                 C   sF   t  t  g}| t | j|d W d    n1 s80    Y  d S r#   r%   r*   r+   r"   )r   r   r	   r	   r
   test_with_too_many_instances>   s    z/Test__get_instance.test_with_too_many_instancesc                 C   sJ   t  }d}| t" | j|g|gd W d    n1 s<0    Y  d S )Nzus-central1-cr   r.   )r   r!   Zfailed_locationr	   r	   r
   test_with_failed_locationsC   s    z-Test__get_instance.test_with_failed_locations)N)Nr	   r	   )
__name__
__module____qualname__r   r"   r'   r(   r-   r/   r0   r	   r	   r	   r
   r      s   

r   c                   @   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d Zdd  Zd!d" Zd#d$ ZdQd&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zee j!d8d9 d:kd;d<d= Z"ee j!d8d9 d:kd;d>d? Z#ee j!d8d9 d:kd;d@dA Z$dRdCdDZ%dEdF Z&dGdH Z'dIdJ Z(dKdL Z)dMdN Z*dOdP Z+d8S )STestConnectionc                 C   s   ddl m} |S )Nr   )
Connection)r   r5   )r   r5   r	   r	   r
   _getTargetClassM   s    zTestConnection._getTargetClassc                 O   s   |   |i |S r)   )r6   r   r   r   r	   r	   r
   _makeOneQ   s    zTestConnection._makeOnec                 C   sp   t  }| |jjd | j|d}| |jjd | |jjd | |j| | |jd  | |jd d S )Nr   )r!   r   _)	r%   r   _clientr   r8   r   	_instancetable_prefixtable_prefix_separatorr   r!   r   r	   r	   r
   test_constructor_defaultsT   s    z(TestConnection.test_constructor_defaultsc                 C   sT   t  }| jd|d}| |jjd | |jjd | |jd  | |jd d S )NFautoconnectr!   r   r9   )r%   r8   r   r:   r   r   r<   r=   r>   r	   r	   r
   test_constructor_no_autoconnect_   s    z.TestConnection.test_constructor_no_autoconnectc                    s   ddl m} ddlm} t t }g   fdd}|||dJ | jdd |d}| |jd  | |j	d	 | |j
 W d    n1 s0    Y  |  |g d S )
Nr   r   r   c                    s     |  S r)   appendr   Zget_instance_calledr!   r	   r
   mock_get_instanceo   s    
zKTestConnection.test_constructor_missing_instance.<locals>.mock_get_instancer   F)rA   r!   r   r9   )r   r   r   r   r%   objectr8   r   r<   r=   r;   )r   r   r   r   rF   r   r	   rE   r
   !test_constructor_missing_instanceg   s    ,z0TestConnection.test_constructor_missing_instancec                 C   sP   d}d}d}t  }t |gd}| j||||d}| |j| | |j| d S )NFtable-prefixsepcopiesrA   r<   r=   r!   )r%   r8   r   r<   r=   )r   rA   r<   r=   Zinstance_copyr!   r   r	   r	   r
   test_constructor_explicit|   s    z(TestConnection.test_constructor_explicitc                 C   sB   t  }| t | j|dd W d    n1 s40    Y  d S )Nfoo)r!   unknown)r%   r*   	TypeErrorr8   r&   r	   r	   r
   &test_constructor_with_unknown_argument   s    z5TestConnection.test_constructor_with_unknown_argumentc              	      s   ddl m} ddlm} g   fdd}t }|||d0 | j|t t t t t d W d    n1 sp0    Y  | t d | 	d	 d  | 	d
 d  | 	d d  | 	d d  | 	d d  d S )Nr   r   r   c                    s     |  d S r)   rC   msgZwarnedr	   r
   	mock_warn   s    zCTestConnection.test_constructor_with_legacy_args.<locals>.mock_warnZ_WARN)r!   hostportcompat	transportprotocolr   rX   rY   rZ   r[   r\   )
r   r   r   r   r%   r8   rG   r   lenassertIn)r   r   r   rV   r!   r	   rU   r
   !test_constructor_with_legacy_args   s     
$z0TestConnection.test_constructor_with_legacy_argsc                 C   sD   t  }| t  | j|t d W d    n1 s60    Y  d S )N)r!   r   )r%   r*   r+   r8   rG   r&   r	   r	   r
   *test_constructor_with_timeout_and_instance   s    z9TestConnection.test_constructor_with_timeout_and_instancec                 C   sB   t  }| t | jd|d W d    n1 s40    Y  d S )NF)rA   r<   rG   r*   rQ   r8   )r   r<   r	   r	   r
   "test_constructor_non_string_prefix   s
    z1TestConnection.test_constructor_non_string_prefixc                 C   sB   t  }| t | jd|d W d    n1 s40    Y  d S )NF)rA   r=   ra   )r   r=   r	   r	   r
   ,test_constructor_non_string_prefix_separator   s
    z;TestConnection.test_constructor_non_string_prefix_separatorc                 C   sP   t  }| jd|d}| |jjd |  | |jjd | |jjd d S NFr@   r   r   )r%   r8   r   r:   r   openr   r>   r	   r	   r
   	test_open   s    zTestConnection.test_openc                 C   sP   t  }| jd|d}| |jjd |  | |jjd | |jjd d S rd   )r%   r8   r   r:   r   closer   r>   r	   r	   r
   
test_close   s    zTestConnection.test_closec                 C   s@   t  }| jd|d}| |jjd |  | |jjd d S rd   )r%   r8   r   r:   r   __del__r>   r	   r	   r
   test___del__with_instance   s
    z(TestConnection.test___del__with_instancec                 C   sD   t  }| jd|d}| |jjd |`|  | |jjd d S )NFr@   r   )r%   r8   r   r:   r   r;   ri   r>   r	   r	   r
   test___del__no_instance   s    z&TestConnection.test___del__no_instancec                 C   sF   d}d}t  }| jd|||d}d}||}| ||| |  d S )NrI   <>FrM   	some-namer%   r8   Z_table_namer   )r   r<   r=   r!   r   nameprefixedr	   r	   r
    test__table_name_with_prefix_set   s    

z/TestConnection.test__table_name_with_prefix_setc                 C   s2   t  }| jd|d}d}||}| || d S )NFr@   rm   rn   )r   r!   r   ro   rp   r	   r	   r
   #test__table_name_with_no_prefix_set   s    
z2TestConnection.test__table_name_with_no_prefix_setc                 C   s^   ddl m} t }| jd|d}d}||}| t|| | |j| | |j	| d S )Nr   TableFr@   
table-name
Zgcloud.bigtable.happybase.tablert   r%   r8   table
assertTrue
isinstancer   ro   r   )r   rt   r!   r   ro   rw   r	   r	   r
   test_table_factory   s    
z!TestConnection.test_table_factoryTc           
      C   s   ddl m} t }d}d}| jd|||d}d}|j||d}| t|| || | }	|rn| |j|	 n| |j| | |j	| d S )	Nr   rs   rI   rl   FrM   ru   
use_prefixrv   )
r   r|   rt   r!   r<   r=   r   ro   rw   Zprefixed_namer	   r	   r
   _table_factory_prefix_helper   s"    z+TestConnection._table_factory_prefix_helperc                 C   s   | j dd d S )NTr{   r}   r,   r	   r	   r
   test_table_factory_with_prefix  s    z-TestConnection.test_table_factory_with_prefixc                 C   s   | j dd d S )NFr{   r~   r,   r	   r	   r
   &test_table_factory_with_ignored_prefix  s    z5TestConnection.test_table_factory_with_ignored_prefixc                 C   sX   ddl m} d}d}t||d ||d gd}| jd|d}| }| |||g d S )Nr   rs   table-name1table-name2list_tables_resultFr@   Zgcloud.bigtable.tablert   r%   r8   Ztablesr   )r   rt   table_name1table_name2r!   r   r    r	   r	   r
   test_tables  s    zTestConnection.test_tablesc           
      C   sn   ddl m} d}d}d}|| | }d}t||d ||d gd}| jd|||d	}| }	| |	|g d S )
Nr   rs   prefixrl   r   r   r   F)rA   r!   r<   r=   r   )
r   rt   r<   r=   Zunprefixed_table_name1r   r   r!   r   r    r	   r	   r
   test_tables_with_prefix(  s$    z&TestConnection.test_tables_with_prefixc                    s  dd l }ddlm} ddlm} t }| jd|d}t g   fdd}d}d	}t }	d
}
t }d}t }||	|
d ||d |i}g fdd}||||d ||| W d    n1 s0    Y  \}| 	|j
||f | 	|ji  | 	|jd | 	t t|	||g |j}| 	t|d |j|dd | 	|d j| | 	|d j | 	|d j|
 | 	|d j | 	|d j|d | 	|d j d S )Nr   r   r   Fr@   c                    s     |  S r)   rC   )option)called_optionsmock_gc_ruler	   r
   mock_parse_family_optionF  s    
zBTestConnection.test_create_table.<locals>.mock_parse_family_optionru   Zcf1Zcf2s   cf3:   :c                     s   t | i |} | |S r)   _MockLowLevelTablerD   r   r   r    tables_createdr	   r
   
make_tableZ  s    
z4TestConnection.test_create_table.<locals>.make_table)_LowLevelTable_parse_family_optionr      column_family_id)key   zutf-8)operatorr   r   r   r   r%   r8   rG   create_tabler   r   r   create_callssetcol_fam_createdr]   sort
attrgetterr   gc_ruledecode)r   r   r   r   r!   r   r   ro   Zcol_fam1Zcol_fam_option1Zcol_fam2Zcol_fam_option2Zcol_fam3Zcol_fam_option3familiesr   table_instancer   r	   )r   r   r   r
   test_create_table<  sX    *z TestConnection.test_create_tablec                 C   sV   t  }| jd|d}d}d }| t ||| W d    n1 sH0    Y  d S NFr@   ru   )r%   r8   r*   rQ   r   r   r!   r   ro   r   r	   r	   r
   test_create_table_bad_type{  s    z)TestConnection.test_create_table_bad_typec                 C   sV   t  }| jd|d}d}i }| t ||| W d    n1 sH0    Y  d S r   )r%   r8   r*   r+   r   r   r	   r	   r
   test_create_table_bad_value  s    z*TestConnection.test_create_table_bad_valuec           
   	      s   ddl m} ddlm} t }| jd|d}g  fdd}d}d	i i}	|||d
F | | |||	 W d    n1 s0    Y  W d    n1 s0    Y  | t	d | d j
d d S )Nr   r   r   Fr@   c                     s$    |d< t | i |}| |S )Ncreate_errorr   r   err_valr   r	   r
   r     s    
z=TestConnection._create_table_error_helper.<locals>.make_tableru   rO   r   r   )r   r   r   r   r%   r8   r*   r   r   r]   r   )
r   r   Zerr_typer   r   r!   r   r   ro   r   r	   r   r
   _create_table_error_helper  s    Hz)TestConnection._create_table_error_helperNr   )r      zgRPC only in Python 2.7c                 C   sH   ddl m} ddlm} ddlm} |d d |jjd }| 	|| d S )Nr   
interfacesface)AlreadyExists)
	grpc.betar   grpc.framework.interfaces.facer   r   r   NetworkError
StatusCodeZALREADY_EXISTSr   )r   r   r   r   r   r	   r	   r
    test_create_table_already_exists  s    z/TestConnection.test_create_table_already_existsc                 C   s>   ddl m} ddlm} |d d |jjd }| ||j d S )Nr   r   r   )r   r   r   r   r   r   ZINTERNALr   )r   r   r   r   r	   r	   r
   "test_create_table_connection_error  s    z1TestConnection.test_create_table_connection_errorc                 C   s   |  tt d S r)   )r   RuntimeErrorr,   r	   r	   r
   test_create_table_other_error  s    z,TestConnection.test_create_table_other_errorFc           	         s   ddl m} ddlm} t }| jd|d}g   fdd}d}|||d	 |j||d
 W d    n1 sp0    Y   \}| |j||f | |j	i  | |j
d d S )Nr   r   r   Fr@   c                     s   t | i |} | |S r)   r   r   r   r	   r
   r     s    
z7TestConnection._delete_table_helper.<locals>.make_tableru   r   disabler   )r   r   r   r   r%   r8   Zdelete_tabler   r   r   delete_calls)	r   r   r   r   r!   r   r   ro   r   r	   r   r
   _delete_table_helper  s    ,z#TestConnection._delete_table_helperc                 C   s   |    d S r)   )r   r,   r	   r	   r
   test_delete_table  s    z TestConnection.test_delete_tablec                    st   ddl m} ddlm} g   fdd}|||d | jdd W d    n1 sV0    Y  |  |jg d S )	Nr   r   r   c                    s     |  d S r)   rC   rS   rU   r	   r
   rV     s    z;TestConnection.test_delete_table_disable.<locals>.mock_warnrW   Tr   )r   r   r   r   r   r   Z_DISABLE_DELETE_MSG)r   r   r   rV   r	   rU   r
   test_delete_table_disable  s    *z(TestConnection.test_delete_table_disablec                    s   ddl m} ddlm} t }| jd|d}d}g   fdd}|||d	 || W d    n1 sl0    Y  |  |j|f g d S )
Nr   r   r   Fr@   ru   c                    s     |  d S r)   rC   rS   rU   r	   r
   rV     s    z3TestConnection.test_enable_table.<locals>.mock_warnrW   )	r   r   r   r   r%   r8   Zenable_tabler   Z_ENABLE_TMPLr   r   r   r!   r   ro   rV   r	   rU   r
   test_enable_table  s    (z TestConnection.test_enable_tablec                    s   ddl m} ddlm} t }| jd|d}d}g   fdd}|||d	 || W d    n1 sl0    Y  |  |j|f g d S )
Nr   r   r   Fr@   ru   c                    s     |  d S r)   rC   rS   rU   r	   r
   rV     s    z4TestConnection.test_disable_table.<locals>.mock_warnrW   )	r   r   r   r   r%   r8   Zdisable_tabler   Z_DISABLE_TMPLr   r	   rU   r
   test_disable_table  s    (z!TestConnection.test_disable_tablec                    s   ddl m} ddlm} t }| jd|d}d}g   fdd}|||d	 ||}W d    n1 sl0    Y  | | |  |j	|f g d S )
Nr   r   r   Fr@   ru   c                    s     |  d S r)   rC   rS   rU   r	   r
   rV     s    z7TestConnection.test_is_table_enabled.<locals>.mock_warnrW   )
r   r   r   r   r%   r8   Zis_table_enabledrx   r   Z_IS_ENABLED_TMPL)r   r   r   r!   r   ro   rV   r    r	   rU   r
   test_is_table_enabled  s    (
z$TestConnection.test_is_table_enabledc                    s   ddl m} ddlm} t }| jd|d}d}g   fdd}|||d	 || W d    n1 sl0    Y  |  |j|df g d S )
Nr   r   r   Fr@   ru   c                    s     |  d S r)   rC   rS   rU   r	   r
   rV   ,  s    z4TestConnection.test_compact_table.<locals>.mock_warnrW   )	r   r   r   r   r%   r8   Zcompact_tabler   Z_COMPACT_TMPLr   r	   rU   r
   test_compact_table!  s    (z!TestConnection.test_compact_table)T)F),r1   r2   r3   r6   r8   r?   rB   rH   rN   rR   r_   r`   rb   rc   rf   rh   rj   rk   rq   rr   rz   r}   r   r   r   r   r   r   r   r   	unittest2Z
skipUnlesssysversion_infor   r   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r4   K   s\   	
?		
	


r4   c                   @   sL   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S )Test__parse_family_optionc                 C   s   ddl m} ||S )Nr   )r   )r   r   )r   r   r   r	   r	   r
   r   7  s    z"Test__parse_family_option._callFUTc                 C   s   i }|  |}| |d  d S r)   r   r   r   r   r    r	   r	   r
   test_dictionary_no_keys;  s    
z1Test__parse_family_option.test_dictionary_no_keysc                 C   s   d }|  |}| |d  d S r)   r   r   r	   r	   r
   	test_null@  s    
z#Test__parse_family_option.test_nullc                    s   ddl m} ddlm} g   fdd}dd i}|||d | |}W d    n1 s\0    Y  | |d  | t d | d d  d S )	Nr   r   r   c                    s     |  d S r)   rC   rS   rU   r	   r
   rV   K  s    zDTest__parse_family_option.test_dictionary_bad_key.<locals>.mock_warnZbadkeyrW   r   )r   r   r   r   r   r   r]   r^   )r   r   r   rV   r   r    r	   rU   r
   test_dictionary_bad_keyE  s    (z1Test__parse_family_option.test_dictionary_bad_keyc                 C   s:   ddl m} d}d|i}| |}||}| || d S )Nr   MaxVersionsGCRule*   max_versions)gcloud.bigtable.column_familyr   r   r   )r   r   versionsr   r    r   r	   r	   r
   test_dictionary_versions_keyV  s    
z6Test__parse_family_option.test_dictionary_versions_keyc                 C   sN   dd l }ddlm} d}|jdd}d|i}| |}||}| || d S )Nr   MaxAgeGCRuleQ r   daystime_to_live)datetimer   r   	timedeltar   r   )r   r   r   r   max_ager   r    r   r	   r	   r
   test_dictionary_ttl_key`  s    
z1Test__parse_family_option.test_dictionary_ttl_keyc                 C   s   dd l }ddlm} ddlm} ddlm} d}d}||d}| |}|jdd	}	||	}
||}||
|gd
}| || d S )Nr   )GCRuleIntersectionr   r   r   r   )r   r   r   r   )rules)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r    r   Zgc_rule1Zgc_rule2r   r	   r	   r
   test_dictionary_both_keysl  s    
z3Test__parse_family_option.test_dictionary_both_keysc                 C   s0   t  }| t|t | |}| || d S r)   )rG   ZassertFalsery   dictr   r   r   r	   r	   r
   test_non_dictionary  s    
z-Test__parse_family_option.test_non_dictionaryN)r1   r2   r3   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r   5  s   
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c                 O   sJ   | dg | _| jD ]
}| |_q| dg | _|| _|| _d| _d| _d S )Nr   r   r   )popr   r   r   r   r   r   r   )r   r   r   r!   r	   r	   r
   __init__  s    
z_Client.__init__c                 C   s   |  j d7  _ d S Nr   )r   r,   r	   r	   r
   start  s    z_Client.startc                 C   s   |  j d7  _ d S r   )r   r,   r	   r	   r
   stop  s    z_Client.stopc                 C   s   | j | jfS r)   r   r,   r	   r	   r
   list_instances  s    z_Client.list_instancesN)r1   r2   r3   r   r   r   r   r	   r	   r	   r
   r     s   
r   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
r%   r	   c                 C   s   t || _t | _|| _d S r)   )listrL   r   r:   r   )r   rL   r   r	   r	   r
   r     s    
z_Instance.__init__c                 C   s4   | j r,| j d }| j dd  | j d d < |S | S d S )Nr   r   rK   )r   r    r	   r	   r
   copy  s
    
z_Instance.copyc                 C   s   | j S r)   r   r,   r	   r	   r
   list_tables  s    z_Instance.list_tablesN)r	   r	   )r1   r2   r3   r   r   r   r	   r	   r	   r
   r%     s   
r%   c                   @   s   e Zd ZdddZdS )_MockLowLevelColumnFamilyNc                 C   s   || _ || _d S r)   )r   r   r   r   r   r	   r	   r
   r     s    z"_MockLowLevelColumnFamily.__init__)N)r1   r2   r3   r   r	   r	   r	   r
   r     s   r   c                   @   s0   e Zd Zdd Zdd ZdddZdd	d
ZdS )r   c                 O   s.   || _ || _|d| _d| _d| _g | _d S )Nr   r   )r   r   getr   r   r   r   r7   r	   r	   r
   r     s    z_MockLowLevelTable.__init__c                 C   s   |  j d7  _ d S r   )r   r,   r	   r	   r
   delete  s    z_MockLowLevelTable.deleter	   c                 C   s*   |  j d7  _ | j| | jr&| jd S r   )r   r   extendr   )r   Zcolumn_familiesr	   r	   r
   create  s    z_MockLowLevelTable.createNc                 C   s   t ||dS )N)r   )r   r   r	   r	   r
   column_family  s    z _MockLowLevelTable.column_family)r	   )N)r1   r2   r3   r   r   r   r   r	   r	   r	   r
   r     s   
r   )r   r   ZTestCaser   r4   r   rG   r   r%   r   r   r	   r	   r	   r
   <module>   s   6   mT