Browse Source

Fix for query timeseries order by

pull/1933/head
Valerii Sosliuk 7 years ago
committed by Andrew Shvayka
parent
commit
384ce7424c
  1. 2
      dao/src/main/java/org/thingsboard/server/dao/timeseries/BaseTimeseriesService.java
  2. 53
      dao/src/test/java/org/thingsboard/server/dao/service/timeseries/BaseTimeseriesServiceTest.java

2
dao/src/main/java/org/thingsboard/server/dao/timeseries/BaseTimeseriesService.java

@ -170,7 +170,7 @@ public class BaseTimeseriesService implements TimeseriesService {
} else { } else {
endTs = query.getEndTs(); endTs = query.getEndTs();
} }
return new BaseReadTsKvQuery(query.getKey(), startTs, endTs, query.getInterval(), query.getLimit(), query.getAggregation()); return new BaseReadTsKvQuery(query.getKey(), startTs, endTs, query.getInterval(), query.getLimit(), query.getAggregation(), query.getOrderBy());
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }

53
dao/src/test/java/org/thingsboard/server/dao/service/timeseries/BaseTimeseriesServiceTest.java

@ -31,6 +31,7 @@ import org.thingsboard.server.common.data.kv.BooleanDataEntry;
import org.thingsboard.server.common.data.kv.DoubleDataEntry; import org.thingsboard.server.common.data.kv.DoubleDataEntry;
import org.thingsboard.server.common.data.kv.KvEntry; import org.thingsboard.server.common.data.kv.KvEntry;
import org.thingsboard.server.common.data.kv.LongDataEntry; import org.thingsboard.server.common.data.kv.LongDataEntry;
import org.thingsboard.server.common.data.kv.ReadTsKvQuery;
import org.thingsboard.server.common.data.kv.StringDataEntry; import org.thingsboard.server.common.data.kv.StringDataEntry;
import org.thingsboard.server.common.data.kv.TsKvEntry; import org.thingsboard.server.common.data.kv.TsKvEntry;
import org.thingsboard.server.common.data.objects.TelemetryEntityView; import org.thingsboard.server.common.data.objects.TelemetryEntityView;
@ -148,6 +149,58 @@ public abstract class BaseTimeseriesServiceTest extends AbstractServiceTest {
Assert.assertEquals(toTsEntry(TS, stringKvEntry), entries.get(0)); Assert.assertEquals(toTsEntry(TS, stringKvEntry), entries.get(0));
} }
@Test
public void testFindByQueryAscOrder() throws Exception {
DeviceId deviceId = new DeviceId(UUIDs.timeBased());
saveEntries(deviceId, TS - 2);
saveEntries(deviceId, TS - 1);
saveEntries(deviceId, TS);
List<ReadTsKvQuery> queries = new ArrayList<>();
queries.add(new BaseReadTsKvQuery(STRING_KEY, TS - 3, TS, 0, 1000, Aggregation.NONE, "ASC"));
List<TsKvEntry> entries = tsService.findAll(tenantId, deviceId, queries).get();
Assert.assertEquals(3, entries.size());
Assert.assertEquals(toTsEntry(TS - 2, stringKvEntry), entries.get(0));
Assert.assertEquals(toTsEntry(TS - 1, stringKvEntry), entries.get(1));
Assert.assertEquals(toTsEntry(TS, stringKvEntry), entries.get(2));
EntityView entityView = saveAndCreateEntityView(deviceId, Arrays.asList(STRING_KEY));
entries = tsService.findAll(tenantId, entityView.getId(), queries).get();
Assert.assertEquals(3, entries.size());
Assert.assertEquals(toTsEntry(TS - 2, stringKvEntry), entries.get(0));
Assert.assertEquals(toTsEntry(TS - 1, stringKvEntry), entries.get(1));
Assert.assertEquals(toTsEntry(TS, stringKvEntry), entries.get(2));
}
@Test
public void testFindByQueryDescOrder() throws Exception {
DeviceId deviceId = new DeviceId(UUIDs.timeBased());
saveEntries(deviceId, TS - 2);
saveEntries(deviceId, TS - 1);
saveEntries(deviceId, TS);
List<ReadTsKvQuery> queries = new ArrayList<>();
queries.add(new BaseReadTsKvQuery(STRING_KEY, TS - 3, TS, 0, 1000, Aggregation.NONE, "DESC"));
List<TsKvEntry> entries = tsService.findAll(tenantId, deviceId, queries).get();
Assert.assertEquals(3, entries.size());
Assert.assertEquals(toTsEntry(TS, stringKvEntry), entries.get(0));
Assert.assertEquals(toTsEntry(TS - 1, stringKvEntry), entries.get(1));
Assert.assertEquals(toTsEntry(TS - 2, stringKvEntry), entries.get(2));
EntityView entityView = saveAndCreateEntityView(deviceId, Arrays.asList(STRING_KEY));
entries = tsService.findAll(tenantId, entityView.getId(), queries).get();
Assert.assertEquals(3, entries.size());
Assert.assertEquals(toTsEntry(TS, stringKvEntry), entries.get(0));
Assert.assertEquals(toTsEntry(TS - 1, stringKvEntry), entries.get(1));
Assert.assertEquals(toTsEntry(TS - 2, stringKvEntry), entries.get(2));
}
@Test @Test
public void testDeleteDeviceTsDataWithoutOverwritingLatest() throws Exception { public void testDeleteDeviceTsDataWithoutOverwritingLatest() throws Exception {
DeviceId deviceId = new DeviceId(UUIDs.timeBased()); DeviceId deviceId = new DeviceId(UUIDs.timeBased());

Loading…
Cancel
Save