a
    !f|                     @   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jZG d
d dejZG dd deZ	dS )    Nc                   @   s   e Zd ZdZdZedddddZdZdd	 Zd
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d  Zd!d" ZdS )$TestOperationzfake-op"  i  
         zloc-idc                 C   s   ddl m} |S )Nr   )	Operation)gcloud.bigtable.instancer   )selfr    r
   ^/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/bigtable/test_instance.py_getTargetClass   s    zTestOperation._getTargetClassc                 O   s   |   |i |S Nr   r	   argskwargsr
   r
   r   _makeOne   s    zTestOperation._makeOneNc                 C   sz   | j | j| j| j| j|d}| |j| j | |j| j | |j| j | |j	| j | |j
| | |j d S Ninstance)r   OP_TYPEOP_IDBEGINLOCATION_IDassertEqualZop_typeop_idbeginZlocation_id	_instanceassertFalse	_complete)r	   r   	operationr
   r
   r   _constructor_test_helper"   s    z&TestOperation._constructor_test_helperc                 C   s   |    d S r   )r!   r	   r
   r
   r   test_constructor_defaults.   s    z'TestOperation.test_constructor_defaultsc                 C   s   t  }| j|d d S r   )objectr!   )r	   r   r
   r
   r   "test_constructor_explicit_instance1   s    z0TestOperation.test_constructor_explicit_instancec                 C   sN   t  }| j| j| j| j| j|d}| j| j| j| j| j|d}| || d S r   )r$   r   r   r   r   r   r   )r	   r   
operation1
operation2r
   r
   r   test___eq__5   s    zTestOperation.test___eq__c                 C   s(   |  ddd | j}t }| || d S )Nfoo{   )r   r   r$   assertNotEqualr	   r&   r'   r
   r
   r   test___eq__type_differ?   s    z$TestOperation.test___eq__type_differc                 C   sT   t  }| j| j| j| j| j|d}| j| j| j| j| j|d}||k}| | d S r   )r$   r   r   r   r   r   r   )r	   r   r&   r'   comparison_valr
   r
   r   test___ne__same_valueD   s    z#TestOperation.test___ne__same_valuec                 C   s4   |  ddd | j}|  ddd | j}| || d S )Nr)   r*   bari  r   r   r+   r,   r
   r
   r   test___ne__O   s    zTestOperation.test___ne__c                 C   sL   |  d d d d }d|_| t |  W d    n1 s>0    Y  d S )NT)r   r   assertRaises
ValueErrorfinished)r	   r    r
   r
   r   test_finished_without_operationT   s    z-TestOperation.test_finished_without_operationc                 C   s  ddl m} ddlm} ddlm} d}d}d}t||d}|||| j}	| j| j	| j
| j| j|	d	}
d
| d | d | j d| j
f  }|j|d}|j|d}|| |_}|}|
 }| || | |jd||fi fg |r| |
j n| |
j d S )Nr   operations_pb2	_FakeStubInstancePROJECTinstance-idr   timeout_secondsr   zoperations/projects//instances//locations/z/operations/%dnamedoneZGetOperation)google.longrunningr8   gcloud.bigtable._testingr:   r   r<   _Clientr   r   r   r   r   ZGetOperationRequestr   Z_operations_stubr5   r   method_calls
assertTruer   r   )r	   rF   r8   r:   r<   r=   INSTANCE_IDTIMEOUT_SECONDSclientr   r    Zop_name
request_pbresponse_pbstubexpected_resultresultr
   r
   r   _finished_helperZ   sJ    
zTestOperation._finished_helperc                 C   s   | j dd d S )NTrE   rT   r"   r
   r
   r   test_finished   s    zTestOperation.test_finishedc                 C   s   | j dd d S )NFrE   rU   r"   r
   r
   r   test_finished_not_done   s    z$TestOperation.test_finished_not_done)N)__name__
__module____qualname__r   r   datetimer   r   r   r   r!   r#   r%   r(   r-   r/   r2   r6   rT   rV   rW   r
   r
   r
   r   r      s"   

.r   c                   @   s4  e Zd ZdZdZde d e ZdZde d e ZdZdZ	d	eee	f Z
d
Zed 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/d0 Zd1d2 Z d3d4 Z!d5d6 Z"d7d8 Z#dBd:d;Z$d<d= Z%d>d? Z&d@dA Z'd9S )CTestInstanceprojectr>   	projects/rA   locnamerB   display_namer   z0operations/projects/%s/instances/%soperations/%dtable_id/tables/r   c                 C   s   ddl m} |S )Nr   r;   )r   r<   )r	   r<   r
   r
   r   r      s    zTestInstance._getTargetClassc                 O   s   |   |i |S r   r   r   r
   r
   r   r      s    zTestInstance._makeOnec                 C   sv   ddl m} t }| | j|| j}| |j| j | |j| j | 	|j
|u  | |j| j | |j| d S )Nr   DEFAULT_SERVE_NODES)gcloud.bigtable.clusterrd   r$   r   rL   r   r   instance_idr`   rK   _client_cluster_location_idZ_cluster_serve_nodes)r	   rd   rN   r   r
   r
   r   r#      s    z&TestInstance.test_constructor_defaultsc                 C   sR   d}t  }| j| j|| j|d}| |j| j | |j| | |j|u  d S Nr`   r`   )	r$   r   rL   r   r   rf   r`   rK   rg   )r	   r`   rN   r   r
   r
   r   test_constructor_non_default   s    z)TestInstance.test_constructor_non_defaultc                 C   sh   d}t | j}| j| j|| j|d}| }| |j|u  | |j| | ||u  | || d S ri   )	rI   r=   r   rL   r   copyr   rg   r   )r	   r`   rN   r   Znew_instancer
   r
   r   	test_copy   s    
zTestInstance.test_copyc                 C   s\   ddl m} | | jd | j}|| j}| t|| | 	|j
| j | 	|j| d S )Nr   )Table)Zgcloud.bigtable.tablern   r   rL   r   tableTABLE_IDrK   
isinstancer   ra   r   )r	   rn   r   ro   r
   r
   r   test_table_factory   s    zTestInstance.test_table_factoryc                 C   sV   ddl m} d}|j|d}| d d d d }| |jd  || | |j| d S )Nr   instance_pb2r`   rj   )gcloud.bigtable._generatedrt   r<   r   r   r`   _update_from_pb)r	   data_v2_pb2r`   instance_pbr   r
   r
   r   test__update_from_pb_success   s    
z)TestInstance.test__update_from_pb_successc                 C   sx   ddl m} | }| d d d d }| |jd  | t || W d    n1 s\0    Y  | |jd  d S )Nr   rs   )	ru   rt   r<   r   r   r`   r3   r4   rv   )r	   rw   rx   r   r
   r
   r   $test__update_from_pb_no_display_name   s    (z1TestInstance.test__update_from_pb_no_display_namec                 C   s   ddl m} ddlm} t| jd}|j| j| jd}| 	 }|
||}| t|| | |j| | |j| j | |j| d S )Nr   )_EXISTING_INSTANCE_LOCATION_IDrs   r]   rD   r`   )r   r{   ru   rt   rI   r=   r<   INSTANCE_NAMErL   r   from_pbrK   rq   r   rg   rf   rh   )r	   r{   rw   rN   rx   klassr   r
   r
   r   test_from_pb_success   s    z!TestInstance.test_from_pb_successc                 C   s^   ddl m} d}|j|d}|  }| t ||d  W d    n1 sP0    Y  d S )Nr   rs   ZINCORRECT_FORMATrC   )ru   rt   r<   r   r3   r4   r   )r	   rw   Zinstance_namerx   r   r
   r
   r   test_from_pb_bad_instance_name   s    z+TestInstance.test_from_pb_bad_instance_namec                 C   sx   ddl m} d}t|d}| | j| |j| jd}|  }| t	 |
|| W d    n1 sj0    Y  d S )Nr   rs   ALT_PROJECTr|   rC   )ru   rt   rI   r+   r=   r<   r~   r   r3   r4   r   )r	   rw   r   rN   rx   r   r
   r
   r   test_from_pb_project_mistmatch  s    
z+TestInstance.test_from_pb_project_mistmatchc                 C   s2   t | jd}| | j|| j}| |j| j d S )Nr|   )rI   r=   r   rL   r   r   rD   r~   )r	   rN   r   r
   r
   r   test_name_property  s    zTestInstance.test_name_propertyc                 C   s:   t  }| | j|| j}| | j|| j}| || d S r   )r$   r   rL   r   r   r	   rN   	instance1	instance2r
   r
   r   r(      s    zTestInstance.test___eq__c                 C   s.   t  }| | j|| j}t  }| || d S r   )r$   r   rL   r   r+   r   r
   r
   r   r-   &  s    z#TestInstance.test___eq__type_differc                 C   s@   t  }| | j|| j}| | j|| j}||k}| | d S r   )r$   r   rL   r   r   )r	   rN   r   r   r.   r
   r
   r   r/   ,  s
    z"TestInstance.test___ne__same_valuec                 C   s0   |  dd| j}|  dd| j}| || d S )NZinstance_id1Zclient1Zinstance_id2Zclient2r1   )r	   r   r   r
   r
   r   r2   3  s    zTestInstance.test___ne__c                 C   s   ddl m} ddl m} ddlm} t| j| jd}| | j	|| j
}|j| jd}d}|j|d}|| |_}	d }
| |j| j	 | }| ||
 | |	jd	|| jfi fg | |j| d S )
Nr   rs   bigtable_instance_admin_pb2r9   r?   rC   zhey-hi-hellorj   ZGetInstance)ru   rt   r   rH   r:   rI   r=   rM   r   rL   r   ZGetInstanceRequestr~   r<   _instance_stubr   r`   reloadrJ   )r	   rw   messages_v2_pbr:   rN   r   rO   DISPLAY_NAMErP   rQ   rR   rS   r
   r
   r   test_reload8  s.    zTestInstance.test_reloadc                    s6  ddl m} ddlm} ddlm} ddlm} tj	j
d}j|j}t t  |jjd}|| |_}|jdj j|d}	g fd	d
}
g  fdd}|||
|d | }W d    n1 s0    Y  ||	 |jdj
fi fg |g |g d S )Nr   r7   _Monkeyr9   r   r?   rC   createc                    s     |  S r   appendr   prep_create_calledrO   r
   r   mock_prep_create_req|  s    
z6TestInstance.test_create.<locals>.mock_prep_create_reqc                    s    |  jj fS r   r   r   r   operation_pbOP_BEGINprocess_operation_calledr	   r
   r   mock_process_operation  s    
z8TestInstance.test_create.<locals>.mock_process_operation_prepare_create_request_process_operationCreateInstancerG   r8   gcloud._testingr   rH   r:   gcloud.bigtabler   rI   r=   rM   r   rL   r   r$   r   OP_NAMEr   r   r   r   rJ   )r	   r8   r   r:   MUTrN   r   rP   rQ   rR   r   r   rS   r
   r   r   r   rO   r	   r   test_createa  s<    &zTestInstance.test_createc                    s>  ddl m} ddlm} ddlm} ddlm} d}tj	j
d}jj|j|d}t t  |jjd	}|| |_}	|jd
j j|d}
g fdd}g  fdd}||||d | }W d    n1 s0    Y  ||
 |	jdj
fi fg |g |g d S )Nr   r7   r   r9   r      r?   )serve_nodesrC   r   c                    s     |  S r   r   r   r   r
   r   r     s    
zMTestInstance.test_create_w_explicit_serve_nodes.<locals>.mock_prep_create_reqc                    s    |  jj fS r   r   r   r   r
   r   r     s    
zOTestInstance.test_create_w_explicit_serve_nodes.<locals>.mock_process_operationr   r   r   )r	   r8   r   r:   r   SERVE_NODESrN   r   rP   rQ   rR   r   r   rS   r
   r   r   "test_create_w_explicit_serve_nodes  sB    &z/TestInstance.test_create_w_explicit_serve_nodesc           
      C   s   ddl m} ddlm} t| j| jd}| j| j|| j	| j
d}|j| j| j
d}| }|| |_}d }| }	| |	| | |jd|| jfi fg d S )Nr   rs   r9   r?   rj   r}   ZUpdateInstance)ru   rt   rH   r:   rI   r=   rM   r   rL   r   r   r<   r~   r   updater   rJ   )
r	   rw   r:   rN   r   rO   rP   rQ   rR   rS   r
   r
   r   test_update  s(    zTestInstance.test_updatec                 C   s   ddl m} ddlm} ddlm} t| j| jd}| 	| j
|| j}|j| jd}| }|| |_}d }	| }
| |
|	 | |jd|| jfi fg d S )Nr   )	empty_pb2r   r9   r?   rC   ZDeleteInstance)google.protobufr   ru   r   rH   r:   rI   r=   rM   r   rL   r   ZDeleteInstanceRequestr~   Emptyr   deleter   rJ   )r	   r   r   r:   rN   r   rO   rP   rQ   rR   rS   r
   r
   r   test_delete  s$    zTestInstance.test_deletec                 C   s  ddl m} ddl m} ddlm} d}|g}d}d}d}t| j| jd	}	| | j	|	| j
}
|
jd
 | }|
jd
 | }|j|
jd}|j|g|j||d|j||dgd}|| |	_}|
||
|g}||f}|
 }| || | |jd|| jfi fg d S )Nr   rs   r   r9   ZFAILEDzcluster-id1zcluster-id2   r?   
/clusters/parent)rD   r   )Zfailed_locationsclustersZListClusters)ru   rt   r   rH   r:   rI   r=   rM   r   rL   r   rD   ZListClustersRequestZListClustersResponseClusterr   clusterZlist_clustersr   rJ   )r	   Zinstance_v2_pb2Zmessages_v2_pb2r:   ZFAILED_LOCATIONZFAILED_LOCATIONSZCLUSTER_ID1ZCLUSTER_ID2r   rN   r   ZCLUSTER_NAME1ZCLUSTER_NAME2rO   rP   rQ   r   rR   rS   r
   r
   r   test_list_clusters  sN    zTestInstance.test_list_clustersNc                 C   s   ddl m} ddl m} ddlm} t| j| jd}| | j	|| j
}|j| jd}|d u rb| j}|j|j|dgd}|| |_}	|| j}
|
g}| }| || | |	jd	|| jfi fg d S )
Nr   )	table_pb2)bigtable_table_admin_pb2r9   r?   r   rC   )ZtablesZ
ListTables)ru   r   r   rH   r:   rI   r=   rM   r   rL   r   ZListTablesRequestr~   
TABLE_NAMEZListTablesResponsern   Z_table_stubro   rp   Zlist_tablesr   rJ   )r	   
table_nameZtable_data_v2_pb2Ztable_messages_v1_pb2r:   rN   r   rO   rP   rQ   Zexpected_tablerR   rS   r
   r
   r   _list_tables_helperG  s0    
z TestInstance._list_tables_helperc                 C   s   |    d S r   )r   r"   r
   r
   r   test_list_tablesp  s    zTestInstance.test_list_tablesc                 C   s:   |  t | jdd W d    n1 s,0    Y  d S )Nzwrong-formatr   )r3   r4   r   r"   r
   r
   r   "test_list_tables_failure_bad_splits  s    z/TestInstance.test_list_tables_failure_bad_splitc                 C   sX   d| j  d | j d | j }| t | j|d W d    n1 sJ0    Y  d S )Nz nonempty-section-beforeprojects/rA   rb   r   )r=   rL   rp   r3   r4   r   )r	   ZBAD_TABLE_NAMEr
   r
   r   (test_list_tables_failure_name_bad_beforew  s    z5TestInstance.test_list_tables_failure_name_bad_before)N)(rX   rY   rZ   r=   rL   r~   r   ZLOCATIONr   r   r   rp   r   rM   r   r   r#   rk   rm   rr   ry   rz   r   r   r   r   r(   r-   r/   r2   r   r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r\      sN   

)47" 9
)r\   c                   @   s`   e Zd ZdZde ZdZde d e ZdZed e Zed e Z	dd	 Z
d
d Zdd ZdS )Test__prepare_create_requestr=   r^   r_   rB   r>   rA   r   c                 K   s   ddl m} ||fi |S )Nr   )r   )r   r   )r	   r   kwr   r
   r
   r   _callFUT  s    z%Test__prepare_create_request._callFUTc           	      C   s  ddl m} ddlm} ddlm} ddlm} t| j}|| j	|| j
}| |}| t||j | |j| j	 | |j| j | t|j|j | |jjd | |jj| j	 |j| j	 }| t||j | |j| j | |j| j | |j| d S )Nr   rc   rs   r   r;    )re   rd   ru   rt   r   r   r<   rI   r=   rL   r   r   rK   rq   CreateInstanceRequestr   rf   r   PARENTr   rD   r`   r   r   CLUSTER_NAMElocationLOCATION_NAMEr   )	r	   rd   rw   r   r<   rN   r   rO   r   r
   r
   r   test_w_defaults  s(    

z,Test__prepare_create_request.test_w_defaultsc           
      C   s   ddl m} ddl m} ddlm} d}d}t| j}|| j|| j||d}| 	|}| 
t||j | |j| j | |jd| j  | 
t|j|j | |jj| |j| j }	| 
t|	|j | |	j| j | |	j| d S )	Nr   rs   r   r;   r   r   )r`   r   r^   )ru   rt   r   r   r<   rI   r=   rL   r   r   rK   rq   r   r   rf   r   r   r`   r   r   r   r   r   )
r	   rw   r   r<   r   r   rN   r   rO   r   r
   r
   r   test_w_explicit_serve_nodes  s0    

z8Test__prepare_create_request.test_w_explicit_serve_nodesN)rX   rY   rZ   r=   r   r   r   rL   r~   r   r   r   r   r
   r
   r
   r   r     s   r   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )Test__parse_pb_any_to_nativeNc                 C   s   ddl m} |||dS )Nr   )_parse_pb_any_to_nativeexpected_type)r   r   )r	   any_valr   r   r
   r
   r   r     s    z%Test__parse_pb_any_to_native._callFUTc           
      C   s   ddl m} ddlm} ddlm} ddlm} d|jj	 }||j
i}|j
ddd}|j|| d	}|||d
 | |}	W d    n1 s0    Y  | |	| d S )Nr   any_pb2r   )data_pb2r   type.googleapis.com/s   foobar)Ztimestamp_microsvaluetype_urlr   Z_TYPE_URL_MAP)r   r   r   r   ru   r   r   r   Z_CELL	full_nameZCellAnySerializeToStringr   r   )
r	   r   r   rw   r   TYPE_URLfake_type_url_mapcellr   rS   r
   r
   r   test_with_known_type_url  s"    
(z5Test__parse_pb_any_to_native.test_with_known_type_urlc           	   	   C   s   ddl m} ddlm} ddlm} ddlm} d|jj }|j	|ddd	|d
dd	|j
dd|jdddd}|j|| d}| |}| || d S )Nr   r   )	Timestamprs   r   r   r   i  )secondsZnanosr   i r)   r0   Zquuxrj   )r   rf   r   )request_timeZfinish_timeZoriginal_requestr   )r   r   Zgoogle.protobuf.timestamp_pb2r   ru   rt   r   Z_CREATEINSTANCEMETADATAr   CreateInstanceMetadatar   r<   r   r   r   r   )	r	   r   r   rw   r   r   metadatar   rS   r
   r
   r   "test_with_create_instance_metadata  s0    


z?Test__parse_pb_any_to_native.test_with_create_instance_metadatac              	   C   s   ddl m} ddlm} ddlm} i }| }|||dD | t | 	| W d    n1 sh0    Y  W d    n1 s0    Y  d S )Nr   r   r   r   r   )
r   r   r   r   r   r   r   r3   KeyErrorr   )r	   r   r   r   r   r   r
   r
   r   test_unknown_type_url  s    z2Test__parse_pb_any_to_native.test_unknown_type_urlc              	   C   s   ddl m} ddlm} ddlm} d}d}|d i}|j|d}|||dH | t | j	||d	 W d    n1 s|0    Y  W d    n1 s0    Y  d S )
Nr   r   r   r   r)   r0   )r   r   r   )
r   r   r   r   r   r   r   r3   r4   r   )r	   r   r   r   Z	TYPE_URL1Z	TYPE_URL2r   r   r
   r
   r   test_disagreeing_type_url
  s    z6Test__parse_pb_any_to_native.test_disagreeing_type_url)N)rX   rY   rZ   r   r   r   r   r   r
   r
   r
   r   r     s
   
r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test__process_operationc                 C   s   ddl m} ||S )Nr   )r   )r   r   )r	   r   r   r
   r
   r   r     s    z Test__process_operation._callFUTc                    s  ddl m} ddlm} ddlm} ddlm} d}d}d}d	}d
||||f }	|j|	d}
|	 g dfdd	}t
  g  fdd}||||d  | |
\}}}W d    n1 s0    Y  | || | | u  | || | |
jd fg | jg d S )Nr   r7   r   r   r   r=   r>   r      z>operations/projects/%s/instances/%s/locations/%s/operations/%drC   c                    s     | |f S r   r   )r   r   )parse_pb_any_calledrequest_metadatar
   r   mock_parse_pb_any_to_native3  s    zDTest__process_operation.test_it.<locals>.mock_parse_pb_any_to_nativec                    s    |   S r   r   )	timestamp)expected_operation_begints_to_dt_calledr
   r   mock_pb_timestamp_to_datetime:  s    
zFTest__process_operation.test_it.<locals>.mock_pb_timestamp_to_datetime)r   Z_pb_timestamp_to_datetime)N)rG   r8   r   r   ru   r   r   r   r   r   r$   r   r   rK   r   r   )r	   r8   r   r   r   r=   rL   r   r   ZOPERATION_NAMEZ
current_opr   r   r   Zloc_idZop_beginr
   )r   r   r   r   r   test_it  s8    
.zTest__process_operation.test_itc                 C   sP   ddl m} |jdd}| t | | W d    n1 sB0    Y  d S )Nr   r7   invalidrC   )rG   r8   r   r3   r4   r   )r	   r8   r   r
   r
   r   test_op_name_parsing_failureL  s    z4Test__process_operation.test_op_name_parsing_failureN)rX   rY   rZ   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 )	rI   Nc                 C   s   || _ d| j  | _|| _d S )Nr^   r]   project_namer@   )r	   r]   r@   r
   r
   r   __init__V  s    z_Client.__init__c                 C   s   ddl m} || S )Nr   )deepcopy)rl   r   )r	   r   r
   r
   r   rl   [  s    z_Client.copyc                 C   s$   |j | j ko"|j| jko"|j| jkS r   r   )r	   otherr
   r
   r   __eq___  s
    

z_Client.__eq__)N)rX   rY   rZ   r   rl   r   r
   r
   r
   r   rI   T  s   
rI   )
r[   Z	unittest2ZTestCaser   r\   r   r   r   r$   rI   r
   r
   r
   r   <module>   s   {   tES<