Skip to content

Commit 47d4477

Browse files
authored
Merge pull request #47 from bonitoo-io/fix/precision_param
fix: Fixing microsecond precision constant for v1 (#49)
2 parents 5d0d49c + b363c06 commit 47d4477

File tree

4 files changed

+39
-5
lines changed

4 files changed

+39
-5
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
# Changelog
2+
## Version 3.x.x
3+
- [FIX] Compilation error on fields order (#43)
4+
- [FIX] Invalid precision constant for microseconds (#49)
5+
6+
## Version 3.1.1
7+
- [Updated] CA Certificate for SSL (#38)
28

39
## Version 3.1.0
4-
- [NEW] user-agent header added
10+
- [NEW] Added User-agent header
511
- [FIX] status code check when pinging an InfluxDB version 1.x instance
612

713
## Version 3.0.0

src/InfluxDbClient.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ static String escapeKey(String key);
5757
static String escapeValue(const char *value);
5858
static String escapeJSONString(String &value);
5959

60-
static String precisionToString(WritePrecision precision) {
60+
static String precisionToString(WritePrecision precision, uint8_t version = 2) {
6161
switch(precision) {
6262
case WritePrecision::US:
63-
return "us";
63+
return version==1?"u":"us";
6464
case WritePrecision::MS:
6565
return "ms";
6666
case WritePrecision::NS:
@@ -266,7 +266,7 @@ void InfluxDBClient::setUrls() {
266266
}
267267
}
268268
if(_writePrecision != WritePrecision::NoTime) {
269-
_writeUrl += String("&precision=") + precisionToString(_writePrecision);
269+
_writeUrl += String("&precision=") + precisionToString(_writePrecision, _dbVersion);
270270
}
271271

272272
}

test/server/server.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,26 +231,36 @@ function handleAuthentication(req, res) {
231231
}
232232
}
233233

234+
const AllowedPrecisions = ['ns','us','ms','s'];
234235
function checkWriteParams(req, res) {
235236
var org = req.query['org'];
236237
var bucket = req.query['bucket'];
238+
var precision = req.query['precision'];
237239
if(org != 'my-org') {
238240
res.status(404).send(`{"code":"not found","message":"organization name \"${org}\" not found"}`);
239241
return false;
240242
} else if(bucket != 'my-bucket') {
241243
res.status(404).send(`{"code":"not found","message":"bucket \"${bucket}\" not found"}`);
242244
return false;
245+
} else if(typeof precision !== 'undefined' && AllowedPrecisions.indexOf(precision)==-1) {
246+
res.status(400).send(`{"code":"bad request ","message":"precision \"${precision}\" is not valid"}`);
247+
return false;
243248
} else {
244249
return true;
245250
}
246251
}
247252

253+
const AllowedPrecisionsV1 = ['ns','u','ms','s'];
248254
function checkWriteParamsV1(req, res) {
249255
var db = req.query['db'];
256+
var precision = req.query['precision'];
250257
if(db != 'my-db') {
251258
res.status(404).send(`{"code":"not found","message":"database \"${db}\" not found"}`);
252259
return false;
253-
} else {
260+
} else if(typeof precision !== 'undefined' && AllowedPrecisionsV1.indexOf(precision)==-1) {
261+
res.status(400).send(`{"code":"bad request ","message":"precision \"${precision}\" is not valid"}`);
262+
return false;
263+
}else {
254264
return true;
255265
}
256266
}

test/test.ino

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,15 @@ void testBasicFunction() {
176176
String q = queryFlux(client.getServerUrl(),INFLUXDB_CLIENT_TESTING_TOK, INFLUXDB_CLIENT_TESTING_ORG, query);
177177
TEST_ASSERT(countLines(q) == 6); //5 points+header
178178

179+
// test precision
180+
for (int i = (int)WritePrecision::NoTime; i <= (int)WritePrecision::NS; i++) {
181+
client.setWriteOptions((WritePrecision)i, 1);
182+
Point *p = createPoint("test1");
183+
p->addField("index", i);
184+
TEST_ASSERTM(client.writePoint(*p), String("i=") + i);
185+
delete p;
186+
}
187+
179188
TEST_END();
180189
deleteAll(INFLUXDB_CLIENT_TESTING_URL);
181190
}
@@ -768,6 +777,15 @@ void testV1() {
768777
q = queryFlux(client.getServerUrl(),INFLUXDB_CLIENT_TESTING_TOK, INFLUXDB_CLIENT_TESTING_ORG, query);
769778
lines = getLines(q, count);
770779
TEST_ASSERT(count == 16);
780+
781+
// test precision
782+
for (int i = (int)WritePrecision::NoTime; i <= (int)WritePrecision::NS; i++) {
783+
client.setWriteOptions((WritePrecision)i, 1);
784+
Point *p = createPoint("test1");
785+
p->addField("index", i);
786+
TEST_ASSERTM(client.writePoint(*p), String("i=") + i);
787+
delete p;
788+
}
771789
TEST_END();
772790
deleteAll(INFLUXDB_CLIENT_TESTING_URL);
773791
}

0 commit comments

Comments
 (0)