o
    ^$                     @   sb   d Z ddlZddlZddlZddlmZmZ ddlmZ G dd dej	Z
edkr/e  dS dS )z1Define set of helper functions for the dataframe.    N)SeriesHelperInfluxDBClient)ConnectionErrorc                       sT   e Zd ZdZe fddZdd Zdd Zdd	 Zd
d Z	dd Z
dd Z  ZS )TestSeriesHelperz!Define the SeriesHelper for test.c                    s:   t t|   tdddddt_G dd dt}|t_dS )	z1Set up an instance of the TestSerisHelper object.Zhosti  ZusernameZpasswordZdatabasec                   @      e Zd ZdZG dd dZdS )z3TestSeriesHelper.setUpClass.<locals>.MySeriesHelperz&Define a subset SeriesHelper instance.c                   @   *   e Zd ZdZejZdZddgZdZdZ	dS )z8TestSeriesHelper.setUpClass.<locals>.MySeriesHelper.Metaz0Define metadata for the TestSeriesHelper object.events.stats.{server_name}timeserver_name   TN
__name__
__module____qualname____doc__r   clientseries_namefields	bulk_size
autocommit r   r   G/usr/lib/python3/dist-packages/influxdb/tests/influxdb08/helper_test.pyMeta       r   Nr   r   r   r   r   r   r   r   r   MySeriesHelper       r   N)superr   
setUpClassr   r   r   r   )clsr   	__class__r   r   r      s   
zTestSeriesHelper.setUpClassc                 C   sx   G dd dt }t }|ddd ||j_|ddd |ddd |ddd | |j |dd	d | |j d
S )z?Test that write_points called after the right number of events.c                   @   r   )z9TestSeriesHelper.test_auto_commit.<locals>.AutoCommitTestz7Define an instance of SeriesHelper for AutoCommit test.c                   @   s*   e Zd ZdZdZddgZdZe ZdZ	dS )z>TestSeriesHelper.test_auto_commit.<locals>.AutoCommitTest.Metaz&Define metadata AutoCommitTest object.r   r	   r
   r   TN)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   /   s    r   Nr   r   r   r   r   AutoCommitTest,   r   r"   	us.east-1   r
   r	            is  N)r   mockZ	MagicMockZ_clientZwrite_pointsZassertFalseZcalled
assertTrue)selfr"   Zfake_write_pointsr   r   r   test_auto_commit*   s   z!TestSeriesHelper.test_auto_commitc                    s   t jddd t jddd t jddd t jddd ddgddgddgddggddd	gd
g t j | t fddD oMtfdd D d t j  | t j g d dS )8Test JSON conversion when there is only one series name.r#   r$   r%   r&   r'   r(   events.stats.us.east-1r	   r
   Zpointsnamecolumnsc                       g | ]}| v qS r   r   .0elexpectationr   r   
<listcomp>P       z9TestSeriesHelper.testSingleSeriesName.<locals>.<listcomp>c                    r2   r   r   r3   rcvdr   r   r8   Q   r9   zTInvalid JSON body of time series returned from _json_body_ for one series name: {0}.*Resetting helper did not empty datapoints.Nr   r   Z_json_body_r*   allformatZ_reset_ZassertEqualr+   r   r7   r;   r   testSingleSeriesNameB   s0   

z%TestSeriesHelper.testSingleSeriesNamec                    s   t jddd t jddd t jddd t jdd	d ddggd
ddgdd	dggdddgdddggdddgdddggdddgdg t j | t fddD obtfdd D d t j  | t j g d dS )r-   r#   r$   r%   zfr.paris-10r&   zlu.luxr'   z	uk.londonr(   zevents.stats.lu.luxr	   r
   r/   zevents.stats.uk.londonzevents.stats.fr.paris-10r.   c                    r2   r   r   r3   r6   r   r   r8   n   r9   z;TestSeriesHelper.testSeveralSeriesNames.<locals>.<listcomp>c                    r2   r   r   r3   r:   r   r   r8   o   r9   zYInvalid JSON body of time series returned from _json_body_ for several series names: {0}.r<   Nr=   r@   r   rA   r   testSeveralSeriesNamesZ   sB   

z'TestSeriesHelper.testSeveralSeriesNamesc                 C   sp   G dd dt }G dd dt }G dd dt }G dd dt }||||fD ]}| jt|fi d	d
d q&dS )zTest errors in invalid helpers.c                   @   s   e Zd ZdZdS )z8TestSeriesHelper.testInvalidHelpers.<locals>.MissingMetaz0Define SeriesHelper object for MissingMeta test.N)r   r   r   r   r   r   r   r   MissingMeta{   s    rD   c                   @   r   )z:TestSeriesHelper.testInvalidHelpers.<locals>.MissingClientz2Define SeriesHelper object for MissingClient test.c                   @   s    e Zd ZdZdZddgZdZdS )z?TestSeriesHelper.testInvalidHelpers.<locals>.MissingClient.Metaz)Define metadata for MissingClient object.r   r	   r
   TN)r   r   r   r   r   r   r   r   r   r   r   r      s
    r   Nr   r   r   r   r   MissingClient   r   rE   c                   @   r   )z>TestSeriesHelper.testInvalidHelpers.<locals>.MissingSeriesNamez2Define SeriesHelper object for MissingSeries test.c                   @   s   e Zd ZdZddgZdS )zCTestSeriesHelper.testInvalidHelpers.<locals>.MissingSeriesName.Metaz-Define metadata for MissingSeriesName object.r	   r
   N)r   r   r   r   r   r   r   r   r   r      s    r   Nr   r   r   r   r   MissingSeriesName   r   rF   c                   @   r   )z:TestSeriesHelper.testInvalidHelpers.<locals>.MissingFieldsz+Define SeriesHelper for MissingFields test.c                   @   s   e Zd ZdZdZdS )z?TestSeriesHelper.testInvalidHelpers.<locals>.MissingFields.Metaz)Define metadata for MissingFields object.r   N)r   r   r   r   r   r   r   r   r   r      s    r   Nr   r   r   r   r   MissingFields   r   rG   r$   r#   r	   r
   N)r   assertRaisesAttributeError)r+   rD   rE   rF   rG   r   r   r   r   testInvalidHelpersy   s   
z#TestSeriesHelper.testInvalidHelpersc                 C   s   G dd dt }tjdd(}td | t |ddd W d	   n1 s*w   Y  W d	   n1 s9w   Y  | t|d
d|d	t
t| d}| |tdd |D d d	S )z&Test warning for an invalid bulk size.c                   @   r   )z?TestSeriesHelper.testWarnBulkSizeZero.<locals>.WarnBulkSizeZeroz.Define SeriesHelper for WarnBulkSizeZero test.c                   @   r   )zDTestSeriesHelper.testWarnBulkSizeZero.<locals>.WarnBulkSizeZero.Metaz,Define metadata for WarnBulkSizeZero object.r   r	   r
   r   TNr   r   r   r   r   r      r   r   Nr   r   r   r   r   WarnBulkSizeZero   r   rL   Trecordalwaysr$   r#   rH   N   I{0} call should have generated one warning.Actual generated warnings: {1}
zIDefinition of bulk_size in WarnBulkSizeZero forced to 1, was less than 1.c                 s       | ]	}|j jd  V  qdS r   Nmessageargsr4   wr   r   r   	<genexpr>       z8TestSeriesHelper.testWarnBulkSizeZero.<locals>.<genexpr>z.Warning message did not contain "forced to 1".)r   warningscatch_warningssimplefilterrI   r   assertGreaterEquallenr?   joinmapstrassertInlist)r+   rL   rec_warningsexpected_msgr   r   r   testWarnBulkSizeZero   s,   
z%TestSeriesHelper.testWarnBulkSizeZeroc                 C   s   G dd dt }tjdd}td |ddd W d	   n1 s$w   Y  | t|d
d|dtt	| d}| 
|tdd |D d d	S )z6Test warning for a set bulk size but autocommit False.c                   @   r   )zGTestSeriesHelper.testWarnBulkSizeNoEffect.<locals>.WarnBulkSizeNoEffectz4Define SeriesHelper for WarnBulkSizeNoEffect object.c                   @   s$   e Zd ZdZdZddgZdZdZdS )zLTestSeriesHelper.testWarnBulkSizeNoEffect.<locals>.WarnBulkSizeNoEffect.Metaz0Define metadata for WarnBulkSizeNoEffect object.r   r	   r
   r   FN)r   r   r   r   r   r   r   r   r   r   r   r   r      s    r   Nr   r   r   r   r   WarnBulkSizeNoEffect   r   ri   TrM   rO   r$   r#   rH   NrP   rQ   rR   zZDefinition of bulk_size in WarnBulkSizeNoEffect has no affect because autocommit is false.c                 s   rS   rT   rU   rX   r   r   r   rZ      r[   z<TestSeriesHelper.testWarnBulkSizeNoEffect.<locals>.<genexpr>z1Warning message did not contain the expected_msg.)r   r\   r]   r^   r_   r`   r?   ra   rb   rc   rd   re   )r+   ri   rf   rg   r   r   r   testWarnBulkSizeNoEffect   s&   
z)TestSeriesHelper.testWarnBulkSizeNoEffect)r   r   r   r   classmethodr   r,   rB   rC   rK   rh   rj   __classcell__r   r   r    r   r      s    '#r   __main__)r   Zunittestr\   r)   Zinfluxdb.influxdb08r   r   Zrequests.exceptionsr   ZTestCaser   r   mainr   r   r   r   <module>   s    X