o
    1^3                     @   s   d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
mZmZ ddlmZ esBddlZddlmZ dd	lmZ eG d
d dejZdS )zUnit tests for misc module.    )	timedeltaN)raises)skip_if_pypy
using_pypy   )_mocked_session)assert_frame_equal)DataFrameClientc                   @   s   e 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
eedd Zeedd Zdd Zdd Zdd Zdd Zdd ZdS )TestDataFrameClientz&Define the DataFramClient test object.c                 C   s   t dt dS )z1Set up an instance of TestDataFrameClient object.errorN)warningssimplefilterFutureWarning)self r   Q/usr/lib/python3/dist-packages/influxdb/tests/influxdb08/dataframe_client_test.pysetUp   s   zTestDataFrameClient.setUpc                 C   s   t d}t jg dg dg||tdd gg dd}g dg d	gd
g ddg}t '}|tjd tdd}|	d
|i | 
t|jj| W d   dS 1 sYw   Y  dS )z!Test write points from dataframe.1970-01-01 00:00+00:001r         ?2          @r   Zhours
column_one
column_twocolumn_threedataindexcolumnsr   r   r   r   r   r   r     foor   r   r   timepointsnamer#   "http://localhost:8086/db/db/seriesdbZdatabaseNpd	Timestamp	DataFramer   requests_mockMockerregister_uriPOSTr	   write_pointsassertListEqualjsonloadslast_requestbodyr   now	dataframer+   mclir   r   r    test_write_points_from_dataframe"   s(   


"z4TestDataFrameClient.test_write_points_from_dataframec                 C   s   t d}t jdtddgg dg||tdd gg dd}g d	g d
gdg ddg}t '}|tjd t	dd}|
d|i | t|jj| W d   dS 1 s\w   Y  dS )z0Test write points from dataframe with NaN float.r   r   ZNaNr   )r   r   r   r   r   r    )r   Nr   r   )r   r   r   r&   r'   r(   r*   r-   r.   r/   N)r1   r2   r3   floatr   r4   r5   r6   r7   r	   r8   r9   r:   r;   r<   r=   r>   r   r   r   /test_write_points_from_dataframe_with_float_nan=   s(   


"zCTestDataFrameClient.test_write_points_from_dataframe_with_float_nanc                 C   s   t d}t jg dg dg||tdd gg dd}t !}|tjd td	d
}| 	|j
d|idd W d   dS 1 sDw   Y  dS )z,Test write points from dataframe in batches.r   r   r   r   r   r   r    r-   r.   r/   r'   )Z
batch_sizeN)r1   r2   r3   r   r4   r5   r6   r7   r	   Z
assertTruer8   r   r?   r@   rA   rB   r   r   r   +test_write_points_from_dataframe_in_batchesX   s   


"z?TestDataFrameClient.test_write_points_from_dataframe_in_batchesc                 C   s   t d}t jg dg dg||tdd gd}g dg dgd	g d
dg}t '}|tjd tdd}|	d	|i | 
t|jj| W d   dS 1 sVw   Y  dS )z6Test write points from dataframe with numeric columns.r   r   r   r   r   r!   r"   r$   r%   r'   )0r   r   r)   r*   r-   r.   r/   Nr0   r>   r   r   r   :test_write_points_from_dataframe_with_numeric_column_namesf   s&   


"zNTestDataFrameClient.test_write_points_from_dataframe_with_numeric_column_namesc                 C   s   t jg dg dgt dt dgg dd}g dg dgd	g d
dg}t '}|tjd tdd}|d	|i | 	t
|jj| W d   dS 1 sUw   Y  dS )z3Test write points from dataframe with period index.r   r   z
1970-01-01z
1970-01-02r   r    r$   )r   r   r   iQ r'   r(   r*   r-   r.   r/   N)r1   r3   ZPeriodr4   r5   r6   r7   r	   r8   r9   r:   r;   r<   r=   )r   r@   r+   rA   rB   r   r   r   2test_write_points_from_dataframe_with_period_index   s*   

"zFTestDataFrameClient.test_write_points_from_dataframe_with_period_indexc                 C   sP  t d}t jg dg dg||tdd gg dd}g dg d	gd
g ddg}t|}d|d d d d< t|}d|d d d d< t Q}|tj	d t
dd}|jd
|idd | t|jj| |jd
|idd | t|jj| |jd
|idd | t|jj| W d   dS 1 sw   Y  dS )z5Test write points from dataframe with time precision.r   r   r   r   r   r   r    r$   r%   r'   r(   r*   i6 r   r+   l    $'- r-   r.   r/   sZtime_precisionrA   uN)r1   r2   r3   r   copyZdeepcopyr4   r5   r6   r7   r	   r8   r9   r:   r;   r<   r=   )r   r?   r@   r+   Z	points_msZ	points_usrA   rB   r   r   r   4test_write_points_from_dataframe_with_time_precision   s8   




"zHTestDataFrameClient.test_write_points_from_dataframe_with_time_precisionc                 C   sr   t jg dg dgg dd}t }|tjd tdd}|d|i W d	   d	S 1 s2w   Y  d	S )
z?Test write points from dataframe that fails without time index.r   r   r   )r!   r#   r-   r.   r/   r'   N)r1   r3   r4   r5   r6   r7   r	   r8   )r   r@   rA   rB   r   r   r   9test_write_points_from_dataframe_fails_without_time_index   s   

"zMTestDataFrameClient.test_write_points_from_dataframe_fails_without_time_indexc                 C   s~   t d}t jddg||tdd gd}t }|tjd tdd	}|	d
|i W d   dS 1 s8w   Y  dS )z4Test failed write points from dataframe with series.r   r   r   r   r   rH   r-   r.   r/   r'   N)
r1   r2   ZSeriesr   r4   r5   r6   r7   r	   r8   rF   r   r   r   2test_write_points_from_dataframe_fails_with_series   s   



"zFTestDataFrameClient.test_write_points_from_dataframe_fails_with_seriesc                 C   s   dg dg dg dg dg dgdg}t jdd	gd
dgdd	gddggt jg ddddddgd}tdd| tddddd}|d}t|| W d   dS 1 sWw   Y  dS )zTest query into a dataframe.r'   )r)   sequence_numberr   )r&      r   )r&      r   )r      r   )r      r   r,   r#   r+   rX   r   rW   r   rV   rU   )r   r   r&   r&   rM   TZunitZutcrT   r   r    get   host  usernamepasswordr.   select column_one from foo;N)r1   r3   to_datetimer   r	   queryr   )r   r!   r@   rB   resultr   r   r   test_query_into_dataframe   s$   

"z-TestDataFrameClient.test_query_into_dataframec              	   C   s8  dg dg dgddg dg dgddg dg dgdg}t jg d	gt jd
gdddg ddt jg dgt jd
gdddg ddt jg dgt jd
gdddg ddd}tdd|0 tddddd}|d}| | |  | D ]}t|| ||  q~W d   dS 1 sw   Y  dS )z$Test query for multiple time series.series1)r)   meanminmaxstddev)r    rk   rk   r   rY   series2)r   _vOvOjNё\CeX?series3)r   HPrr   rr   r   )rk   rk   rk   r   r   rM   TrZ   )rg   rh   ri   rj   r    )rm   rn   ro   rp   )rr   rr   rr   r   )rf   rl   rq   r[   r\   r]   r^   r_   r`   r.   zhselect mean(value), min(value), max(value),
                stddev(value) from series1, series2, series3N)	r1   r3   rb   r   r	   rc   assertEqualkeysr   )r   r!   Z
dataframesrB   rd   keyr   r   r   test_query_multiple_time_series   sP   



"z3TestDataFrameClient.test_query_multiple_time_seriesc                 C   sX   t ddg  tddddd}|d}| |g  W d	   d	S 1 s%w   Y  d	S )
zTest query with empty results.r[   r\   r]   r^   r_   r`   r.   ra   N)r   r	   rc   rs   )r   rB   rd   r   r   r   test_query_with_empty_result  s
   
"z0TestDataFrameClient.test_query_with_empty_resultc                 C   sx   ddgdddgddggdg}t dd	| td
dddd}| }| |ddg W d   dS 1 s5w   Y  dS )z)Test list of series for dataframe object.r)   r,   Zlist_series_resultr   ZseriesAZseriesB)r#   r,   r+   r[   r\   r]   r^   r_   r`   r.   N)r   r	   Zget_list_seriesrs   )r   ZresponserB   Zseries_listr   r   r   test_list_series%  s   "z$TestDataFrameClient.test_list_seriesc                 C   s   t d}tddddd}| ||d | |j|dd	d | |j|d
d	d | |j|dd	d | |j|dd	d dS )zTest convert datetime to epoch.z2013-01-01 00:00:00.000+00:00r]   r^   r_   r`   r.   g   8ArM   rN   rA   g  6sBmsrO   g  _>HCN)r1   r2   r	   rs   Z_datetime_to_epoch)r   Z	timestamprB   r   r   r   test_datetime_to_epoch3  s,   
z*TestDataFrameClient.test_datetime_to_epochN)__name__
__module____qualname____doc__r   rC   rE   rG   rJ   rK   rQ   r   	TypeErrorrR   rS   re   rv   rw   rx   rz   r   r   r   r   r
      s$    '

)r
   )r~   Zdatetimer   rP   r:   Zunittestr   r4   Z
nose.toolsr   Zinfluxdb.testsr   r   Zclient_testr   Zpandasr1   Zpandas.util.testingr   Zinfluxdb.influxdb08r	   ZTestCaser
   r   r   r   r   <module>   s    