Merge pull request #13070 from dashevchenko/diffTypeComparison
Different data type comparison
This commit is contained in:
commit
f1812a4722
@ -95,7 +95,6 @@ import org.thingsboard.server.dao.edge.EdgeService;
|
|||||||
import org.thingsboard.server.dao.entity.EntityService;
|
import org.thingsboard.server.dao.entity.EntityService;
|
||||||
import org.thingsboard.server.dao.entityview.EntityViewDao;
|
import org.thingsboard.server.dao.entityview.EntityViewDao;
|
||||||
import org.thingsboard.server.dao.entityview.EntityViewService;
|
import org.thingsboard.server.dao.entityview.EntityViewService;
|
||||||
import org.thingsboard.server.dao.model.sqlts.ts.TsKvEntity;
|
|
||||||
import org.thingsboard.server.dao.relation.RelationService;
|
import org.thingsboard.server.dao.relation.RelationService;
|
||||||
import org.thingsboard.server.dao.service.DaoSqlTest;
|
import org.thingsboard.server.dao.service.DaoSqlTest;
|
||||||
import org.thingsboard.server.dao.sql.relation.RelationRepository;
|
import org.thingsboard.server.dao.sql.relation.RelationRepository;
|
||||||
@ -1664,7 +1663,7 @@ public class EntityServiceTest extends AbstractControllerTest {
|
|||||||
List<ListenableFuture<TimeseriesSaveResult>> timeseriesFutures = new ArrayList<>();
|
List<ListenableFuture<TimeseriesSaveResult>> timeseriesFutures = new ArrayList<>();
|
||||||
for (int i = 0; i < devices.size(); i++) {
|
for (int i = 0; i < devices.size(); i++) {
|
||||||
Device device = devices.get(i);
|
Device device = devices.get(i);
|
||||||
timeseriesFutures.add(saveLongTimeseries(device.getId(), "temperature", temperatures.get(i)));
|
timeseriesFutures.add(saveTimeseries(device.getId(), "temperature", temperatures.get(i)));
|
||||||
}
|
}
|
||||||
Futures.allAsList(timeseriesFutures).get();
|
Futures.allAsList(timeseriesFutures).get();
|
||||||
|
|
||||||
@ -1711,6 +1710,13 @@ public class EntityServiceTest extends AbstractControllerTest {
|
|||||||
List<String> entitiesTelemetry = loadedEntities.stream().map(entityData -> entityData.getLatest().get(EntityKeyType.TIME_SERIES).get("temperature").getValue()).toList();
|
List<String> entitiesTelemetry = loadedEntities.stream().map(entityData -> entityData.getLatest().get(EntityKeyType.TIME_SERIES).get("temperature").getValue()).toList();
|
||||||
assertThat(entitiesTelemetry).containsExactlyElementsOf(expectedSortedList);
|
assertThat(entitiesTelemetry).containsExactlyElementsOf(expectedSortedList);
|
||||||
|
|
||||||
|
// update temperature to long value for one of device
|
||||||
|
long longTempValue = -100L;
|
||||||
|
saveTimeseries(devices.get(new Random().nextInt(66)).getId(), "temperature", longTempValue).get();
|
||||||
|
loadedEntities = loadAllData(querySortByTemp, deviceTemperatures.size());
|
||||||
|
entitiesTelemetry = loadedEntities.stream().map(entityData -> entityData.getLatest().get(EntityKeyType.TIME_SERIES).get("temperature").getValue()).toList();
|
||||||
|
assertThat(entitiesTelemetry.get(0)).isEqualTo(String.valueOf(longTempValue));
|
||||||
|
|
||||||
deviceService.deleteDevicesByTenantId(tenantId);
|
deviceService.deleteDevicesByTenantId(tenantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2252,15 +2258,18 @@ public class EntityServiceTest extends AbstractControllerTest {
|
|||||||
return attributesService.save(tenantId, entityId, scope, Collections.singletonList(attr));
|
return attributesService.save(tenantId, entityId, scope, Collections.singletonList(attr));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ListenableFuture<TimeseriesSaveResult> saveLongTimeseries(EntityId entityId, String key, Double value) {
|
private ListenableFuture<TimeseriesSaveResult> saveTimeseries(EntityId entityId, String key, Double value) {
|
||||||
TsKvEntity tsKv = new TsKvEntity();
|
|
||||||
tsKv.setStrKey(key);
|
|
||||||
tsKv.setDoubleValue(value);
|
|
||||||
KvEntry telemetryValue = new DoubleDataEntry(key, value);
|
KvEntry telemetryValue = new DoubleDataEntry(key, value);
|
||||||
BasicTsKvEntry timeseries = new BasicTsKvEntry(42L, telemetryValue);
|
BasicTsKvEntry timeseries = new BasicTsKvEntry(42L, telemetryValue);
|
||||||
return timeseriesService.save(tenantId, entityId, timeseries);
|
return timeseriesService.save(tenantId, entityId, timeseries);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ListenableFuture<TimeseriesSaveResult> saveTimeseries(EntityId entityId, String key, Long value) {
|
||||||
|
KvEntry telemetryValue = new LongDataEntry(key, value);
|
||||||
|
BasicTsKvEntry timeseries = new BasicTsKvEntry(42L, telemetryValue);
|
||||||
|
return timeseriesService.save(tenantId, entityId, timeseries);
|
||||||
|
}
|
||||||
|
|
||||||
protected void createMultiRootHierarchy(List<Asset> buildings, List<Asset> apartments,
|
protected void createMultiRootHierarchy(List<Asset> buildings, List<Asset> apartments,
|
||||||
Map<String, Map<UUID, String>> entityNameByTypeMap,
|
Map<String, Map<UUID, String>> entityNameByTypeMap,
|
||||||
Map<UUID, UUID> childParentRelationMap) throws InterruptedException {
|
Map<UUID, UUID> childParentRelationMap) throws InterruptedException {
|
||||||
|
|||||||
@ -46,6 +46,10 @@ public class BoolDataPoint extends AbstractDataPoint {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(DataPoint dataPoint) {
|
public int compareTo(DataPoint dataPoint) {
|
||||||
return Boolean.compare(value, dataPoint.getBool());
|
if (dataPoint.getType() == DataType.BOOLEAN) {
|
||||||
|
return Boolean.compare(value, dataPoint.getBool());
|
||||||
|
} else {
|
||||||
|
return super.compareTo(dataPoint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,6 +46,10 @@ public class DoubleDataPoint extends AbstractDataPoint {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(DataPoint dataPoint) {
|
public int compareTo(DataPoint dataPoint) {
|
||||||
return Double.compare(value, dataPoint.getDouble());
|
if (dataPoint.getType() == DataType.DOUBLE || dataPoint.getType() == DataType.LONG) {
|
||||||
|
return Double.compare(value, dataPoint.getDouble());
|
||||||
|
} else {
|
||||||
|
return super.compareTo(dataPoint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,6 +51,12 @@ public class LongDataPoint extends AbstractDataPoint {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(DataPoint dataPoint) {
|
public int compareTo(DataPoint dataPoint) {
|
||||||
return Long.compare(value, dataPoint.getLong());
|
if (dataPoint.getType() == DataType.DOUBLE) {
|
||||||
|
return Double.compare(getDouble(), dataPoint.getDouble());
|
||||||
|
} else if (dataPoint.getType() == DataType.LONG) {
|
||||||
|
return Long.compare(value, dataPoint.getLong());
|
||||||
|
} else {
|
||||||
|
return super.compareTo(dataPoint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user