Skip to content

Commit 008d030

Browse files
feat: add more test cases for queryRows function
1 parent e9482df commit 008d030

File tree

1 file changed

+91
-30
lines changed

1 file changed

+91
-30
lines changed

src/test/java/com/influxdb/v3/client/InfluxDBClientTest.java

Lines changed: 91 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,16 @@
2121
*/
2222
package com.influxdb.v3.client;
2323

24+
import java.math.BigInteger;
25+
import java.time.Instant;
26+
import java.util.ArrayList;
27+
import java.util.List;
2428
import java.util.Map;
2529
import java.util.Properties;
30+
import java.util.UUID;
31+
import java.util.stream.Stream;
2632

33+
import org.apache.arrow.flight.FlightRuntimeException;
2734
import org.assertj.core.api.Assertions;
2835
import org.junit.jupiter.api.Test;
2936

@@ -200,45 +207,99 @@ public void testQueryRows() throws Exception {
200207
System.getenv("TESTING_INFLUXDB_DATABASE"),
201208
null)) {
202209
String uuid = UUID.randomUUID().toString();
203-
long timestamp = Instant.now().getEpochSecond();
204-
String record = String.format(
205-
"host12,tag=tagValue "
206-
+ "name=\"intel\","
207-
+ "mem_total=2048,"
208-
+ "disk_free=100i,"
209-
+ "temperature=100.86,"
210-
+ "isActive=true,"
211-
+ "testId=\"%s\" %d",
212-
uuid,
213-
timestamp
214-
);
215-
client.writeRecord(record, new WriteOptions(null, WritePrecision.S, null));
210+
String measurement = "host21";
211+
List<Map<String, Object>> testDatas = new ArrayList<>();
212+
for (int i = 0; i <= 9; i++) {
213+
long timestamp = System.currentTimeMillis();
214+
Map<String, Object> map = Map.of(
215+
"measurement", measurement,
216+
"tag", "tagValue",
217+
"name", "intel",
218+
"mem_total", 2048.0,
219+
"disk_free", 100L,
220+
"temperature", 100.86,
221+
"isActive", true,
222+
"time", timestamp,
223+
"testId", uuid
224+
);
225+
String record = String.format(
226+
"%s,tag=tagValue "
227+
+ "name=\"%s\","
228+
+ "mem_total=%f,"
229+
+ "disk_free=%di,"
230+
+ "temperature=%f,"
231+
+ "isActive=%b,"
232+
+ "testId=\"%s\" %d",
233+
measurement,
234+
map.get("name"),
235+
(Double) map.get("mem_total"),
236+
(Long) map.get("disk_free"),
237+
(Double) map.get("temperature"),
238+
map.get("isActive"),
239+
uuid,
240+
timestamp
241+
);
242+
client.writeRecord(record, new WriteOptions(null, WritePrecision.MS, null));
243+
testDatas.add(map);
244+
}
216245

217246
Map<String, Object> parameters = Map.of("testId", uuid);
218-
String sql = "Select * from host12 where \"testId\"=$testId";
247+
String sql = String.format("Select * from %s where \"testId\"=$testId order by time", measurement); // Result set much be ordered by time
219248
try (Stream<Map<String, Object>> stream = client.queryRows(sql, parameters)) {
220-
stream.findFirst()
221-
.ifPresent(map -> {
222-
Assertions.assertThat(map.get("tag").getClass()).isEqualTo(String.class);
223-
Assertions.assertThat(map.get("tag")).isEqualTo("tagValue");
249+
List<Map<String, Object>> results = stream.collect(Collectors.toList());
250+
for (int i = 0; i <= 9; i++) {
251+
Map<String, Object> row = results.get(i);
252+
Map<String, Object> testData = testDatas.get(i);
253+
Assertions.assertThat(row.get("tag").getClass()).isEqualTo(String.class);
254+
Assertions.assertThat(row.get("tag")).isEqualTo(testData.get("tag"));
224255

225-
Assertions.assertThat(map.get("name").getClass()).isEqualTo(String.class);
226-
Assertions.assertThat(map.get("name")).isEqualTo("intel");
256+
Assertions.assertThat(row.get("name").getClass()).isEqualTo(String.class);
257+
Assertions.assertThat(row.get("name")).isEqualTo(testData.get("name"));
227258

228-
Assertions.assertThat(map.get("mem_total").getClass()).isEqualTo(Double.class);
229-
Assertions.assertThat(map.get("mem_total")).isEqualTo(2048.0);
259+
Assertions.assertThat(row.get("mem_total").getClass()).isEqualTo(Double.class);
260+
Assertions.assertThat(row.get("mem_total")).isEqualTo(testData.get("mem_total"));
230261

231-
Assertions.assertThat(map.get("disk_free").getClass()).isEqualTo(Long.class);
232-
Assertions.assertThat(map.get("disk_free")).isEqualTo(100L);
262+
Assertions.assertThat(row.get("disk_free").getClass()).isEqualTo(Long.class);
263+
Assertions.assertThat(row.get("disk_free")).isEqualTo(testData.get("disk_free"));
233264

234-
Assertions.assertThat(map.get("isActive").getClass()).isEqualTo(Boolean.class);
235-
Assertions.assertThat(map.get("isActive")).isEqualTo(true);
265+
Assertions.assertThat(row.get("isActive").getClass()).isEqualTo(Boolean.class);
266+
Assertions.assertThat(row.get("isActive")).isEqualTo(testData.get("isActive"));
236267

237-
Assertions.assertThat(map.get("time").getClass()).isEqualTo(BigInteger.class);
238-
Assertions.assertThat(map.get("time"))
239-
.isEqualTo(BigInteger.valueOf(timestamp * 1_000_000_000));
240-
});
268+
Assertions.assertThat(row.get("time").getClass()).isEqualTo(BigInteger.class);
269+
Assertions.assertThat(row.get("time"))
270+
.isEqualTo(BigInteger.valueOf((Long) testData.get("time") * 1_000_000));
271+
}
241272
}
242273
}
243274
}
275+
276+
277+
@EnabledIfEnvironmentVariable(named = "TESTING_INFLUXDB_URL", matches = ".*")
278+
@EnabledIfEnvironmentVariable(named = "TESTING_INFLUXDB_TOKEN", matches = ".*")
279+
@EnabledIfEnvironmentVariable(named = "TESTING_INFLUXDB_DATABASE", matches = ".*")
280+
@Test
281+
public void testQueryRowsExceptionCases() throws Exception {
282+
try (InfluxDBClient client = InfluxDBClient.getInstance(
283+
System.getenv("TESTING_INFLUXDB_URL"),
284+
System.getenv("TESTING_INFLUXDB_TOKEN").toCharArray(),
285+
System.getenv("TESTING_INFLUXDB_DATABASE"),
286+
null)) {
287+
288+
// Empty result case
289+
Map<String, Object> parameters = Map.of("testId", "NotExist");
290+
String sql = "Select * from host21 where \"testId\"=$testId";
291+
try (Stream<Map<String, Object>> stream = client.queryRows(sql, parameters)) {
292+
Assertions.assertThat((int) stream.count()).isEqualTo(0);
293+
}
294+
295+
// Malformed query case
296+
Assertions.assertThatThrownBy(() -> {
297+
String query = "Select * from host21 whereabs testId=2";
298+
try (Stream<Map<String, Object>> stream = client.queryRows(query)) {
299+
stream.findFirst();
300+
}
301+
})
302+
.isInstanceOf(FlightRuntimeException.class);
303+
}
304+
}
244305
}

0 commit comments

Comments
 (0)