Skip to content

Commit 2359f0a

Browse files
authored
Merge pull request #156 from tobiasschuerg/fix/buff_size_rounding
fix: Correctly rounding writeBufferSize, when bufferSize/batchSize >=…
2 parents f95d0fa + bcf7b07 commit 2359f0a

File tree

6 files changed

+399
-7
lines changed

6 files changed

+399
-7
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Changelog
2-
## 3.8.1 [in progress]
2+
## [in progress]
33
### Fixes
44
- [#150](https://github.com/tobiasschuerg/InfluxDB-Client-for-Arduino/pull/150) - `HTTPOptions::httpReadTimeout` is also set as the connect timeout for HTTP connection on ESP32. It doesn't work for HTTPS connection yet.
5+
- [#156](https://github.com/tobiasschuerg/InfluxDB-Client-for-Arduino/pull/156) - Correctly rounding _writeBufferSize_, when _bufferSize/batchSize >= 256_.
56

67
## 3.8.0 [2021-04-01]
78
### Features

src/InfluxDbClient.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,15 +294,20 @@ void InfluxDBClient::setWriteOptions(const WriteOptions & writeOptions) {
294294
_writeOptions._writePrecision = writeOptions._writePrecision;
295295
setUrls();
296296
}
297-
if(writeOptions._batchSize > 0) {
297+
bool writeBufferSizeChanges = false;
298+
if(writeOptions._batchSize > 0 && _writeOptions._batchSize != writeOptions._batchSize) {
298299
_writeOptions._batchSize = writeOptions._batchSize;
300+
writeBufferSizeChanges = true;
299301
}
300-
if(_writeOptions._bufferSize > 0 && writeOptions._bufferSize > 0 && _writeOptions._bufferSize != writeOptions._bufferSize) {
302+
if(writeOptions._bufferSize > 0 && _writeOptions._bufferSize != writeOptions._bufferSize) {
301303
_writeOptions._bufferSize = writeOptions._bufferSize;
302304
if(_writeOptions._bufferSize < 2*_writeOptions._batchSize) {
303305
_writeOptions._bufferSize = 2*_writeOptions._batchSize;
304306
INFLUXDB_CLIENT_DEBUG("[D] Changing buffer size to %d\n", _writeOptions._bufferSize);
305307
}
308+
writeBufferSizeChanges = true;
309+
}
310+
if(writeBufferSizeChanges) {
306311
resetBuffer();
307312
}
308313
_writeOptions._flushInterval = writeOptions._flushInterval;
@@ -331,7 +336,10 @@ void InfluxDBClient::resetBuffer() {
331336
}
332337
delete [] _writeBuffer;
333338
}
334-
_writeBufferSize = _writeOptions._bufferSize/_writeOptions._batchSize;
339+
INFLUXDB_CLIENT_DEBUG("[D] Reset buffer: buffer Size: %d, batch size: %d\n", _writeOptions._bufferSize, _writeOptions._batchSize);
340+
uint16_t a = _writeOptions._bufferSize/_writeOptions._batchSize;
341+
//limit to max(byte)
342+
_writeBufferSize = a>=(1<<8)?(1<<8)-1:a;
335343
if(_writeBufferSize < 2) {
336344
_writeBufferSize = 2;
337345
}

test/Test.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,14 @@ void Test::testOptions() {
168168
TEST_ASSERT(!c._httpOptions._connectionReuse);
169169
TEST_ASSERT(c._httpOptions._httpReadTimeout == 20000);
170170

171+
defWO = WriteOptions().batchSize(100).bufferSize(7000);
172+
c.setWriteOptions(defWO);
173+
TEST_ASSERTM(c._writeBufferSize == 70, String(c._writeBufferSize));
174+
175+
defWO = WriteOptions().batchSize(10).bufferSize(7000);
176+
c.setWriteOptions(defWO);
177+
TEST_ASSERTM(c._writeBufferSize == 255, String(c._writeBufferSize));
178+
171179
TEST_END();
172180
}
173181

@@ -531,7 +539,8 @@ void Test::testUserAgent() {
531539
TEST_ASSERT(client.validateConnection());
532540
String url = String(Test::apiUrl) + "/test/user-agent";
533541
HTTPClient http;
534-
TEST_ASSERT(http.begin(url));
542+
WiFiClient wifiClient;
543+
TEST_ASSERT(http.begin(wifiClient, url));
535544
TEST_ASSERT(http.GET() == 200);
536545
String agent = "influxdb-client-arduino/" INFLUXDB_CLIENT_VERSION " (" INFLUXDB_CLIENT_PLATFORM " " INFLUXDB_CLIENT_PLATFORM_VERSION ")";
537546
String data = http.getString();

test/TestSupport.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ void printFreeHeap() {
4444
int httpPOST(String url, String mess) {
4545
httpClient.setReuse(false);
4646
int code = 0;
47-
if(httpClient.begin(url)) {
47+
WiFiClient client;
48+
if(httpClient.begin(client, url)) {
4849
code = httpClient.POST(mess);
4950
httpClient.end();
5051
}
@@ -54,7 +55,8 @@ int httpPOST(String url, String mess) {
5455
int httpGET(String url) {
5556
httpClient.setReuse(false);
5657
int code = 0;
57-
if(httpClient.begin(url)) {
58+
WiFiClient client;
59+
if(httpClient.begin(client, url)) {
5860
code = httpClient.GET();
5961
if(code != 204) {
6062
//Serial.print("[TD] ");

0 commit comments

Comments
 (0)