specify additional tags for CSV upload

You can now specify additional tags to be added to all entries.
This makes it possible to remove columns that would be identical
for all entries.
This commit is contained in:
2019-12-14 07:59:22 +01:00
parent 5d8df6888d
commit 4e554bfa85
5 changed files with 69 additions and 17 deletions

View File

@@ -12,7 +12,6 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.lucares.collections.LongList;
import org.lucares.pdb.api.DateTimeRange;
import org.lucares.pdb.api.GroupResult;
import org.lucares.pdb.api.Query;
import org.lucares.performance.db.PerformanceDb;
import org.springframework.beans.factory.annotation.Autowired;
@@ -48,6 +47,8 @@ public class PdbControllerTest {
@Test
public void testUploadCsv() throws InterruptedException {
final String additionalColumn = "additionalColumn";
final String additionalValue = "additionalValue";
final String ignoredColumn = "ignoredColumn";
final String timeColumn = "time";
final OffsetDateTime dateA = OffsetDateTime.now();
@@ -58,23 +59,33 @@ public class PdbControllerTest {
+ dateB.format(DateTimeFormatter.ISO_ZONED_DATE_TIME) + ",2,tagValue,ignoredValue\n";
final CsvReaderSettings settings = CsvReaderSettings.create(timeColumn, ',', ignoredColumn);
settings.putAdditionalTag(additionalColumn, additionalValue);
uploadCsv(settings, csv);
{
final GroupResult groupResult = performanceDb.get(new Query("tag=tagValue", DateTimeRange.ofDay(dateA)))
.singleGroup();
final LongList result = groupResult.flatMap();
System.out.println(PdbTestUtil.timeValueLongListToString(result));
Assertions.assertEquals(4, result.size());
final LongList resultTagValue = performanceDb.get(new Query("tag=tagValue", DateTimeRange.ofDay(dateA)))
.singleGroup().flatMap();
final LongList resultAdditionalValue = performanceDb
.get(new Query(additionalColumn + "=" + additionalValue, DateTimeRange.ofDay(dateA))).singleGroup()
.flatMap();
System.out.println(PdbTestUtil.timeValueLongListToString(resultTagValue));
Assertions.assertEquals(dateA.toInstant().toEpochMilli(), result.get(0));
Assertions.assertEquals(1, result.get(1));
Assertions.assertEquals(resultTagValue, resultAdditionalValue,
"results from queries tag=value should be equal to results from query for additionalColumn=additionalValue");
Assertions.assertEquals(dateB.toInstant().truncatedTo(ChronoUnit.MILLIS).toEpochMilli(), result.get(2));
Assertions.assertEquals(2, result.get(3));
Assertions.assertEquals(4, resultTagValue.size());
Assertions.assertEquals(dateA.toInstant().toEpochMilli(), resultTagValue.get(0));
Assertions.assertEquals(1, resultTagValue.get(1));
Assertions.assertEquals(dateB.toInstant().truncatedTo(ChronoUnit.MILLIS).toEpochMilli(),
resultTagValue.get(2));
Assertions.assertEquals(2, resultTagValue.get(3));
}
{
final List<String> fields = performanceDb.getFields(DateTimeRange.max());
Assertions.assertTrue(!fields.contains(ignoredColumn), "ignoredColumn not in fields. fields: " + fields);
Assertions.assertTrue(fields.contains(additionalColumn),
additionalColumn + " expected in fields. Fields were: " + fields);
}
}