@@ -75,6 +75,7 @@ private:
7575 static void testServerTempDownBatchsize5 ();
7676 static void testRetriesOnServerOverload ();
7777 static void testRetryInterval ();
78+ static void testDefaultTags ();
7879};
7980
8081void loop () {
@@ -88,8 +89,8 @@ void loop() {
8889void Test::run () {
8990 // Basic tests
9091 testOptions ();
91- testEcaping ();
9292 testPoint ();
93+ testEcaping ();
9394 testFluxTypes ();
9495 testFluxParserEmpty ();
9596 testFluxParserSingleTable ();
@@ -106,6 +107,7 @@ void Test::run() {
106107 testV1 ();
107108 testUserAgent ();
108109 testHTTPReadTimeout ();
110+ testDefaultTags ();
109111 // Advanced tests
110112 testFailedWrites ();
111113 testTimestamp ();
@@ -127,15 +129,17 @@ void Test::testOptions() {
127129 TEST_ASSERT (defWO._retryInterval == 5 );
128130 TEST_ASSERT (defWO._maxRetryInterval == 300 );
129131 TEST_ASSERT (defWO._maxRetryAttempts == 3 );
132+ TEST_ASSERT (defWO._defaultTags .length () == 0 );
130133
131- defWO = WriteOptions ().writePrecision (WritePrecision::NS).batchSize (10 ).bufferSize (20 ).flushInterval (120 ).retryInterval (1 ).maxRetryInterval (20 ).maxRetryAttempts (5 );
134+ defWO = WriteOptions ().writePrecision (WritePrecision::NS).batchSize (10 ).bufferSize (20 ).flushInterval (120 ).retryInterval (1 ).maxRetryInterval (20 ).maxRetryAttempts (5 ). addDefaultTag ( " tag1 " , " val1 " ). addDefaultTag ( " tag2 " , " val2 " ) ;
132135 TEST_ASSERT (defWO._writePrecision == WritePrecision::NS);
133136 TEST_ASSERT (defWO._batchSize == 10 );
134137 TEST_ASSERT (defWO._bufferSize == 20 );
135138 TEST_ASSERT (defWO._flushInterval == 120 );
136139 TEST_ASSERT (defWO._retryInterval == 1 );
137140 TEST_ASSERT (defWO._maxRetryInterval == 20 );
138141 TEST_ASSERT (defWO._maxRetryAttempts == 5 );
142+ TEST_ASSERT (defWO._defaultTags == " tag1=val1,tag2=val2" );
139143
140144 HTTPOptions defHO;
141145 TEST_ASSERT (!defHO._connectionReuse );
@@ -200,9 +204,16 @@ void Test::testEcaping() {
200204 p.addField (" fie ld" , " val ue" );
201205 p.addField (" fie,ld" , " val,ue" );
202206 p.addField (" fie\" ld" , " val\" ue" );
207+
203208
204209 String line = p.toLineProtocol ();
205- TEST_ASSERTM (line == " t\\\r e=s\\\n t\\\t _t\\ e\" s\\ ,t,ta\\ =g=val\\ =ue,ta\\\t g=val\\\t ue,ta\\\r g=val\\\r ue,ta\\\n g=val\\\n ue,ta\\ g=valu\\ e,ta\\ ,g=valu\\ ,e,tag=value,ta\" g=val\" ue fie\\ =ld=\" val=ue\" ,fie\\\t ld=\" val\t ue\" ,fie\\\r ld=\" val\r ue\" ,fie\\\n ld=\" val\n ue\" ,fie\\ ld=\" val ue\" ,fie\\ ,ld=\" val,ue\" ,fie\" ld=\" val\\\" ue\" " , line);//
210+ TEST_ASSERTM (line == " t\\\r e=s\\\n t\\\t _t\\ e\" s\\ ,t,ta\\ =g=val\\ =ue,ta\\\t g=val\\\t ue,ta\\\r g=val\\\r ue,ta\\\n g=val\\\n ue,ta\\ g=valu\\ e,ta\\ ,g=valu\\ ,e,tag=value,ta\" g=val\" ue fie\\ =ld=\" val=ue\" ,fie\\\t ld=\" val\t ue\" ,fie\\\r ld=\" val\r ue\" ,fie\\\n ld=\" val\n ue\" ,fie\\ ld=\" val ue\" ,fie\\ ,ld=\" val,ue\" ,fie\" ld=\" val\\\" ue\" " , line);
211+
212+ WriteOptions w;
213+ w.addDefaultTag (" dta=g" ," dval=ue" );
214+ w.addDefaultTag (" dtag" ," dvalue" );
215+ line = p.toLineProtocol (w._defaultTags );
216+ TEST_ASSERTM (line == " t\\\r e=s\\\n t\\\t _t\\ e\" s\\ ,t,ta\\ =g=val\\ =ue,ta\\\t g=val\\\t ue,ta\\\r g=val\\\r ue,ta\\\n g=val\\\n ue,ta\\ g=valu\\ e,ta\\ ,g=valu\\ ,e,tag=value,ta\" g=val\" ue,dta\\ =g=dval\\ =ue,dtag=dvalue fie\\ =ld=\" val=ue\" ,fie\\\t ld=\" val\t ue\" ,fie\\\r ld=\" val\r ue\" ,fie\\\n ld=\" val\n ue\" ,fie\\ ld=\" val ue\" ,fie\\ ,ld=\" val,ue\" ,fie\" ld=\" val\\\" ue\" " , line);
206217 TEST_END ();
207218}
208219
@@ -233,6 +244,17 @@ void Test::testPoint() {
233244 String testLine = " test,tag1=tagvalue fieldInt=-23i,fieldBool=true,fieldFloat1=1.12,fieldFloat2=1.12345,fieldDouble1=1.12,fieldDouble2=1.12345,fieldChar=\" A\" ,fieldUChar=1i,fieldUInt=23i,fieldLong=123456i,fieldULong=123456i,fieldString=\" text test\" " ;
234245 TEST_ASSERTM (line == testLine, line);
235246
247+ String defaultTags=" dtag=val" ;
248+ line = p.toLineProtocol (defaultTags);
249+ testLine = " test,tag1=tagvalue,dtag=val fieldInt=-23i,fieldBool=true,fieldFloat1=1.12,fieldFloat2=1.12345,fieldDouble1=1.12,fieldDouble2=1.12345,fieldChar=\" A\" ,fieldUChar=1i,fieldUInt=23i,fieldLong=123456i,fieldULong=123456i,fieldString=\" text test\" " ;
250+ TEST_ASSERTM (line == testLine, line);
251+
252+ p.clearTags ();
253+ line = p.toLineProtocol (defaultTags);
254+ testLine = " test,dtag=val fieldInt=-23i,fieldBool=true,fieldFloat1=1.12,fieldFloat2=1.12345,fieldDouble1=1.12,fieldDouble2=1.12345,fieldChar=\" A\" ,fieldUChar=1i,fieldUInt=23i,fieldLong=123456i,fieldULong=123456i,fieldString=\" text test\" " ;
255+ TEST_ASSERTM (line == testLine, line);
256+
257+
236258 p.clearFields ();
237259 p.clearTags ();
238260
@@ -355,6 +377,7 @@ void Test::testBasicFunction() {
355377 deleteAll (INFLUXDB_CLIENT_TESTING_URL);
356378}
357379
380+
358381void Test::testInit () {
359382 TEST_INIT (" testInit" );
360383 {
@@ -1696,6 +1719,66 @@ void Test::testRetryInterval() {
16961719 deleteAll (INFLUXDB_CLIENT_TESTING_URL);
16971720}
16981721
1722+ void Test::testDefaultTags () {
1723+ TEST_INIT (" testDefaultTags" );
1724+
1725+ InfluxDBClient client (INFLUXDB_CLIENT_TESTING_URL, INFLUXDB_CLIENT_TESTING_ORG, INFLUXDB_CLIENT_TESTING_BUC, INFLUXDB_CLIENT_TESTING_TOK);
1726+
1727+ TEST_ASSERT (waitServer (client, true ));
1728+ for (int i = 0 ; i < 5 ; i++) {
1729+ Point *p = createPoint (" test1" );
1730+ p->addField (" index" , i);
1731+ TEST_ASSERT (client.writePoint (*p));
1732+ delete p;
1733+ }
1734+ String query = " select" ;
1735+ FluxQueryResult q = client.query (query);
1736+ TEST_ASSERTM (q.getError ()==" " , q.getError ());
1737+ TEST_ASSERT (q.next ());
1738+ TEST_ASSERTM (q.getColumnsName ().size ()==10 ,String (q.getColumnsName ().size ()));
1739+ TEST_ASSERT (q.next ());
1740+ TEST_ASSERT (q.next ());
1741+ TEST_ASSERT (q.next ());
1742+ TEST_ASSERTM (q.getColumnsName ().size ()==10 ,String (q.getColumnsName ().size ())) ;
1743+ TEST_ASSERT (q.next ());
1744+ TEST_ASSERT (!q.next ());
1745+ q.close ();
1746+ deleteAll (INFLUXDB_CLIENT_TESTING_URL);
1747+
1748+ client.setWriteOptions (WriteOptions ().addDefaultTag (" dtag1" ," dval1" ).addDefaultTag (" dtag2" ," dval2" ));
1749+
1750+ for (int i = 0 ; i < 5 ; i++) {
1751+ Point *p = createPoint (" test1" );
1752+ p->addField (" index" , i);
1753+ TEST_ASSERT (client.writePoint (*p));
1754+ delete p;
1755+ }
1756+ q = client.query (query);
1757+ TEST_ASSERTM (q.getError ()==" " , q.getError ());
1758+ TEST_ASSERT (q.next ());
1759+ TEST_ASSERTM (q.getColumnsName ().size ()==12 ,String (q.getColumnsName ().size ()));
1760+ TEST_ASSERTM (q.getValueByName (" dtag1" ).getString () == " dval1" , q.getValueByName (" dtag1" ).getString ());
1761+ TEST_ASSERTM (q.getValueByName (" dtag2" ).getString () == " dval2" , q.getValueByName (" dtag2" ).getString ());
1762+ TEST_ASSERT (q.next ());
1763+ TEST_ASSERTM (q.getValueByName (" dtag1" ).getString () == " dval1" ,q.getValueByName (" dtag1" ).getString ());
1764+ TEST_ASSERTM (q.getValueByName (" dtag2" ).getString () == " dval2" , q.getValueByName (" dtag2" ).getString ());
1765+ TEST_ASSERT (q.next ());
1766+ TEST_ASSERTM (q.getValueByName (" dtag1" ).getString () == " dval1" ,q.getValueByName (" dtag1" ).getString ());
1767+ TEST_ASSERTM (q.getValueByName (" dtag2" ).getString () == " dval2" , q.getValueByName (" dtag2" ).getString ());
1768+ TEST_ASSERT (q.next ());
1769+ TEST_ASSERTM (q.getColumnsName ().size ()==12 ,String (q.getColumnsName ().size ())) ;
1770+ TEST_ASSERTM (q.getValueByName (" dtag1" ).getString () == " dval1" ,q.getValueByName (" dtag1" ).getString ());
1771+ TEST_ASSERTM (q.getValueByName (" dtag2" ).getString () == " dval2" , q.getValueByName (" dtag2" ).getString ());
1772+ TEST_ASSERT (q.next ());
1773+ TEST_ASSERTM (q.getValueByName (" dtag1" ).getString () == " dval1" ,q.getValueByName (" dtag1" ).getString ());
1774+ TEST_ASSERTM (q.getValueByName (" dtag2" ).getString () == " dval2" , q.getValueByName (" dtag2" ).getString ());
1775+ TEST_ASSERT (!q.next ());
1776+ q.close ();
1777+
1778+ TEST_END ();
1779+ deleteAll (INFLUXDB_CLIENT_TESTING_URL);
1780+ }
1781+
16991782Point *createPoint (String measurement) {
17001783 Point *point = new Point (measurement);
17011784 point->addTag (" SSID" , WiFi.SSID ());
0 commit comments