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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user