Browse Source

Improved stability of edge test

pull/14603/head
Volodymyr Babak 10 months ago
parent
commit
a3d6ecad44
  1. 1
      application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java
  2. 25
      application/src/test/java/org/thingsboard/server/edge/AbstractEdgeTest.java
  3. 13
      application/src/test/java/org/thingsboard/server/edge/DeviceEdgeTest.java
  4. 12
      application/src/test/java/org/thingsboard/server/edge/DeviceProfileEdgeTest.java

1
application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java

@ -92,6 +92,7 @@ public class EdgeSyncCursor {
fetchers.add(new NotificationTargetEdgeEventFetcher(ctx.getNotificationTargetService()));
fetchers.add(new NotificationRuleEdgeEventFetcher(ctx.getNotificationRuleService()));
fetchers.add(new OtaPackagesEdgeEventFetcher(ctx.getOtaPackageService()));
// sync device profiles twice to update software and hardware fields
fetchers.add(new DeviceProfilesEdgeEventFetcher(ctx.getDeviceProfileService()));
fetchers.add(new TenantResourcesEdgeEventFetcher(ctx.getResourceService()));
}

25
application/src/test/java/org/thingsboard/server/edge/AbstractEdgeTest.java

@ -22,6 +22,7 @@ import com.google.protobuf.AbstractMessage;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.MessageLite;
import lombok.extern.slf4j.Slf4j;
import org.awaitility.Awaitility;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@ -102,6 +103,7 @@ import org.thingsboard.server.gen.edge.v1.UserUpdateMsg;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
import java.util.UUID;
@ -738,4 +740,27 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
return rpc;
}
protected void verifyEdgeDisconnected() {
verifyEdgeActiveFlag(false);
}
protected void verifyEdgeConnected() {
verifyEdgeActiveFlag(true);
}
private void verifyEdgeActiveFlag(boolean value) {
Awaitility.await()
.atMost(TIMEOUT, TimeUnit.SECONDS)
.until(() -> {
List<Map<String, Object>> values = doGetAsyncTyped("/api/plugins/telemetry/EDGE/" + edge.getId() +
"/values/attributes/SERVER_SCOPE", new TypeReference<>() {});
Optional<Map<String, Object>> activeAttrOpt = values.stream().filter(att -> att.get("key").equals("active")).findFirst();
if (activeAttrOpt.isEmpty()) {
return false;
}
Map<String, Object> activeAttr = activeAttrOpt.get();
return Boolean.toString(value).equals(activeAttr.get("value").toString());
});
}
}

13
application/src/test/java/org/thingsboard/server/edge/DeviceEdgeTest.java

@ -893,18 +893,7 @@ public class DeviceEdgeTest extends AbstractEdgeTest {
ObjectNode attributes = JacksonUtil.newObjectNode();
attributes.put("active", true);
doPost("/api/plugins/telemetry/EDGE/" + edge.getId() + "/attributes/" + DataConstants.SERVER_SCOPE, attributes);
Awaitility.await()
.atMost(TIMEOUT, TimeUnit.SECONDS)
.until(() -> {
List<Map<String, Object>> values = doGetAsyncTyped("/api/plugins/telemetry/EDGE/" + edge.getId() +
"/values/attributes/SERVER_SCOPE", new TypeReference<>() {});
Optional<Map<String, Object>> activeAttrOpt = values.stream().filter(att -> att.get("key").equals("active")).findFirst();
if (activeAttrOpt.isEmpty()) {
return false;
}
Map<String, Object> activeAttr = activeAttrOpt.get();
return "true".equals(activeAttr.get("value").toString());
});
verifyEdgeConnected();
}
}

12
application/src/test/java/org/thingsboard/server/edge/DeviceProfileEdgeTest.java

@ -151,14 +151,20 @@ public class DeviceProfileEdgeTest extends AbstractEdgeTest {
// delete profile when edge is offline
edgeImitator.disconnect();
verifyEdgeDisconnected();
doDelete("/api/deviceProfile/" + deviceProfile.getUuidId())
.andExpect(status().isOk());
edgeImitator.connect();
// 25 sync message
// + 2 RuleChain and RuleChainMetadata
// + 1 delete DeviceProfile
// + 1 RuleChain Added
// + 1 RuleChainMetadata Added
// + 1 DeviceProfile Delete
edgeImitator.expectMessageAmount(SYNC_MESSAGE_COUNT + 3);
edgeImitator.connect();
verifyEdgeConnected();
Assert.assertTrue(edgeImitator.waitForMessages());
latestMessage = edgeImitator.getLatestMessage();

Loading…
Cancel
Save