diff --git a/application/pom.xml b/application/pom.xml
index 303f206601..83a9eefdc3 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -289,6 +289,11 @@
junit
test
+
+ org.awaitility
+ awaitility
+ test
+
org.mockito
mockito-core
diff --git a/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java b/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java
index aad11006be..0da275adeb 100644
--- a/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java
+++ b/application/src/test/java/org/thingsboard/server/edge/BaseEdgeTest.java
@@ -27,6 +27,8 @@ import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.MessageLite;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;
+import org.awaitility.Awaitility;
+import org.hamcrest.Matchers;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -650,7 +652,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
Assert.assertEquals(relationUpdateMsg.getFromIdMSB(), relation.getFrom().getId().getMostSignificantBits());
Assert.assertEquals(relationUpdateMsg.getToIdLSB(), relation.getTo().getId().getLeastSignificantBits());
Assert.assertEquals(relationUpdateMsg.getToEntityType(), relation.getTo().getEntityType().name());
- Assert.assertEquals(relationUpdateMsg.getTypeGroup(), relation.getTypeGroup().name());
+ Assert.assertEquals(relationUpdateMsg.getTypeGroup().getValue(), relation.getTypeGroup().name());
// 2
edgeImitator.expectMessageAmount(1);
@@ -674,7 +676,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
Assert.assertEquals(relationUpdateMsg.getFromIdMSB(), relation.getFrom().getId().getMostSignificantBits());
Assert.assertEquals(relationUpdateMsg.getToIdLSB(), relation.getTo().getId().getLeastSignificantBits());
Assert.assertEquals(relationUpdateMsg.getToEntityType(), relation.getTo().getEntityType().name());
- Assert.assertEquals(relationUpdateMsg.getTypeGroup(), relation.getTypeGroup().name());
+ Assert.assertEquals(relationUpdateMsg.getTypeGroup().getValue(), relation.getTypeGroup().name());
log.info("Relations tested successfully");
}
@@ -902,8 +904,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, widgetTypeUpdateMsg.getMsgType());
Assert.assertEquals(widgetTypeUpdateMsg.getIdMSB(), savedWidgetType.getUuidId().getMostSignificantBits());
Assert.assertEquals(widgetTypeUpdateMsg.getIdLSB(), savedWidgetType.getUuidId().getLeastSignificantBits());
- Assert.assertEquals(widgetTypeUpdateMsg.getAlias(), savedWidgetType.getAlias());
- Assert.assertEquals(widgetTypeUpdateMsg.getName(), savedWidgetType.getName());
+ Assert.assertEquals(widgetTypeUpdateMsg.getAlias().getValue(), savedWidgetType.getAlias());
+ Assert.assertEquals(widgetTypeUpdateMsg.getName().getValue(), savedWidgetType.getName());
Assert.assertEquals(JacksonUtil.toJsonNode(widgetTypeUpdateMsg.getDescriptorJson().getValue()), savedWidgetType.getDescriptor());
// 3
@@ -1204,7 +1206,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
DeviceUpdateMsg latestDeviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
Assert.assertNotEquals(deviceOnCloudName, latestDeviceUpdateMsg.getName());
- Assert.assertEquals(deviceOnCloudName, latestDeviceUpdateMsg.getConflictName());
+ Assert.assertEquals(deviceOnCloudName, latestDeviceUpdateMsg.getConflictName().getValue());
UUID newDeviceId = new UUID(latestDeviceUpdateMsg.getIdMSB(), latestDeviceUpdateMsg.getIdLSB());
@@ -1271,7 +1273,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
EntityId toEntityId = EntityIdFactory.getByTypeAndUuid(relationUpdateMsg.getToEntityType(), toUUID);
Assert.assertEquals(relation.getTo(), toEntityId);
- Assert.assertEquals(relation.getTypeGroup().name(), relationUpdateMsg.getTypeGroup());
+ Assert.assertEquals(relation.getTypeGroup().name(), relationUpdateMsg.getTypeGroup().getValue());
}
private void sendAlarm() throws Exception {
@@ -1350,15 +1352,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
edgeImitator.sendUplinkMsg(uplinkMsgBuilder2.build());
Assert.assertTrue(edgeImitator.waitForResponses());
- int attempt = 0;
- Map>> timeseries;
- do {
- timeseries = doGetAsyncTyped("/api/plugins/telemetry/DEVICE/" + device.getUuidId() + "/values/timeseries?keys=" + timeseriesKey,
- new TypeReference<>() {});
- // Wait before device attributes saved to database before requesting them from controller
- Thread.sleep(100);
- attempt++;
- } while (!timeseries.containsKey(timeseriesKey) || attempt < 10);
+ Awaitility.await()
+ .atMost(2, TimeUnit.SECONDS)
+ .until(() -> isTimeseriesAlreadyAvailable(device, timeseriesKey));
+
+ Map>> timeseries = loadDeviceTimeseries(device, timeseriesKey);
Assert.assertTrue(timeseries.containsKey(timeseriesKey));
Assert.assertEquals(1, timeseries.get(timeseriesKey).size());
Assert.assertEquals(timeseriesValue, timeseries.get(timeseriesKey).get(0).get("value"));
@@ -1370,6 +1368,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
}
+ private boolean isTimeseriesAlreadyAvailable(Device device, String timeseriesKey) throws Exception {
+ return loadDeviceTimeseries(device, timeseriesKey).containsKey(timeseriesKey);
+ }
+
+ private Map>> loadDeviceTimeseries(Device device, String timeseriesKey) throws Exception {
+ return doGetAsyncTyped("/api/plugins/telemetry/DEVICE/" + device.getUuidId() + "/values/timeseries?keys=" + timeseriesKey,
+ new TypeReference<>() {});
+ }
+
private void sendRelation() throws Exception {
List edgeDevices = doGetTypedWithPageLink("/api/edge/" + edge.getId().getId().toString() + "/devices?",
new TypeReference>() {}, new PageLink(100)).getData();
@@ -1449,7 +1456,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
edgeImitator.expectMessageAmount(1);
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
Assert.assertTrue(edgeImitator.waitForResponses());
- Assert.assertTrue(edgeImitator.waitForMessages());;
+ Assert.assertTrue(edgeImitator.waitForMessages());
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
Assert.assertTrue(latestMessage instanceof RuleChainMetadataUpdateMsg);
diff --git a/pom.xml b/pom.xml
index d0c9864ef3..f59f69467c 100755
--- a/pom.xml
+++ b/pom.xml
@@ -49,6 +49,7 @@
2.2.0
4.12
5.7.1
+ 4.1.0
2.2
1.7.7
1.2.3
@@ -1437,6 +1438,12 @@
${junit.version}
test
+
+ org.awaitility
+ awaitility
+ ${awaitility.version}
+ test
+
org.hamcrest
hamcrest