a
    !fO                     @   s   d dl Z G dd de jZG dd de j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G dd deZG dd deZdS )    Nc                   @   s&  e Zd ZdZdZde d e ZdZed e ZdZdZ	d	Z
d
Zd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dEd(d)Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Z d4d5 Z!d6d7 Z"d8d9 Z#d:d; Z$d<d= Z%d>d? Z&d@dA Z'dBdC Z(dDS )F	TestTablez
project-idzinstance-idz	projects/z/instances/table-id/tables/i5  s   row-keyfamilys	   qualifierd   s   valuec                 C   s   ddl m} |S )Nr   )Table)gcloud.bigtable.tabler   )selfr    r
   [/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/bigtable/test_table.py_getTargetClass!   s    zTestTable._getTargetClassc                 O   s   |   |i |S N)r   )r	   argskwargsr
   r
   r   _makeOne%   s    zTestTable._makeOnec                 C   s8   d}t  }| ||}| |j| | |j|u  d S )Nr   )objectr   assertEqualtable_id
assertTrueZ	_instance)r	   r   instancetabler
   r
   r   test_constructor(   s
    zTestTable.test_constructorc                 C   s:   d}d}t |}| ||}|d | }| |j| d S )Nr   instance_namer   )	_Instancer   r   name)r	   r   r   r   r   Zexpected_namer
   r
   r   test_name_property0   s    zTestTable.test_name_propertyc                 C   st   ddl m} d}t }| |d }d}|j||d}| t|| | |j| | |j	|u  | |j
| d S )Nr   ColumnFamilyr   column_family_idgc_rule)gcloud.bigtable.column_familyr   r   r   column_familyr   
isinstancer   r   r    _table)r	   r   r   r    r   r   r"   r
   r
   r   test_column_family_factory9   s    z$TestTable.test_column_family_factoryc                 C   sZ   ddl m} d}| |d }d}||}| t|| | |j| | |j| d S )Nr   )	DirectRowr      row_key)	gcloud.bigtable.rowr&   r   rowr   r#   r   _row_keyr$   )r	   r&   r   r   row_keyr)   r
   r
   r   test_row_factory_directG   s    
z!TestTable.test_row_factory_directc                 C   sd   ddl m} d}| |d }d}t }|j||d}| t|| | |j| | |j	| d S )Nr   )ConditionalRowr   r'   filter_)
r(   r-   r   r   r)   r   r#   r   r*   r$   )r	   r-   r   r   r+   r/   r)   r
   r
   r   test_row_factory_conditionalS   s    z&TestTable.test_row_factory_conditionalc                 C   s^   ddl m} d}| |d }d}|j|dd}| t|| | |j| | |j| d S )Nr   )	AppendRowr   r'   Tappend)	r(   r1   r   r)   r   r#   r   r*   r$   )r	   r1   r   r   r+   r)   r
   r
   r   test_row_factory_append`   s    z!TestTable.test_row_factory_appendc                 C   sN   |  | jd }| t" |jdt dd W d    n1 s@0    Y  d S )Nr'   T)r/   r3   )r   TABLE_IDassertRaises
ValueErrorr)   r   )r	   r   r
   r
   r   test_row_factory_failurel   s    z"TestTable.test_row_factory_failurec                 C   s2   t  }| | j|}| | j|}| || d S r   )r   r   r5   r   )r	   r   table1table2r
   r
   r   test___eq__q   s    zTestTable.test___eq__c                 C   s$   |  | jd }t }| || d S r   )r   r5   r   assertNotEqualr	   r9   r:   r
   r
   r   test___eq__type_differw   s    z TestTable.test___eq__type_differc                 C   s8   t  }| | j|}| | j|}||k}| | d S r   )r   r   r5   ZassertFalse)r	   r   r9   r:   Zcomparison_valr
   r
   r   test___ne__same_value|   s
    zTestTable.test___ne__same_valuec                 C   s(   |  dd}|  dd}| || d S )NZ	table_id1Z	instance1Z	table_id2Z	instance2)r   r<   r=   r
   r
   r   test___ne__   s    zTestTable.test___ne__r
   c                    s   ddl m  ddlm} t| jd}t| j|d}| | j	|} fdd|pPdD }d }|rt
 }|D ],}	|j|	j }
|	jd urh|
j|	j  qht|| j| j	|d	}t
 }|| |_}d }|j||d
}| || | |jd|| jfi fg d S )Nr   	_to_bytes	_FakeStubtimeout_secondsclientc                    s   g | ]}t  |d qS ))key)_CreateTableRequestSplitPB).0rI   rA   r
   r   
<listcomp>   s   z1TestTable._create_test_helper.<locals>.<listcomp>r
   )Zinitial_splitsparentr   r   )initial_split_keyscolumn_familiesZCreateTable)Zgcloud._helpersrB   gcloud.bigtable._testingrD   _ClientTIMEOUT_SECONDSr   INSTANCE_NAMEr   r5   _TablePBrO   r   r    Z	MergeFromto_pb_CreateTableRequestPB_table_stubcreater   method_calls)r	   rN   rO   rD   rH   r   r   Z	splits_pbZtable_pbcfZcf_pb
request_pbresponse_pbstubexpected_resultresultr
   rA   r   _create_test_helper   sB    

zTestTable._create_test_helperc                 C   s   d }|  | d S r   r`   r	   rN   r
   r
   r   test_create   s    zTestTable.test_createc                 C   s   ddg}|  | d S )Ns   s1s   s2ra   rb   r
   r
   r   test_create_with_split_keys   s    z%TestTable.test_create_with_split_keysc           
      C   s^   ddl m} ddl m} d}||d }d}|d}||d |d}d }||g}	| j||	d d S )	Nr   r   )MaxVersionsGCRulezcol-fam-id1zcol-fam-id2*   r   rO   )r!   r   re   r`   )
r	   r   re   Zcf_id1Zcf1Zcf_id2r    Zcf2rN   rO   r
   r
   r    test_create_with_column_families   s    
z*TestTable.test_create_with_column_familiesc                 C   s   ddl m} t| jd}t| j|d}| | j|}t| j	d}d}t
 }t||id}|| |_}	|||i}
| }| ||
 | |	jd|| jfi fg d S )	Nr   rC   rE   rG   r   Zfoorg   ZGetTable)rP   rD   rQ   rR   r   rS   r   r5   _GetTableRequestPB
TABLE_NAME_ColumnFamilyPBrT   rW   r"   Zlist_column_familiesr   rY   )r	   rD   rH   r   r   r[   ZCOLUMN_FAMILY_IDr"   r\   r]   r^   r_   r
   r
   r   _list_column_families_helper   s(    
z&TestTable._list_column_families_helperc                 C   s   |    d S r   )rm   r	   r
   r
   r   test_list_column_families   s    z#TestTable.test_list_column_familiesc                 C   s   ddl m} ddlm} t| jd}t| j|d}| | j	|}t
| jd}| }|| |_}d }	| }
| |
|	 | |jd|| jfi fg d S )Nr   )	empty_pb2rC   rE   rG   ri   ZDeleteTable)Zgoogle.protobufrp   rP   rD   rQ   rR   r   rS   r   r5   _DeleteTableRequestPBrk   EmptyrW   deleter   rY   )r	   rp   rD   rH   r   r   r[   r\   r]   r^   r_   r
   r
   r   test_delete   s     zTestTable.test_deletec                    s  ddl m} ddlm} ddlm} t| jd}t| j	|d}| 
| j|}t g   fdd}	|d u rvtd	}
nt|d
}t|g}
||
 |_}t }|||	d  |j| j|d}W d    n1 s0    Y  | || | |jd| jfi fg |  |j| j|fg d S )Nr   _MonkeyrC   r   rE   rG   c                    s     | ||f S r   r2   )
table_namer+   r/   Zmock_createdr[   r
   r   mock_create_row_request  s    z;TestTable._read_row_helper.<locals>.mock_create_row_requestr
   )chunks_create_row_requestr.   ReadRows)gcloud._testingrv   rP   rD   gcloud.bigtabler   rQ   rR   r   rS   r   r5   r   iter_ReadRowsResponsePB
_data_stubZread_rowROW_KEYr   rY   r   )r	   r{   r^   rv   rD   MUTrH   r   r   rz   response_iteratorr\   r]   
filter_objr_   r
   ry   r   _read_row_helper  s4    


.zTestTable._read_row_helperc                 C   s   |  d d  d S r   r   rn   r
   r
   r    test_read_row_miss_no__responses7  s    z*TestTable.test_read_row_miss_no__responsesc                 C   s   g }|  |d  d S r   r   )r	   r{   r
   r
   r   (test_read_row_miss_no_chunks_in_response:  s    z2TestTable.test_read_row_miss_no_chunks_in_responsec                 C   s   ddl m} ddl m} t| j| j| j| j| jdd}|g}|| jd}|j	
| ji }|
| jg }||| | || d S )Nr   )Cell)PartialRowDataT)r+   family_name	qualifiertimestamp_microsvalueZ
commit_rowr+   )gcloud.bigtable.row_datar   r   _ReadRowsResponseCellChunkPBr   FAMILY_NAME	QUALIFIERTIMESTAMP_MICROSVALUE_cells
setdefaultr3   Zfrom_pbr   )r	   r   r   chunkr{   r^   r   columnr
   r
   r   test_read_row_complete>  s     z TestTable.test_read_row_completec                 C   s\   t | j| j| j| j| jd}|g}| t | |d  W d    n1 sN0    Y  d S )N)r+   r   r   r   r   )	r   r   r   r   r   r   r6   r7   r   )r	   r   r{   r
   r
   r   test_read_row_still_partialQ  s    z%TestTable.test_read_row_still_partialc                    s*  ddl m} ddlm} ddlm} ddlm} t| j	d}t
| j|d}| | j|}t g   fdd	}t }	||	 |_}
||	}d
}d}t }d}|||d" |j||||d}W d    n1 s0    Y  | || | |
jd| j	fi fg ||||d}|  |j|fg d S )Nr   ru   rC   )PartialRowsDatarw   rE   rG   c                    s     | |f S r   r2   )rx   r   ry   r
   r   rz   l  s    z9TestTable.test_read_rows.<locals>.mock_create_row_requests	   start-keys   end-key   r|   )	start_keyend_keyr/   limitr~   )r   rv   rP   rD   r   r   r   r   rQ   rR   r   rS   r   r5   r   r   Z	read_rowsr   rY   r   )r	   rv   rD   r   r   rH   r   r   rz   r   r]   r^   r   r   r   r   r_   Zcreated_kwargsr
   ry   r   test_read_rows^  sD    $zTestTable.test_read_rowsc           
      C   s   ddl m} t| jd}t| j|d}| | j|}t| j	d}t
 }|| |_}|}| }	| |	| | |jd|| jfi fg d S )Nr   rC   rE   rG   rx   ZSampleRowKeys)rP   rD   rQ   rR   r   rS   r   r5   _SampleRowKeysRequestPBrk   r   r   Zsample_row_keysr   rY   )
r	   rD   rH   r   r   r[   r   r]   r^   r_   r
   r
   r   test_sample_row_keys  s    zTestTable.test_sample_row_keysN)r
   ))__name__
__module____qualname__Z
PROJECT_IDZINSTANCE_IDrS   r5   rk   rR   r   r   r   r   r   r   r   r   r   r%   r,   r0   r4   r8   r;   r>   r?   r@   r`   rc   rd   rh   rm   ro   rt   r   r   r   r   r   r   r   r
   r
   r
   r   r      sL   	
-")3r   c                   @   sV   e Zd Zd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 )Test__create_row_requestNc                 C   s    ddl m} |||||||dS )Nr   r|   )r+   r   r   r/   r   )r   r}   )r	   rx   r+   r   r   r/   r   r}   r
   r
   r   _callFUT  s
    z!Test__create_row_request._callFUTc                 C   s(   d}|  |}t|d}| || d S )Nrx   r   r   _ReadRowsRequestPBr   )r	   rx   r_   r^   r
   r
   r   test_table_name_only  s    
z-Test__create_row_request.test_table_name_onlyc                 C   sB   |  t$ | jd t t d W d    n1 s40    Y  d S )N)r+   r   )r6   r7   r   r   rn   r
   r
   r   test_row_key_row_range_conflict  s    z8Test__create_row_request.test_row_key_row_range_conflictc                 C   s>   d}d}| j ||d}t|d}|jj| | || d S )Nrx   r'   r   r   )r   r   rowsZrow_keysr3   r   )r	   rx   r+   r_   r^   r
   r
   r   test_row_key  s    z%Test__create_row_request.test_row_keyc                 C   s@   d}d}| j ||d}t|d}|jjj|d | || d S )Nrx   	   start_key)r   r   )start_key_closedr   r   r   Z
row_rangesaddr   )r	   rx   r   r_   r^   r
   r
   r   test_row_range_start_key  s    
z1Test__create_row_request.test_row_range_start_keyc                 C   s@   d}d}| j ||d}t|d}|jjj|d | || d S )Nrx      end_key)r   r   )end_key_openr   )r	   rx   r   r_   r^   r
   r
   r   test_row_range_end_key  s    
z/Test__create_row_request.test_row_range_end_keyc                 C   sH   d}d}d}| j |||d}t|d}|jjj||d | || d S )Nrx   r   r   )r   r   r   )r   r   r   )r	   rx   r   r   r_   r^   r
   r
   r   test_row_range_both_keys  s    
z1Test__create_row_request.test_row_range_both_keysc                 C   sF   ddl m} d}|d}| j||d}t|| d}| || d S )Nr   )RowSampleFilterrx   gQ?r.   )rx   filter)Zgcloud.bigtable.row_filtersr   r   r   rU   r   )r	   r   rx   Z
row_filterr_   r^   r
   r
   r   test_with_filter  s    z)Test__create_row_request.test_with_filterc                 C   s2   d}d}| j ||d}t||d}| || d S )Nrx   i9  )r   )rx   Z
rows_limitr   )r	   rx   r   r_   r^   r
   r
   r   test_with_limit  s    z(Test__create_row_request.test_with_limit)NNNNN)r   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r     s     

r   c                  O   s   ddl m} |j| i |S Nr   )bigtable_table_admin_pb2)gcloud.bigtable._generatedr   CreateTableRequestr   kwZtable_admin_v2_pb2r
   r
   r   rV     s    rV   c                  O   s   ddl m} |jj| i |S r   )r   r   r   ZSplitr   r
   r
   r   rJ     s    rJ   c                  O   s   ddl m} |j| i |S r   )r   r   ZDeleteTableRequestr   r
   r
   r   rq   	  s    rq   c                  O   s   ddl m} |j| i |S r   )r   r   ZGetTableRequestr   r
   r
   r   rj     s    rj   c                  O   s   ddl m} |j| i |S Nr   bigtable_pb2)r   r   ZReadRowsRequestr   r   messages_v2_pb2r
   r
   r   r     s    r   c                  O   sF   ddl m} |d}|d}|jj| i |}||j_||j_|S )Nr   r   r   r   )r   r   popReadRowsResponseZ	CellChunkr   r   r   )r   r   r   r   r   messager
   r
   r   r     s    

r   c                  O   s   ddl m} |j| i |S r   )r   r   r   r   r
   r
   r   r   &  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   ZSampleRowKeysRequestr   r
   r
   r   r   ,  s    r   c                  O   s   ddl m} |j| i |S Nr   )	table_pb2)r   r   r   r   r   Ztable_v2_pb2r
   r
   r   rT   2  s    rT   c                  O   s   ddl m} |j| i |S r   )r   r   r   r   r
   r
   r   rl   8  s    rl   c                   @   s&   e Zd ZdZdZdZdZdddZdS )rQ   Nc                 C   s
   || _ d S r   rE   )r	   rF   r
   r
   r   __init__E  s    z_Client.__init__)N)r   r   r   Z	data_stubZinstance_stubZoperations_stubZ
table_stubr   r
   r
   r
   r   rQ   >  s
   rQ   c                   @   s   e Zd ZdddZdS )r   Nc                 C   s   || _ || _d S r   )r   Z_client)r	   r   rH   r
   r
   r   r   K  s    z_Instance.__init__)N)r   r   r   r   r
   r
   r
   r   r   I  s   r   )Z	unittest2ZTestCaser   r   rV   rJ   rq   rj   r   r   r   r   rT   rl   r   rQ   r   r
   r
   r
   r   <module>   s"      O