a
    !f`w                     @   s   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 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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G d0d1 d1eZdS )2    Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test_SetDeleteRowc                 C   s   ddl m} |S )Nr   )_SetDeleteRow)gcloud.bigtable.rowr   )selfr    r   Y/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/bigtable/test_row.py_getTargetClass   s    z!Test_SetDeleteRow._getTargetClassc                 O   s   |   |i |S Nr   r   argskwargsr   r   r   _makeOne   s    zTest_SetDeleteRow._makeOnec                 C   sD   |  dd }| t |d  W d    n1 s60    Y  d S )Ns   row-key)r   assertRaisesNotImplementedError_get_mutations)r   rowr   r   r   test__get_mutations_virtual   s    z-Test_SetDeleteRow.test__get_mutations_virtualN)__name__
__module____qualname__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d Zd	d
 Zdd Zd6d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d7d&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 ZdS )8TestDirectRowc                 C   s   ddl m} |S )Nr   )	DirectRow)r   r   )r   r   r   r   r   r   $   s    zTestDirectRow._getTargetClassc                 O   s   |   |i |S r	   r
   r   r   r   r   r   (   s    zTestDirectRow._makeOnec                 C   sF   d}t  }| ||}| |j| | |j|u  | |jg  d S N   row_key)objectr   assertEqual_row_key
assertTrue_table_pb_mutationsr   row_keytabler   r   r   r   test_constructor+   s    zTestDirectRow.test_constructorc                 C   s<   d}d}t  }| ||}| |j| | |j|u  d S )Nr"   r   )r   r   r   r   r   r   )r   r"   Zrow_key_bytesr#   r   r   r   r   test_constructor_with_unicode4   s    z+TestDirectRow.test_constructor_with_unicodec                 C   s@   t  }| t | |d  W d    n1 s20    Y  d S r	   )r   r   	TypeErrorr   )r   r"   r   r   r   test_constructor_with_non_bytes=   s    z-TestDirectRow.test_constructor_with_non_bytesc                 C   s4   d}|  |d }t  |_}| ||d u  d S r   )r   r   r    r   r   )r   r"   r   	mutationsr   r   r   test__get_mutationsB   s    z!TestDirectRow.test__get_mutationsN   foobarc                 C   s   dd l }dd l}d}d}	|d u r$d}t }
| ||
}| |jg  |j|	|||d t||jrn|	d|}t
t|	|pz|||dd}| |j|g d S )	Nr   r   column_family_id   column)	timestampz>qfamily_namecolumn_qualifiertimestamp_microsvalueset_cell)sixstructr   r   r   r    r5   
isinstanceinteger_typespack_MutationPB_MutationSetCellPB)r   columncolumn_bytesr3   r.   r2   r6   r7   r"   r,   r#   r   expected_pbr   r   r   _set_cell_helperI   s.    zTestDirectRow._set_cell_helperc                 C   s   |    d S r	   r@   r   r   r   r   test_set_celld   s    zTestDirectRow.test_set_cellc                 C   s   d}d}| j ||d d S )Nr-   r=   )r=   r>   rA   )r   r>   Zcolumn_non_bytesr   r   r    test_set_cell_with_string_columng   s
    z.TestDirectRow.test_set_cell_with_string_columnc                 C   s   d}| j |d d S )Ni9  )r3   rA   )r   r3   r   r   r    test_set_cell_with_integer_valuem   s    z.TestDirectRow.test_set_cell_with_integer_valuec                 C   s`   d}d}d}t  }| ||}t  }| t |||| W d    n1 sR0    Y  d S Nr   r-   r,   )r   r   r   r&   r5   )r   r"   r=   r,   r#   r   r3   r   r   r   "test_set_cell_with_non_bytes_valueq   s    z0TestDirectRow.test_set_cell_with_non_bytes_valuec                 C   sF   dd l }ddlm} d}||d  }||j|d }| j||d d S )Nr   _EPOCHic5i  microseconds)r.   r2   )datetimegcloud._helpersrI   	timedeltar@   )r   rL   rI   rK   Zmillis_granularityr.   r   r   r   %test_set_cell_with_non_null_timestamp|   s    z3TestDirectRow.test_set_cell_with_non_null_timestampc                 C   sH   d}|  |t }| |jg  |  tt d}| |j|g d S )Nr   Zdelete_from_row)r   r   r   r    deleter;   _MutationDeleteFromRowPB)r   r"   r   r?   r   r   r   test_delete   s    zTestDirectRow.test_deletec                    s   |   }G  fddd| d}d}d}t } ||}| |jg  | |jg  | |jg  t }|j|||d | |jg  | |j||gfg | |jd |dg d S )Nc                       s&   e Zd Z fddZdd Z  ZS )z/TestDirectRow.test_delete_cell.<locals>.MockRowc                    s&   t  | j|i | g | _g | _d S r	   )super__init___args_kwargsr   )MockRow	__class__r   r   rU      s    z8TestDirectRow.test_delete_cell.<locals>.MockRow.__init__c                 _   s   | j | | j| d S r	   )rV   appendrW   r   r   r   r   _delete_cells   s    z=TestDirectRow.test_delete_cell.<locals>.MockRow._delete_cells)r   r   r   rU   r[   __classcell__r   rX   )rY   r   rX      s   rX   r   r-   r,   
time_range)stater_   )r   r   r   r    rV   rW   delete_cell)r   klassr"   r=   r,   r#   Zmock_rowr_   r   r]   r   test_delete_cell   s$    
zTestDirectRow.test_delete_cellc                 C   sZ   d}d}t  }| ||}t  }| t ||| W d    n1 sL0    Y  d S Nr   r,   )r   r   r   r&   delete_cellsr   r"   r,   r#   r   columnsr   r   r   test_delete_cells_non_iterable   s    z,TestDirectRow.test_delete_cells_non_iterablec                 C   sb   d}d}t  }| ||}|  }| |jg  |||j tt|dd}| |j|g d S )Nr   r,   r0   Zdelete_from_family)	r   r   r   r   r    re   ALL_COLUMNSr;   _MutationDeleteFromFamilyPB)r   r"   r,   r#   r   rb   r?   r   r   r   test_delete_cells_all_columns   s    z+TestDirectRow.test_delete_cells_all_columnsc                 C   sJ   d}d}t  }| ||}g }| |jg  ||| | |jg  d S rd   )r   r   r   r    re   rf   r   r   r   test_delete_cells_no_columns   s    z*TestDirectRow.test_delete_cells_no_columnsc           	      C   s   d}d}d}t  }| ||}|g}| |jg  |j|||d tt||dd}|d urn|jj	|
  | |j|g d S )Nr   r-   r,   r^   r0   r1   delete_from_column)r   r   r   r    re   r;   _MutationDeleteFromColumnPBrq   r_   ZCopyFromto_pb)	r   r_   r"   r=   r,   r#   r   rg   r?   r   r   r   _delete_cells_helper   s&    z"TestDirectRow._delete_cells_helperc                 C   s   |    d S r	   )rt   rB   r   r   r   test_delete_cells_no_time_range   s    z-TestDirectRow.test_delete_cells_no_time_rangec                 C   sN   dd l }ddlm} ddlm} d}||j|d }||d}| j|d d S )Nr   rH   )TimestampRangeirJ   )startr^   )rL   rM   rI   gcloud.bigtable.row_filtersrv   rN   rt   )r   rL   rI   rv   rK   rw   r_   r   r   r   !test_delete_cells_with_time_range   s    
z/TestDirectRow.test_delete_cells_with_time_rangec                 C   s~   d}d}d}t  }| ||}|t  g}| |jg  | t ||| W d    n1 sb0    Y  | |jg  d S rF   )r   r   r   r    r   r&   re   )r   r"   r=   r,   r#   r   rg   r   r   r   !test_delete_cells_with_bad_column   s    
*z/TestDirectRow.test_delete_cells_with_bad_columnc                 C   s   d}d}d}d}d}d}t  }| ||}||g}	| |jg  |||	 tt||dd}
tt||dd}| |j|
|g d S )	Nr   r,   column1   column1column2   column2ro   rp   )r   r   r   r    re   r;   rr   )r   r"   r,   r{   Zcolumn1_bytesr}   Zcolumn2_bytesr#   r   rg   Zexpected_pb1Zexpected_pb2r   r   r   %test_delete_cells_with_string_columns  s0    z3TestDirectRow.test_delete_cells_with_string_columnsc                 C   s   ddl m} ddlm} d}d}d}d}d}t|d	}t||d
}	| ||	}
d}tt||d|dd}t	|||gd}|
 }|| |_}d }|
||| |
 }| || | |jd||fi fg | |
jg  d S )Nr   )	empty_pb2	_FakeStubr   projects/more-stuffr,   r-   i  timeout_secondsclient   bytes-valuer+   r/   r4   )
table_namer"   r(   Z	MutateRow)Zgoogle.protobufr   gcloud.bigtable._testingr   _Client_Tabler   r;   r<   _MutateRowRequestPBEmpty
_data_stubr5   commitr   method_callsr    )r   r   r   r"   r   r,   r=   r   r   r#   r   r3   Zmutation
request_pbresponse_pbstubexpected_resultresultr   r   r   test_commit)  sH    
zTestDirectRow.test_commitc              	   C   s   ddl m} ddlm} d}t }| ||}g d|_t|j}|||d dB | t	 |
  W d    n1 s|0    Y  W d    n1 s0    Y  d S Nr   _Monkeyr   r            r   ZMAX_MUTATIONS)gcloud._testingr   gcloud.bigtabler   r   r   r    lenr   
ValueErrorr   r   r   MUTr"   r#   r   num_mutationsr   r   r   test_commit_too_many_mutationsZ  s    

z,TestDirectRow.test_commit_too_many_mutationsc                 C   sn   ddl m} d}t }td |d}| ||}| |jg  |  |_}| }| |d  | |j	g  d S Nr   r   r   r   )
r   r   r   r   r   r   r    r   r   r   r   r   r"   r   r#   r   r   r   r   r   r   test_commit_no_mutationsg  s    z&TestDirectRow.test_commit_no_mutations)NNr*   Nr+   )N)r   r   r   r   r   r$   r%   r'   r)   r@   rC   rD   rE   rG   rO   rS   rc   rh   rm   rn   rt   ru   ry   rz   r   r   r   r   r   r   r   r   r   "   s8   		   

$


1r   c                   @   sD   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S )TestConditionalRowc                 C   s   ddl m} |S )Nr   )ConditionalRow)r   r   )r   r   r   r   r   r   |  s    z"TestConditionalRow._getTargetClassc                 O   s   |   |i |S r	   r
   r   r   r   r   r     s    zTestConditionalRow._makeOnec                 C   sn   d}t  }t  }| j|||d}| |j| | |j|u  | |j|u  | |jg  | |jg  d S )Nr   filter_)	r   r   r   r   r   r   _filter_true_pb_mutations_false_pb_mutations)r   r"   r#   r   r   r   r   r   r$     s    z#TestConditionalRow.test_constructorc                 C   sr   d}t  }| j|d |d}t   |_}t   |_}| ||du  | ||du  | ||d u  d S )Nr   r   TF)r   r   r   r   r   r   )r   r"   r   r   true_mutationsfalse_mutationsr   r   r   r)     s    z&TestConditionalRow.test__get_mutationsc                 C   sz  ddl m} ddlm} d}d}d}d}d}d	}d
}	d}
t|
d}t||d}|d}| j|||d}d}tt||d|dd}tt	 d}tt
||	dd}tt|dd}t||| |||g|gd}d}t|d}|| |_}|}|j|||dd |jdd |j||	dd |j||jdd | }| || | |jd||
fi fg | |jg  | |jg  d S )Nr   r   )RowSampleFilterr   r   column_family_id1column_family_id2column_family_id3r|   r~   i  r   r   gQ?r   r   r+   r/   r4   rP   ro   rp   ri   rj   )r   r"   Zpredicate_filterr   r   T)predicate_matched)r`   FZCheckAndMutateRow)r   r   rx   r   r   r   r   r;   r<   rR   rr   rl   _CheckAndMutateRowRequestPBrs   _CheckAndMutateRowResponsePBr   r5   rQ   ra   re   rk   r   r   r   r   r   )r   r   r   r"   r   r   r   r   r{   r}   r   r   r#   Z
row_filterr   Zvalue1Z	mutation1Z	mutation2Z	mutation3Z	mutation4r   r   r   r   r   r   r   r   r   r     s~    
	zTestConditionalRow.test_commitc              	   C   s   ddl m} ddlm} d}t }t }| j|||d}g d|_t|j}|||d dB | t	 |
  W d    n1 s0    Y  W d    n1 s0    Y  d S )	Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r"   r#   r   r   r   r   r   r   r     s    

z1TestConditionalRow.test_commit_too_many_mutationsc           	      C   s   ddl m} d}t }td |d}t }| j|||d}| |jg  | |jg  |  |_	}|
 }| |d  | |jg  d S )Nr   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r"   r   r#   r   r   r   r   r   r   r   r     s    z+TestConditionalRow.test_commit_no_mutationsN)
r   r   r   r   r   r$   r)   r   r   r   r   r   r   r   r   z  s   Kr   c                   @   sT   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S )TestAppendRowc                 C   s   ddl m} |S )Nr   )	AppendRow)r   r   )r   r   r   r   r   r   
  s    zTestAppendRow._getTargetClassc                 O   s   |   |i |S r	   r
   r   r   r   r   r     s    zTestAppendRow._makeOnec                 C   sF   d}t  }| ||}| |j| | |j|u  | |jg  d S r   )r   r   r   r   r   r   _rule_pb_listr!   r   r   r   r$     s    zTestAppendRow.test_constructorc                 C   s:   d}t  }| ||}g d|_|  | |jg  d S )Nr   r   )r   r   r   clearr   r!   r   r   r   
test_clear  s    
zTestAppendRow.test_clearc                 C   s`   t  }d}| ||}| |jg  d}d}d}|||| t|||d}| |j|g d S )Nr   r-   r,   s	   bytes-valr0   r1   Zappend_value)r   r   r   r   append_cell_value_ReadModifyWriteRulePB)r   r#   r"   r   r=   r,   r3   r?   r   r   r   test_append_cell_value"  s    z$TestAppendRow.test_append_cell_valuec                 C   s`   t  }d}| ||}| |jg  d}d}d}|||| t|||d}| |j|g d S )Nr   r-   r,   iJ )r0   r1   Zincrement_amount)r   r   r   r   Zincrement_cell_valuer   )r   r#   r"   r   r=   r,   Z	int_valuer?   r   r   r   test_increment_cell_value1  s    z'TestAppendRow.test_increment_cell_valuec                    s,  ddl m} ddlm} ddlm} d}d}d}d}d	}t|d
}	t||	d}
| ||
}d}t	||t
|||dgd}t }|| |	_}g t   fdd}|||d& |||| | }W d    n1 s0    Y  | |  | |jd||fi fg | |g | |jg  d S )Nr   r   r   r   r   r   r,   r-   W   r   r   r   r   )r   r"   rulesc                    s    |   S r	   )rZ   )row_responser   Zrow_responsesr   r   mock_parse_rmw_row_responseg  s    
z>TestAppendRow.test_commit.<locals>.mock_parse_rmw_row_response_parse_rmw_row_responseZReadModifyWriteRow)r   r   r   r   r   r   r   r   r   _ReadModifyWriteRowRequestPBr   r   r   r   r   r   r   r   )r   r   r   r   r"   r   r,   r=   r   r   r#   r   r3   r   r   r   r   r   r   r   r   r   @  sL    
&zTestAppendRow.test_commitc                 C   sn   ddl m} d}t }td |d}| ||}| |jg  |  |_}| }| |i  | |j	g  d S r   )
r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_commit_no_rulesy  s    z"TestAppendRow.test_commit_no_rulesc              	   C   s   ddl m} ddlm} d}t }| ||}g d|_t|j}|||d dB | t	 |
  W d    n1 s|0    Y  W d    n1 s0    Y  d S r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    

z,TestAppendRow.test_commit_too_many_mutationsN)r   r   r   r   r   r$   r   r   r   r   r   r   r   r   r   r   r     s   	9r   c                   @   s   e Zd Zdd Zdd ZdS )Test__parse_rmw_row_responsec                 C   s   ddl m} ||S )Nr   r   )r   r   )r   r   r   r   r   r   _callFUT  s    z%Test__parse_rmw_row_response._callFUTc              
   C   s   ddl m} d}d}d}d}d}d}d	}d
}	d}
d}||}||||f||fg||	|fgi|||
|fgii}tt|t|t||dt||dgdt|t|	|dgdgdt|t|t|
|dgdgdgd}t|d}| || | d S )Nr   _datetime_from_microseconds
col-fam-idzcol-fam-id2	   col-name1	   col-name2s   col-name3-but-other-fam   cell-val   cell-val-newer   altcol-cell-vals   fooiE r3   r2   Z	qualifiercellsnamerg   )Zfamiliesr   )	rM   r   _RowPB	_FamilyPB	_ColumnPB_CellPB_ReadModifyWriteRowResponsePBr   r   )r   r   col_fam1Zcol_fam2	col_name1	col_name2Z	col_name3	cell_val1	cell_val2	cell_val3Z	cell_val4rK   r.   expected_outputZresponse_rowsample_inputr   r   r   test_it  s    	-
z$Test__parse_rmw_row_response.test_itN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S )Test__parse_family_pbc                 C   s   ddl m} ||S )Nr   )_parse_family_pb)r   r   )r   Z	family_pbr   r   r   r   r     s    zTest__parse_family_pb._callFUTc              	   C   s   ddl m} d}d}d}d}d}d}d	}||}	|||	f||	fg|||	fgi}
||
f}t|t|t||d
t||d
gdt|t||d
gdgd}| || | d S )Nr   r   r   r   r   r   r   r   l   M$ r   r   r   )rM   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   rK   r.   expected_dictr   r   r   r   r   r     sV    	zTest__parse_family_pb.test_itNr   r   r   r   r   r     s   r   c                  O   s   ddl m} |j| i |S Nr   )bigtable_pb2)gcloud.bigtable._generatedr   ZCheckAndMutateRowRequestr   kwZmessages_v2_pb2r   r   r   r   '  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   ZCheckAndMutateRowResponser   r   r   r   r   -  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   ZMutateRowRequestr   r   r   r   r   3  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   ZReadModifyWriteRowRequestr   r   r   r   r   9  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   ZReadModifyWriteRowResponser   r   r   r   r   ?  s    r   c                  O   s   ddl m} |j| i |S Nr   )data_pb2)r   r   ZCellr   r   Zdata_v2_pb2r   r   r   r   E  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   Columnr   r   r   r   r   K  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   ZFamilyr   r   r   r   r   Q  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   Mutationr   r   r   r   r;   W  s    r;   c                  O   s   ddl m} |jj| i |S r   )r   r   r   ZSetCellr   r   r   r   r<   ]  s    r<   c                  O   s   ddl m} |jj| i |S r   )r   r   r   ZDeleteFromColumnr   r   r   r   rr   c  s    rr   c                  O   s   ddl m} |jj| i |S r   )r   r   r   ZDeleteFromFamilyr   r   r   r   rl   i  s    rl   c                  O   s   ddl m} |jj| i |S r   )r   r   r   ZDeleteFromRowr   r   r   r   rR   o  s    rR   c                  O   s   ddl m} |j| i |S r   )r   r   Rowr   r   r   r   r   u  s    r   c                  O   s   ddl m} |j| i |S r   )r   r   ZReadModifyWriteRuler   r   r   r   r   {  s    r   c                   @   s   e Zd ZdZdddZdS )r   Nc                 C   s
   || _ d S r	   r   )r   r   r   r   r   rU     s    z_Client.__init__)N)r   r   r   Z	data_stubrU   r   r   r   r   r     s   r   c                   @   s   e Zd ZdddZdS )	_InstanceNc                 C   s
   || _ d S r	   )Z_client)r   r   r   r   r   rU     s    z_Instance.__init__)Nr   r   r   rU   r   r   r   r   r     s   r   c                   @   s   e Zd ZdddZdS )r   Nc                 C   s   || _ t|| _d S r	   )r   r   Z	_instance)r   r   r   r   r   r   rU     s    z_Table.__init__)Nr   r   r   r   r   r     s   r   )Z	unittest2ZTestCaser   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r<   rr   rl   rR   r   r   r   r   r   r   r   r   r   r   <module>   s8     Z  U9