Merge remote-tracking branch 'upstream/master' into feature/edge-json-converter-impl
This commit is contained in:
commit
188a21c2c1
@ -23,6 +23,8 @@ import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||
import com.google.common.util.concurrent.MoreExecutors;
|
||||
import com.google.protobuf.AbstractMessage;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.awaitility.Awaitility;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
@ -84,9 +86,10 @@ import org.thingsboard.server.gen.edge.v1.UserUpdateMsg;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
||||
@ -97,6 +100,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
||||
})
|
||||
@ContextConfiguration(classes = {EdgeControllerTest.Config.class})
|
||||
@DaoSqlTest
|
||||
@Slf4j
|
||||
public class EdgeControllerTest extends AbstractControllerTest {
|
||||
|
||||
public static final String EDGE_HOST = "localhost";
|
||||
@ -865,10 +869,7 @@ public class EdgeControllerTest extends AbstractControllerTest {
|
||||
|
||||
Edge edge = doPost("/api/edge", constructEdge("Test Sync Edge", "test"), Edge.class);
|
||||
|
||||
// simulate edge activation
|
||||
ObjectNode attributes = JacksonUtil.newObjectNode();
|
||||
attributes.put("active", true);
|
||||
doPost("/api/plugins/telemetry/EDGE/" + edge.getId() + "/attributes/" + DataConstants.SERVER_SCOPE, attributes);
|
||||
simulateEdgeActivation(edge);
|
||||
|
||||
doPost("/api/edge/" + edge.getId().getId().toString()
|
||||
+ "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
||||
@ -880,7 +881,7 @@ public class EdgeControllerTest extends AbstractControllerTest {
|
||||
|
||||
edgeImitator.expectMessageAmount(24);
|
||||
edgeImitator.connect();
|
||||
assertThat(edgeImitator.waitForMessages()).as("await for messages on first connect").isTrue();
|
||||
waitForMessages(edgeImitator);
|
||||
|
||||
verifyFetchersMsgs(edgeImitator);
|
||||
// verify queue msgs
|
||||
@ -892,7 +893,7 @@ public class EdgeControllerTest extends AbstractControllerTest {
|
||||
|
||||
edgeImitator.expectMessageAmount(20);
|
||||
doPost("/api/edge/sync/" + edge.getId());
|
||||
assertThat(edgeImitator.waitForMessages()).as("await for messages after edge sync rest api call").isTrue();
|
||||
waitForMessages(edgeImitator);
|
||||
|
||||
verifyFetchersMsgs(edgeImitator);
|
||||
Assert.assertTrue(edgeImitator.getDownlinkMsgs().isEmpty());
|
||||
@ -911,6 +912,35 @@ public class EdgeControllerTest extends AbstractControllerTest {
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
private void simulateEdgeActivation(Edge edge) throws Exception {
|
||||
ObjectNode attributes = JacksonUtil.newObjectNode();
|
||||
attributes.put("active", true);
|
||||
doPost("/api/plugins/telemetry/EDGE/" + edge.getId() + "/attributes/" + DataConstants.SERVER_SCOPE, attributes);
|
||||
Awaitility.await()
|
||||
.atMost(30, 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());
|
||||
});
|
||||
}
|
||||
|
||||
private void waitForMessages(EdgeImitator edgeImitator) throws Exception {
|
||||
boolean success = edgeImitator.waitForMessages();
|
||||
if (!success) {
|
||||
List<AbstractMessage> downlinkMsgs = edgeImitator.getDownlinkMsgs();
|
||||
for (AbstractMessage downlinkMsg : downlinkMsgs) {
|
||||
log.error("{}\n{}", downlinkMsg.getClass(), downlinkMsg);
|
||||
}
|
||||
Assert.fail("Await for messages was not successful!");
|
||||
}
|
||||
}
|
||||
|
||||
private void verifyFetchersMsgs(EdgeImitator edgeImitator) {
|
||||
Assert.assertTrue(popQueueMsg(edgeImitator.getDownlinkMsgs(), UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, "Main"));
|
||||
Assert.assertTrue(popRuleChainMsg(edgeImitator.getDownlinkMsgs(), UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, "Edge Root Rule Chain"));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user