a
    !f                      @   s
  zd dl Z W n ey"   dZY n0 dZd dlZdZddgZddgZd	d
gZdZe	dd eD Z
dZe	dd eeeD ZdZdZg dZeeeefZe	dd eed D Zeged   Zdd Zdd ZeedG dd dejZG dd dejZdS )    NFTz
my-projectz
instance-1z
instance-2z
us-east1-az
us-east1-bZ1234567890123456789Z9876543210987654321z/compute.googleapis.com/instance/cpu/utilizationc                 c   s   | ]}d |iV  qdS )instance_nameN ).0namer   r   b/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/monitoring/test__dataframe.py	<genexpr>        r   Zgce_instancec                 c   s   | ]\}}t ||d V  qdS ))
project_idzoneinstance_idN)PROJECT)r   r
   r   r   r   r   r   #   s
   ZGAUGEDOUBLE)z2016-04-06T22:05:00.042Zz2016-04-06T22:05:01.042Zz2016-04-06T22:05:02.042Zc                 c   s   | ]}d | V  qdS )g?Nr   )r   ir   r   r   r   3   r      c                      s(   dd l ddlm   fddtD S )Nr   )_RFC3339_MICROSc                    s   g | ]}j | qS r   )datetimestrptimer   tr   r   r   r   
<listcomp>:   s   z$parse_timestamps.<locals>.<listcomp>)r   Zgcloud._helpersr   
TIMESTAMPSr   r   r   r   parse_timestamps7   s
    r   c               	   #   s   ddl m}  ddlm} ddlm ddlm} fdd ttt	t
D ]>\}}|| t|d|t|dtt fd	d
tD dV  qHd S )Nr   )Metric)ResourcePoint)
TimeSeriesc                    s    | | |dS )N)
start_timeend_timevaluer   )	timestampr    r   r   r   PD   s
    z!generate_query_results.<locals>.P)typelabelsc                    s   g | ]} |qS r   r   r   )r"   r    r   r   r   R   r   z*generate_query_results.<locals>.<listcomp>)ZmetricresourceZmetric_kindZ
value_typeZpoints)Zgcloud.monitoring.metricr   Zgcloud.monitoring.resourcer   Zgcloud.monitoring.timeseriesr   r   zipMETRIC_LABELSRESOURCE_LABELSVALUESMETRIC_TYPERESOURCE_TYPEMETRIC_KIND
VALUE_TYPEr   )r   r   r   Zmetric_labelsZresource_labelsr   )r"   r   r    r   generate_query_results>   s    

r.   z	No pandasc                   @   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d Z
dd Zdd Zdd ZdS )Test__build_dataframec                 O   s   ddl m} ||i |S )Nr   )_build_dataframe)gcloud.monitoring._dataframer0   )selfargskwargsr0   r   r   r   _callFUTY   s    zTest__build_dataframe._callFUTc                 C   s@   |  t" | jg ddgd W d    n1 s20    Y  d S )Nr   r
   )labelr$   assertRaises
ValueErrorr5   r2   r   r   r   "test_both_label_and_labels_illegal]   s    z8Test__build_dataframe.test_both_label_and_labels_illegalc                 C   s<   |  t | jg g d W d    n1 s.0    Y  d S )Nr$   r7   r:   r   r   r   test_empty_labels_illegala   s    z/Test__build_dataframe.test_empty_labels_illegalc                 C   sz   t  }| j|dd}| |jt | |j t | t|j	t
 | |j	j | t|jt  | |jj d S )Nr   r6   )r.   r5   assertEqualshape
DIMENSIONSvaluestolistARRAYlistcolumnsINSTANCE_NAMESassertIsNoner   indexr   )r2   iterable	dataframer   r   r   test_simple_labele   s    z'Test__build_dataframe.test_simple_labelc                 C   s   ddg}t  }| j||d}| |jt | |j t dd tD }| t	|j
| | |j
j| | |j
j | t	|jt  | |jj d S )Nresource_typer   r<   c                 S   s   g | ]}t |fqS r   )r+   )r   r   r   r   r   r   {   s   z>Test__build_dataframe.test_multiple_labels.<locals>.<listcomp>)r.   r5   r?   r@   rA   rB   rC   rD   INSTANCE_IDSrE   rF   namesrH   r   rI   r   r2   NAMESrJ   rK   Zexpected_headersr   r   r   test_multiple_labelsr   s    z*Test__build_dataframe.test_multiple_labelsc                 C   s   d}|g}t  }| j||d}| |jt | |j t | t|j	t
 | |j	j| | |j	j| | t|jt  | |jj d S )Nr   r<   )r.   r5   r?   r@   rA   rB   rC   rD   rE   rF   rN   rO   r   rI   r   rH   )r2   NAMErQ   rJ   rK   r   r   r   "test_multiple_labels_with_just_one   s    z8Test__build_dataframe.test_multiple_labels_with_just_onec                 C   s   g d}t  }| |}| |jt | |j t dd tt	t
tD }| t|j| | |jj| | |jj | t|jt  | |jj d S )N)rM   r	   r
   r   r   c                 S   s    g | ]\}}}t t|||fqS r   )r+   r   )r   r
   r   r   r   r   r   r      s   z;Test__build_dataframe.test_smart_labels.<locals>.<listcomp>)r.   r5   r?   r@   rA   rB   rC   rD   r&   INSTANCE_ZONESrN   rG   rE   rF   rO   rH   r   rI   r   rP   r   r   r   test_smart_labels   s    

z'Test__build_dataframe.test_smart_labelsc                 C   sL   | j g dd}| |jd | |jj | |jj | |jtj	 d S )Nr   r>   r   r   )
r5   r?   r@   rH   rF   r   rI   assertIsInstancepandasDatetimeIndex)r2   rK   r   r   r   test_empty_table_simple_label   s
    z3Test__build_dataframe.test_empty_table_simple_labelc                 C   sd   ddg}| j g |d}| |jd | |jj| | |jj | |jj | |jt	j
 d S )NrM   r   r<   rW   )r5   r?   r@   rF   rO   rH   r   rI   rX   rY   rZ   )r2   rQ   rK   r   r   r    test_empty_table_multiple_labels   s    z6Test__build_dataframe.test_empty_table_multiple_labelsc                 C   sh   d}|g}| j g |d}| |jd | |jj| | |jj| | |jj | |jt	j
 d S )Nr   r<   rW   r5   r?   r@   rF   rO   r   rH   rI   rX   rY   rZ   r2   rS   rQ   rK   r   r   r   .test_empty_table_multiple_labels_with_just_one   s    zDTest__build_dataframe.test_empty_table_multiple_labels_with_just_onec                 C   sd   d}|g}|  g }| |jd | |jj| | |jj| | |jj | |jt	j
 d S )NrM   rW   r]   r^   r   r   r   test_empty_table_smart_labels   s    
z3Test__build_dataframe.test_empty_table_smart_labelsN)__name__
__module____qualname__r5   r;   r=   rL   rR   rT   rV   r[   r\   r_   r`   r   r   r   r   r/   V   s   	
r/   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test__sorted_resource_labelsc                 C   s   ddl m} ||S )Nr   )_sorted_resource_labels)r1   re   )r2   r$   re   r   r   r   r5      s    z%Test__sorted_resource_labels._callFUTc                 C   s   |  | g g  d S )N)r?   r5   r:   r   r   r   
test_empty   s    z'Test__sorted_resource_labels.test_emptyc                 C   s*   ddl m} |d }| | || d S Nr   )TOP_RESOURCE_LABELS)zother-1zother-2)r1   rh   assertSequenceEqualr5   )r2   rh   EXPECTEDr   r   r   test_sorted   s    z(Test__sorted_resource_labels.test_sortedc                 C   s6   ddl m} |d }tt|}| | || d S rg   )r1   rh   rE   reversedri   r5   )r2   rh   rj   ZINPUTr   r   r   test_reversed   s    z*Test__sorted_resource_labels.test_reversedN)ra   rb   rc   r5   rf   rk   rm   r   r   r   r   rd      s   rd   )rY   ImportErrorZHAVE_PANDASZ	unittest2r   rG   rU   rN   r*   rE   r'   r+   r&   r(   r,   r-   r   lenrA   ranger)   rD   r   r.   Z
skipUnlessZTestCaser/   rd   r   r   r   r   <module>   s4   

y