o
    ^~                     @   s   d Z ddlZddlZddlZddlZddl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 ddlmZ ddlmZ ejdk rPddlZdd	 Znd
d	 ZdddZdddZG dd dejZdS )zClient unit tests.    N)raises)patch)InfluxDBClient)session3c                 C   s   t | d S )Test codec.r   )codecsunicode_escape_decodex r   G/usr/lib/python3/dist-packages/influxdb/tests/influxdb08/client_test.pyu   s   r   c                 C   s   | S )r   r   r
   r   r   r   r             c                 C   s   t  }| |_|d|_|S )Nutf8)requestsResponsestatus_codeencodeZ_content)r   contentZrespr   r   r   _build_response_object"   s   r   GETc                    s,      fdd}tjtd|d}|S )Nc                     s|    }| ddksJ dkr.| dd}|dur.t|ts!J |tj|ddks,J |}t|ts8t|}t|dS )	z)Define a request for the _mocked_session.methodr   POSTdataNTstrict)r   r   )get
isinstancestrjsonloadsdumpsr   )argskwargscr   r   r   r   r   r   request,   s   

z _mocked_session.<locals>.requestr)   )side_effect)upperr   objectr   )r   r   r   r)   mockedr   r(   r   _mocked_session)   s   r.   c                   @   s  e Zd ZdZdd Zdd Zdd Zdd	 Zee	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eedd Zd d! Zd"d# Zeed$d% Zd&d' Zeed(d) Zeed*d+ Zeed,d- Zeed.d/ Zd0d1 Zd2d3 Z d4d5 Z!eed6d7 Z"d8d9 Z#d:d; Z$eed<d= Z%d>d? Z&eed@dA Z'dBdC Z(eedDdE Z)ee	dFdG Z*dHdI Z+eedJdK Z,dLdM Z-dNdO Z.dPdQ Z/dRdS Z0dTdU Z1dVdW Z2dXdY Z3dZd[ Z4d\d] Z5eed^d_ Z6eed`da Z7eedbdc Z8eeddde Z9dfdg Z:dhdi Z;djdk Z<dldm Z=dndo Z>dpdq Z?drds Z@dtdu ZAeedvdw ZBeCDdxdydz ZEeCDdxd{d| ZFd}S )~TestInfluxDBClientz#Define a TestInfluxDBClient object.c                 C   s6   t dt g dg dgdg ddg| _d| _dS )	z#Set up a TestInfluxDBClient object.error1   g      ?2   g       @foo)
column_oneZ
column_twoZcolumn_threepointsnamecolumnszinfluxdb://uSr:pWd@host:1886/dbN)warningssimplefilterFutureWarningdummy_points
dsn_stringselfr   r   r   setUpQ   s   
zTestInfluxDBClient.setUpc                 C   sD   t ddddd}| |jd t ddddddd}| |jd	 d
S )z3Test database scheme for TestInfluxDBClient object.host  usernamepassworddatabasezhttp://host:8086T)sslzhttps://host:8086N)r   assertEqual_baseurlrC   clir   r   r   test_schemec   s   zTestInfluxDBClient.test_schemec                 C   s   t | j}| d|j | d|j | d|j | d|j | |j	 t d| j }| 
|j	 t d| j }| d|j t jd| j fi dd	i}| d|j d
S )z3Test datasource name for TestInfluxDBClient object.zhttp://host:1886ZuSrZpWddbzudp+zhttps+zhttps://host:1886rJ   FN)r   Zfrom_dsnrA   rK   rL   	_username	_password	_databaseZassertFalseZ_use_udp
assertTruerM   r   r   r   test_dsnm   s   zTestInfluxDBClient.test_dsnc                 C   ,   t ddddd}|d | |jd dS )z3Test switch database for TestInfluxDBClient object.rE   rF   rG   rH   rI   another_databaseN)r   Zswitch_databaserK   rS   rM   r   r   r   test_switch_database   s   
z'TestInfluxDBClient.test_switch_databasec                 C   rV   )z>Test deprecated switch database for TestInfluxDBClient object.rE   rF   rG   rH   rI   rW   N)r   Z	switch_dbrK   rS   rM   r   r   r   test_switch_db_deprecated   s   
z,TestInfluxDBClient.test_switch_db_deprecatedc                 C   s<   t ddddd}|dd | |jd | |jd dS )	z/Test switch user for TestInfluxDBClient object.rE   rF   rG   rH   rI   Zanother_usernameZanother_passwordN)r   Zswitch_userrK   rQ   rR   rM   r   r   r   test_switch_user   s   z#TestInfluxDBClient.test_switch_userc                 C   s   t  C}|t jd tdd}|dddddd	d
ddidgd | t|j	j
dddddd	d
ddidgd W d   dS 1 sJw   Y  dS )z5Test write to database for TestInfluxDBClient object.zhttp://localhost:8086/writerP   rI   ZmydbZmypolicyZcpu_load_shortZserver01zus-west)rE   Zregionz2009-11-10T23:00:00Zvalueg{Gz?)r;   ZtagsZ	timestampvalues)rI   ZretentionPolicyr:   N)requests_mockMockerregister_urir   r   writerK   r"   r#   last_requestbodyrC   mrN   r   r   r   
test_write   s@   


"zTestInfluxDBClient.test_writec                 C   sj   t  '}|t jd tdd}|| j | t	|j
j| j W d   dS 1 s.w   Y  dS )z0Test write points for TestInfluxDBClient object."http://localhost:8086/db/db/seriesrP   r[   N)r^   r_   r`   r   r   write_pointsr@   assertListEqualr"   r#   rb   rc   rd   r   r   r   test_write_points   s   

"z$TestInfluxDBClient.test_write_pointsc                 C   st   t  ,}|t jd tdd}|tt| j	 | 
t|jj| j	 W d   dS 1 s3w   Y  dS )z7Test write string points for TestInfluxDBClient object.rg   rP   r[   N)r^   r_   r`   r   r   rh   r!   r"   r$   r@   ri   r#   rb   rc   rd   r   r   r   test_write_points_string   s   

"z+TestInfluxDBClient.test_write_points_stringc                 C   h   t  }|t jd tddddd}|j| jdd W d	   n1 s&w   Y  | d
|j d	S )z6Test write batch points for TestInfluxDBClient object.rg   	localhostrF   rG   rH   rP   r6   r   Z
batch_sizeNr3   	r^   r_   r`   r   r   rh   r@   rK   
call_countrd   r   r   r   test_write_points_batch      
z*TestInfluxDBClient.test_write_points_batchc                 C   rl   )z<Test write batch points invalid size for TestInfluxDBClient.rg   rm   rF   rG   rH   rP   rn   Nr3   ro   rd   r   r   r   $test_write_points_batch_invalid_size   rr   z7TestInfluxDBClient.test_write_points_batch_invalid_sizec              
   C   s  g dg dg dg dg dgdg ddg dg dg dg dg dg d	g d
g dgdg ddg}g d
g dgdg ddg}t  }|t jd tddddd}|j|dd W d   n1 skw   Y  | |jd | ||jd 	  dS )z(Test write points batch multiple series.r1   r4   )r      g      @)4   g      @)5   g      @r7   )Zval1Zval2Zval3r9   )6   g      @)7   g      @)8   g       @barrg   rm   rF   rG   rH   rP   ru   rn   Nry   rw   )
r^   r_   r`   r   r   rh   rK   rp   Zrequest_historyr"   )rC   r@   Zexpected_last_bodyre   rN   r   r   r   'test_write_points_batch_multiple_series   s:   
z:TestInfluxDBClient.test_write_points_batch_multiple_seriesc              	   C   sz   t  t jt j}tdd}|d|f tdddddd|d	}|| j |	d
\}}| 
| jtj| dd dS )z4Test write points UDP for TestInfluxDBClient object.i  i@  z0.0.0.0rm   rF   roottestTZuse_udpZudp_porti   r   N)socketZAF_INETZ
SOCK_DGRAMrandomZrandintZbindr   rh   r@   ZrecvfromrK   r"   r#   decode)rC   sZportrN   Zreceived_dataZaddrr   r   r   test_write_points_udp  s   z(TestInfluxDBClient.test_write_points_udpc              	   C   sX   t dddddddd}| td |j| jd	d
 W d   dS 1 s%w   Y  dS )zTest write UDP w/bad precision.rm   rF   r   r   Ti\  r   z7InfluxDB only supports seconds precision for udp writesmsZtime_precisionNr   assertRaisesRegexp	Exceptionrh   r@   rM   r   r   r   test_write_bad_precision_udp  s   "z/TestInfluxDBClient.test_write_bad_precision_udpc                 C   J   t dd tddddd}|g  W d   dS 1 sw   Y  dS )	z7Test failed write points for TestInfluxDBClient object.post  rE   rF   rG   rH   rP   N)r.   r   rh   rM   r   r   r   test_write_points_fails#     "z*TestInfluxDBClient.test_write_points_failsc                 C   sV   t dd| j tddddd}| || j W d   dS 1 s$w   Y  dS )	z!Test write points with precision.r   r   rE   rF   rG   rH   rP   N)r.   r@   r   rT   rh   rM   r   r   r    test_write_points_with_precision*  s   "z3TestInfluxDBClient.test_write_points_with_precisionc                 C   sH   t  }| td |j| jdd W d   dS 1 sw   Y  dS )z%Test write points with bad precision.>Invalid time precision is given. \(use 's', 'm', 'ms' or 'u'\)gr   Nr   rM   r   r   r   test_write_points_bad_precision0  s   "z2TestInfluxDBClient.test_write_points_bad_precisionc                 C   r   )	z(Test write points where precision fails.r   r   rE   rF   rG   rH   rP   N)r.   r   Zwrite_points_with_precisionrM   r   r   r   &test_write_points_with_precision_fails<  r   z9TestInfluxDBClient.test_write_points_with_precision_failsc                 C   s   t dd<}tddddd}| |d | t|jd	 |jd
 \}}| |d ddd | |d d W d   dS 1 sDw   Y  dS )z1Test delete points for TestInfluxDBClient object.delete   rE   rF   rG   rH   rP   r7   r3   r   params)r   pZurlz!http://host:8086/db/db/series/fooN)r.   r   rT   delete_pointsrK   lenZcall_args_list)rC   r-   rN   r%   kwdsr   r   r   test_delete_pointsC  s   
"z%TestInfluxDBClient.test_delete_pointsc                 C   J   t dd tddddd}|d W d	   d	S 1 sw   Y  d	S )
z#Test delete points with wrong name.r   i  rE   rF   rG   rH   rP   ZnonexistN)r.   r   r   rM   r   r   r   "test_delete_points_with_wrong_nameP  r   z5TestInfluxDBClient.test_delete_points_with_wrong_namec                 C   s   t ddddd}|g  dS )zTest create scheduled deletes.rE   rF   rG   rH   rP   N)r   Zcreate_scheduled_deleterM   r   r   r   test_create_scheduled_deleteW     z/TestInfluxDBClient.test_create_scheduled_deletec                 C      t ddddd}|  dS )z5Test get schedule list of deletes TestInfluxDBClient.rE   rF   rG   rH   rP   N)r   Zget_list_scheduled_deleterM   r   r   r   test_get_list_scheduled_delete]     z1TestInfluxDBClient.test_get_list_scheduled_deletec                 C      t ddddd}|d dS )z0Test remove scheduled delete TestInfluxDBClient.rE   rF   rG   rH   rP   r3   N)r   Zremove_scheduled_deleterM   r   r   r   test_remove_scheduled_deletec  r   z/TestInfluxDBClient.test_remove_scheduled_deletec                 C   s   dg dg dg dg dg dgdg}t dd	|" td
dddd}|d}| t|d d d W d   dS 1 s@w   Y  dS )z)Test query for TestInfluxDBClient object.r7   )timesequence_numberr8   )E|R   r5   )r      r2   )E|R   r5   )r      r2   )r;   r<   r:   r   r   rE   rF   rG   rH   rP   select column_one from foo;r   r:   rw   N)r.   r   queryrK   r   )rC   r   rN   resultr   r   r   
test_queryi  s   

"zTestInfluxDBClient.test_queryc                 C   s   t dd}g dg dg dg dg dgdg d	d
}t|t| }t }|jtjd|d | |jddd||g W d   dS 1 sLw   Y  dS )z1Test chunked query for TestInfluxDBClient object.rP   r[   )l   &&iA  i  )l   &i1u  r}   )l   Q&i!N  i  )   t&'  i+  )   "& &r      r7   r   r   valr9   rg   textselect * from fooTZchunkedN)	r   r"   r$   r^   r_   r`   r   ri   r   rC   rN   Zexample_objectexample_responsere   r   r   r   test_query_chunkedz  s.   

"z%TestInfluxDBClient.test_query_chunkedc                 C   s   t dd}ddtdgddtdggdg d	d
}t|t| }t }|jtjd|d | |j	ddd||g W d   dS 1 sIw   Y  dS )z9Test unicode chunked query for TestInfluxDBClient object.rP   r[   r   r   u   unicode-Ïr   u   more-unicode-Ïr7   r   r9   rg   r   r   Tr   N)
r   r   r"   r$   r^   r_   r`   r   ri   r   r   r   r   r   test_query_chunked_unicode  s(   

"z-TestInfluxDBClient.test_query_chunked_unicodec                 C   r   )
z)Test failed query for TestInfluxDBClient.r     rE   rF   rG   rH   rP   r   N)r.   r   r   rM   r   r   r   test_query_fail  r   z"TestInfluxDBClient.test_query_failc                 C   sF   t  }| td |jddd W d   dS 1 sw   Y  dS )z5Test query with bad precision for TestInfluxDBClient.r   zselect column_one from foor   r   N)r   r   r   r   rM   r   r   r   test_query_bad_precision  s   "z+TestInfluxDBClient.test_query_bad_precisionc                 C   sV   t ddddi tddddd	}| |d W d
   d
S 1 s$w   Y  d
S )z,Test create database for TestInfluxDBClient.r      r;   new_dbrE   rF   rG   rH   rP   N)r.   r   rT   create_databaserM   r   r   r   test_create_database  s   "z'TestInfluxDBClient.test_create_databasec                 C   r   )
z3Test failed create database for TestInfluxDBClient.r   r   rE   rF   rG   rH   rP   r   N)r.   r   r   rM   r   r   r   test_create_database_fails  r   z-TestInfluxDBClient.test_create_database_failsc                 C   sP   t dd tddddd}| |d W d	   d	S 1 s!w   Y  d	S )
z,Test delete database for TestInfluxDBClient.r   r   rE   rF   rG   rH   rP   old_dbN)r.   r   rT   delete_databaserM   r   r   r   test_delete_database  s   "z'TestInfluxDBClient.test_delete_databasec                 C   r   )
z3Test failed delete database for TestInfluxDBClient.r   r   rE   rF   rG   rH   rP   r   N)r.   r   r   rM   r   r   r   test_delete_database_fails  r   z-TestInfluxDBClient.test_delete_database_failsc                 C   v   ddig}t dd|& tdddd}| t| d	 | | d
 d d W d   dS 1 s4w   Y  dS )z2Test get list of databases for TestInfluxDBClient.r;   a_dbr   r   rE   rF   rG   rH   r3   r   N)r.   r   rK   r   get_list_databaserC   r   rN   r   r   r   test_get_list_database  s   "z)TestInfluxDBClient.test_get_list_databasec                 C   sF   t dd tdddd}|  W d   dS 1 sw   Y  dS )z9Test failed get list of databases for TestInfluxDBClient.r   r   rE   rF   rG   rH   N)r.   r   r   rM   r   r   r   test_get_list_database_fails  s   
"z/TestInfluxDBClient.test_get_list_database_failsc                 C   r   )z9Test deprecated get database list for TestInfluxDBClient.r;   r   r   r   rE   rF   rG   rH   r3   r   N)r.   r   rK   r   Zget_database_listr   r   r   r   !test_get_database_list_deprecated  s   "z4TestInfluxDBClient.test_get_database_list_deprecatedc                 C   r   )
z*Test delete series for TestInfluxDBClient.r   r   rE   rF   rG   rH   rP   
old_seriesNr.   r   Zdelete_seriesrM   r   r   r   test_delete_series  s   "z%TestInfluxDBClient.test_delete_seriesc                 C   r   )
z1Test failed delete series for TestInfluxDBClient.r   r   rE   rF   rG   rH   rP   r   Nr   rM   r   r   r   test_delete_series_fails  r   z+TestInfluxDBClient.test_delete_series_failsc                 C   b   t dd}t }d}|jtjd|d | | ddg W d   dS 1 s*w   Y  dS )	z/Test get list of series for TestInfluxDBClient.rP   r[   zX[{"name":"list_series_result","columns":["time","name"],"points":[[0,"foo"],[0,"bar"]]}]rg   r   r7   r   N)r   r^   r_   r`   r   ri   Zget_list_seriesrC   rN   re   r   r   r   r   test_get_series_list  s   

"z'TestInfluxDBClient.test_get_series_listc                 C   r   )	z3Test get continuous queries for TestInfluxDBClient.rP   r[   a;  [ { "name": "continuous queries", "columns": [ "time", "id", "query" ], "points": [ [ 0, 1, "select foo(bar,95) from \"foo_bars\" group by time(5m) into response_times.percentiles.5m.95" ], [ 0, 2, "select percentile(value,95) from \"response_times\" group by time(5m) into response_times.percentiles.5m.95" ] ] } ]rg   r   zZselect foo(bar,95) from "foo_bars" group by time(5m) into response_times.percentiles.5m.95ziselect percentile(value,95) from "response_times" group by time(5m) into response_times.percentiles.5m.95N)r   r^   r_   r`   r   ri   Zget_list_continuous_queriesr   r   r   r   test_get_continuous_queries   s   

	"z.TestInfluxDBClient.test_get_continuous_queriesc                 C      dS )z1Test get list of cluster admins, not implemented.Nr   rB   r   r   r   test_get_list_cluster_adminsA  r   z/TestInfluxDBClient.test_get_list_cluster_adminsc                 C   sp   t  *}|t jd tdd}|jddd | t|j	j
ddd W d   dS 1 s1w   Y  dS )	z.Test add cluster admin for TestInfluxDBClient.z$http://localhost:8086/cluster_adminsrP   r[   paullaup)new_usernamenew_password)r;   rH   N)r^   r_   r`   r   r   Zadd_cluster_adminassertDictEqualr"   r#   rb   rc   rd   r   r   r   test_add_cluster_adminE  "   

"z)TestInfluxDBClient.test_add_cluster_adminc                 C   n   t  )}|t jd tdd}|jddd | t|j	j
ddi W d   dS 1 s0w   Y  dS )	z6Test update cluster admin pass for TestInfluxDBClient.)http://localhost:8086/cluster_admins/paulrP   r[   r   r   rG   r   rH   N)r^   r_   r`   r   r   Zupdate_cluster_admin_passwordr   r"   r#   rb   rc   rd   r   r   r   "test_update_cluster_admin_password[  s   

"z5TestInfluxDBClient.test_update_cluster_admin_passwordc                 C   sd   t  $}|jt jddd tdd}|jdd | |jj W d   dS 1 s+w   Y  dS )	z1Test delete cluster admin for TestInfluxDBClient.r   r   )r   rP   r[   r   rG   N)	r^   r_   r`   DELETEr   Zdelete_cluster_adminassertIsNonerb   rc   rd   r   r   r   test_delete_cluster_adminn  s   

"z,TestInfluxDBClient.test_delete_cluster_adminc                 C   r   )z/Test set database admin for TestInfluxDBClient.Nr   rB   r   r   r   test_set_database_admin|  r   z*TestInfluxDBClient.test_set_database_adminc                 C   r   )z1Test unset database admin for TestInfluxDBClient.Nr   rB   r   r   r   test_unset_database_admin  r   z,TestInfluxDBClient.test_unset_database_adminc                 C   r   )	z1Test alter database admin for TestInfluxDBClient.&http://localhost:8086/db/db/users/paulrP   r[   r   F)rG   Zis_adminadminN)r^   r_   r`   r   r   Zalter_database_adminr   r"   r#   rb   rc   rd   r   r   r   test_alter_database_admin      

"z,TestInfluxDBClient.test_alter_database_adminc                 C   r   )z8Test get list of database admins for TestInfluxDBClient.rE   rF   rG   rH   rP   N)r   Zget_list_database_adminsrM   r   r   r   test_get_list_database_admins  r   z0TestInfluxDBClient.test_get_list_database_adminsc                 C       t ddddd}|dd dS )	z0Test add database admins for TestInfluxDBClient.rE   rF   rG   rH   rP   r   admin_secret_passwordN)r   Zadd_database_adminrM   r   r   r   test_add_database_admin     z*TestInfluxDBClient.test_add_database_adminc                 C   r   )	z7Test update database admin pass for TestInfluxDBClient.rE   rF   rG   rH   rP   r   r   N)r   Zupdate_database_admin_passwordrM   r   r   r   #test_update_database_admin_password  r   z6TestInfluxDBClient.test_update_database_admin_passwordc                 C   r   )z2Test delete database admin for TestInfluxDBClient.rE   rF   rG   rH   rP   r   N)r   Zdelete_database_adminrM   r   r   r   test_delete_database_admin  r   z-TestInfluxDBClient.test_delete_database_adminc                 C   sl   t ddddd}d}t }|jtjd|d | }W d	   n1 s&w   Y  | t|| d	S )
z/Test get database users for TestInfluxDBClient.rm   rF   rG   rH   rP   z[{"name":"paul","isAdmin":false,"writeTo":".*","readFrom":".*"},{"name":"bobby","isAdmin":false,"writeTo":".*","readFrom":".*"}]!http://localhost:8086/db/db/usersr   N)	r   r^   r_   r`   r   Zget_database_usersrK   r"   r#   )rC   rN   r   re   Zusersr   r   r   test_get_database_users  s   

z*TestInfluxDBClient.test_get_database_usersc              	   C   sv   t  -}|t jd tdd}|jdddd | t|j	j
ddddd	 W d
   d
S 1 s4w   Y  d
S )z.Test add database user for TestInfluxDBClient.r   rP   r[   r   r   ).*r   )r   r   permissionsr   )writeTorH   readFromr;   N)r^   r_   r`   r   r   add_database_userr   r"   r#   rb   rc   rd   r   r   r   test_add_database_user  s(   

"z)TestInfluxDBClient.test_add_database_userc                 C   sH   t  }| td |jdddd W d   dS 1 sw   Y  dS )z=Test add database user with bad perms for TestInfluxDBClient.z1'permissions' must be \(readFrom, writeTo\) tupler   )hellor  r  )r   r   r  N)r   r   r   r  rM   r   r   r   &test_add_database_user_bad_permissions  s   "z9TestInfluxDBClient.test_add_database_user_bad_permissionsc                 C   r   )	z5Test alter database user pass for TestInfluxDBClient.r   rP   r[   r   n3wp4ss!)rG   rH   rH   Nr^   r_   r`   r   r   Zalter_database_userr   r"   r#   rb   rc   rd   r   r   r   !test_alter_database_user_password  r   z4TestInfluxDBClient.test_alter_database_user_passwordc                 C   sp   t  *}|t jd tdd}|jddd | t|j	j
ddd	 W d
   d
S 1 s1w   Y  d
S )z6Test alter database user perms for TestInfluxDBClient.r   rP   r[   r   ^$r   )rG   r  r  r   )r  r  Nr	  rd   r   r   r   $test_alter_database_user_permissions  r   z7TestInfluxDBClient.test_alter_database_user_permissionsc                 C   st   t  ,}|t jd tdd}|jdddd | t|j	j
ddd	d
 W d   dS 1 s3w   Y  dS )z?Test alter database user pass and perms for TestInfluxDBClient.r   rP   r[   r   r  r  )rG   rH   r  r  r   )rH   r  r  Nr	  rd   r   r   r   1test_alter_database_user_password_and_permissions  s&   

"zDTestInfluxDBClient.test_alter_database_user_password_and_permissionsc                 C   sf   t dddd}t }|tjd |jddd | |jd W d   dS 1 s,w   Y  dS )	z6Test update database user pass for TestInfluxDBClient.r   r  rI   )rG   rH   rI   z,http://localhost:8086/db/database/users/rootZbyer   N)r   r^   r_   r`   r   Zupdate_database_user_passwordrK   rR   )rC   rN   re   r   r   r   /test_update_database_user_password_current_user,  s    
"zBTestInfluxDBClient.test_update_database_user_password_current_userc                 C   s`   t  "}|t jd tdd}|jdd | |jj W d   dS 1 s)w   Y  dS )z1Test delete database user for TestInfluxDBClient.r   rP   r[   r   r   N)	r^   r_   r`   r   r   Zdelete_database_userr   rb   rc   rd   r   r   r   test_delete_database_user@  s   

"z,TestInfluxDBClient.test_delete_database_userc                 C   s    t ddddd}|dg  dS )z.Test update permission for TestInfluxDBClient.rE   rF   rG   rH   rP   r   N)r   Zupdate_permissionrM   r   r   r   test_update_permissionM  r   z)TestInfluxDBClient.test_update_permissionzrequests.Session.requestc                 C   s4   G dd dt }| j|_tdd}|| j dS )z0Test that two connection errors will be handled.c                   @       e Zd ZdZdd Zdd ZdS )z9TestInfluxDBClient.test_request_retry.<locals>.CustomMockDefine CustomMock object.c                 S   s
   d| _ d S )Nr   irB   r   r   r   __init__Y  s   
zBTestInfluxDBClient.test_request_retry.<locals>.CustomMock.__init__c                 _   2   |  j d7  _ | j dk rtjjt }d|_|S )z$Test connection error in CustomMock.r3   ru   r   r  r   
exceptionsConnectionErrorr   r   rC   r%   r&   rr   r   r   connection_error\     
zJTestInfluxDBClient.test_request_retry.<locals>.CustomMock.connection_errorN__name__
__module____qualname____doc__r  r  r   r   r   r   
CustomMockV  s    r$  rP   r[   N)r,   r  r*   r   rh   r@   rC   Zmock_requestr$  rN   r   r   r   test_request_retryS  s   

z%TestInfluxDBClient.test_request_retryc                 C   sd   G dd dt }| j|_tdd}| tjj || j	 W d   dS 1 s+w   Y  dS )z6Test that three connection errors will not be handled.c                   @   r  )z@TestInfluxDBClient.test_request_retry_raises.<locals>.CustomMockr  c                 S   s
   d| _ dS )zInitialize the object.r   Nr  rB   r   r   r   r  t  s   
zITestInfluxDBClient.test_request_retry_raises.<locals>.CustomMock.__init__c                 _   r  )z)Test the connection error for CustomMock.r3   rw   r   r  r  r   r   r   r  x  r  zQTestInfluxDBClient.test_request_retry_raises.<locals>.CustomMock.connection_errorNr  r   r   r   r   r$  q  s    r$  rP   r[   N)
r,   r  r*   r   ZassertRaisesr   r  r  rh   r@   r%  r   r   r   test_request_retry_raisesn  s   

"z,TestInfluxDBClient.test_request_retry_raisesN)Gr   r!  r"  r#  rD   rO   rU   rX   r   r?   rY   rZ   rf   rj   rk   rq   rt   r   r   r   r   r   r   r   r   r   r   NotImplementedErrorr   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   r  r  r
  r  r  r  r  r  mockr   r&  r'  r   r   r   r   r/   N   s    









!
	






!





r/   )r   r   )r   r   r   )r#  r"   r   sysZunittestr   r=   r)  r   Zrequests.exceptionsr^   Z
nose.toolsr   r   Zinfluxdb.influxdb08r   Zinfluxdb.influxdb08.clientr   versionr   r   r   r.   ZTestCaser/   r   r   r   r   <module>   s,   



%