@@ -94,6 +94,7 @@ void Test::run() {
9494 testFailedWrites ();
9595 testTimestamp ();
9696 testRetryOnFailedConnection ();
97+ testRetryOnFailedConnectionWithFlush ();
9798 testBufferOverwriteBatchsize1 ();
9899 testBufferOverwriteBatchsize5 ();
99100 testServerTempDownBatchsize5 ();
@@ -503,6 +504,81 @@ void Test::testRetryOnFailedConnection() {
503504 deleteAll (Test::apiUrl);
504505}
505506
507+ void Test::testRetryOnFailedConnectionWithFlush () {
508+ TEST_INIT (" testRetryOnFailedConnectionWithFlush" );
509+
510+ InfluxDBClient clientOk (Test::apiUrl, Test::orgName, Test::bucketName, Test::token);
511+ clientOk.setWriteOptions (WriteOptions ().batchSize (2 ).bufferSize (2 ).retryInterval (4 ));
512+ waitServer (Test::managementUrl, true );
513+ TEST_ASSERT (clientOk.validateConnection ());
514+ Point *p = createPoint (" test1" );
515+ TEST_ASSERT (clientOk.writePoint (*p));
516+ delete p;
517+ TEST_ASSERT (clientOk.flushBuffer ());
518+ TEST_ASSERT (clientOk.isBufferEmpty ());
519+
520+ clientOk.setHTTPOptions (HTTPOptions ().httpReadTimeout (500 ));
521+
522+ Serial.println (" Stop server!" );
523+ waitServer (Test::managementUrl, false );
524+ // test dropping batch on max retry count
525+ TEST_ASSERT (!clientOk.validateConnection ());
526+ p = createPoint (" test1" );
527+ TEST_ASSERT (clientOk.writePoint (*p));
528+ delete p;
529+
530+ Serial.print (millis ()/1000 .0f ,3 );
531+ Serial.println (" Write 1" );
532+
533+ TEST_ASSERT (!clientOk.flushBuffer ());
534+ TEST_ASSERT (!clientOk.isBufferEmpty ());
535+ Serial.println (clientOk.getLastErrorMessage ());
536+
537+ Serial.print (millis ()/1000 .0f ,3 );
538+ Serial.println (" Write 2" );
539+
540+ TEST_ASSERT (!clientOk.flushBuffer ());
541+ TEST_ASSERT (!clientOk.isBufferEmpty ());
542+ Serial.println (clientOk.getLastErrorMessage ());
543+
544+ Serial.print (millis ()/1000 .0f ,3 );
545+ Serial.println (" Write 3" );
546+
547+ TEST_ASSERT (!clientOk.flushBuffer ());
548+ TEST_ASSERT (!clientOk.isBufferEmpty ());
549+ Serial.println (clientOk.getLastErrorMessage ());
550+
551+
552+ Serial.println (" Start server!" );
553+ waitServer (Test::managementUrl, true );
554+ clientOk.setHTTPOptions (HTTPOptions ().httpReadTimeout (5000 ));
555+ TEST_ASSERT (clientOk.validateConnection ());
556+
557+ Serial.print (millis ()/1000 .0f ,3 );
558+ Serial.println (" Write 4" );
559+ p = createPoint (" test1" );
560+ TEST_ASSERT (clientOk.writePoint (*p));
561+ delete p;
562+ TEST_ASSERT (clientOk.flushBuffer ());
563+ TEST_ASSERT (clientOk.isBufferEmpty ());
564+
565+ Serial.print (millis ()/1000 .0f ,3 );
566+ Serial.println (" Write 5" );
567+ p = createPoint (" test1" );
568+ TEST_ASSERT (clientOk.writePoint (*p));
569+ delete p;
570+ TEST_ASSERT (clientOk.flushBuffer ());
571+ TEST_ASSERT (clientOk.isBufferEmpty ());
572+
573+ String query = " select" ;
574+ FluxQueryResult q = clientOk.query (query);
575+ TEST_ASSERT (countLines (q) == 3 );
576+
577+
578+ TEST_END ();
579+ deleteAll (Test::apiUrl);
580+ }
581+
506582void Test::testBufferOverwriteBatchsize1 () {
507583 TEST_INIT (" testBufferOverwriteBatchsize1" );
508584 InfluxDBClient client (INFLUXDB_CLIENT_TESTING_BAD_URL, Test::orgName, Test::bucketName, Test::token);
0 commit comments