Merge pull request #5748 from smatvienko-tb/edge_test_refactor
[3.3.3] edge test refactor to assign alias for many asserts
This commit is contained in:
commit
426507a921
@ -48,15 +48,17 @@ import org.thingsboard.server.gen.edge.v1.UserUpdateMsg;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.nullValue;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
||||
|
||||
public abstract class BaseEdgeControllerTest extends AbstractControllerTest {
|
||||
|
||||
public static final String EDGE_HOST = "localhost";
|
||||
public static final int EDGE_PORT = 7070;
|
||||
|
||||
private IdComparator<Edge> idComparator = new IdComparator<>();
|
||||
|
||||
private Tenant savedTenant;
|
||||
@ -68,7 +70,7 @@ public abstract class BaseEdgeControllerTest extends AbstractControllerTest {
|
||||
loginSysAdmin();
|
||||
|
||||
Tenant tenant = new Tenant();
|
||||
tenant.setTitle("My tenant");
|
||||
tenant.setTitle("My tenant for Edge");
|
||||
savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
||||
tenantId = savedTenant.getId();
|
||||
Assert.assertNotNull(savedTenant);
|
||||
@ -667,45 +669,45 @@ public abstract class BaseEdgeControllerTest extends AbstractControllerTest {
|
||||
|
||||
@Test
|
||||
public void testSyncEdge() throws Exception {
|
||||
Edge edge = doPost("/api/edge", constructEdge("Test Edge", "test"), Edge.class);
|
||||
Edge edge = doPost("/api/edge", constructEdge("Test Sync Edge", "test"), Edge.class);
|
||||
|
||||
Device device = new Device();
|
||||
device.setName("Edge Device 1");
|
||||
device.setName("Test Sync Edge Device 1");
|
||||
device.setType("default");
|
||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||
doPost("/api/edge/" + edge.getId().getId().toString()
|
||||
+ "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
||||
|
||||
Asset asset = new Asset();
|
||||
asset.setName("Edge Asset 1");
|
||||
asset.setName("Test Sync Edge Asset 1");
|
||||
asset.setType("test");
|
||||
Asset savedAsset = doPost("/api/asset", asset, Asset.class);
|
||||
doPost("/api/edge/" + edge.getId().getId().toString()
|
||||
+ "/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
||||
|
||||
EdgeImitator edgeImitator = new EdgeImitator("localhost", 7070, edge.getRoutingKey(), edge.getSecret());
|
||||
EdgeImitator edgeImitator = new EdgeImitator(EDGE_HOST, EDGE_PORT, edge.getRoutingKey(), edge.getSecret());
|
||||
edgeImitator.ignoreType(UserCredentialsUpdateMsg.class);
|
||||
|
||||
edgeImitator.expectMessageAmount(11);
|
||||
edgeImitator.connect();
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
assertThat(edgeImitator.waitForMessages()).as("await for messages on first connect").isTrue();
|
||||
|
||||
Assert.assertEquals(2, edgeImitator.findAllMessagesByType(RuleChainUpdateMsg.class).size()); // one msg during sync process, another from edge creation
|
||||
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(DeviceProfileUpdateMsg.class).size()); // one msg during sync process for 'default' device profile
|
||||
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(DeviceUpdateMsg.class).size()); // one msg once device assigned to edge
|
||||
Assert.assertEquals(2, edgeImitator.findAllMessagesByType(AssetUpdateMsg.class).size()); // two msgs - one during sync process, and one more once asset assigned to edge
|
||||
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(UserUpdateMsg.class).size()); // one msg during sync process for tenant admin user
|
||||
Assert.assertEquals(4, edgeImitator.findAllMessagesByType(AdminSettingsUpdateMsg.class).size());
|
||||
assertThat(edgeImitator.findAllMessagesByType(RuleChainUpdateMsg.class)).as("one msg during sync process, another from edge creation").hasSize(2);
|
||||
assertThat(edgeImitator.findAllMessagesByType(DeviceProfileUpdateMsg.class)).as("one msg during sync process for 'default' device profile").hasSize(1);
|
||||
assertThat(edgeImitator.findAllMessagesByType(DeviceUpdateMsg.class)).as("one msg once device assigned to edge").hasSize(1);
|
||||
assertThat(edgeImitator.findAllMessagesByType(AssetUpdateMsg.class)).as("two msgs - one during sync process, and one more once asset assigned to edge").hasSize(2);
|
||||
assertThat(edgeImitator.findAllMessagesByType(UserUpdateMsg.class)).as("one msg during sync process for tenant admin user").hasSize(1);
|
||||
assertThat(edgeImitator.findAllMessagesByType(AdminSettingsUpdateMsg.class)).as("admin setting update").hasSize(4);
|
||||
|
||||
edgeImitator.expectMessageAmount(8);
|
||||
doPost("/api/edge/sync/" + edge.getId());
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
assertThat(edgeImitator.waitForMessages()).as("await for messages after edge sync rest api call").isTrue();
|
||||
|
||||
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(RuleChainUpdateMsg.class).size());
|
||||
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(DeviceProfileUpdateMsg.class).size());
|
||||
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(AssetUpdateMsg.class).size());
|
||||
Assert.assertEquals(1, edgeImitator.findAllMessagesByType(UserUpdateMsg.class).size());
|
||||
Assert.assertEquals(4, edgeImitator.findAllMessagesByType(AdminSettingsUpdateMsg.class).size());
|
||||
assertThat(edgeImitator.findAllMessagesByType(RuleChainUpdateMsg.class)).as("rule chain msg").hasSize(1);
|
||||
assertThat(edgeImitator.findAllMessagesByType(DeviceProfileUpdateMsg.class)).as("device profile msg").hasSize(1);
|
||||
assertThat(edgeImitator.findAllMessagesByType(AssetUpdateMsg.class)).as("asset update msg").hasSize(1);
|
||||
assertThat(edgeImitator.findAllMessagesByType(UserUpdateMsg.class)).as("user update msg").hasSize(1);
|
||||
assertThat(edgeImitator.findAllMessagesByType(AdminSettingsUpdateMsg.class)).as("admin setting update msg").hasSize(4);
|
||||
|
||||
edgeImitator.allowIgnoredTypes();
|
||||
try {
|
||||
@ -720,4 +722,4 @@ public abstract class BaseEdgeControllerTest extends AbstractControllerTest {
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -767,7 +767,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest {
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
doDelete("/api/alarm/" + savedAlarm.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
Assert.assertTrue(edgeImitator.waitForMessages(1));
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
latestMessage = edgeImitator.getLatestMessage();
|
||||
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
||||
alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
||||
|
||||
@ -65,6 +65,8 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
public class EdgeImitator {
|
||||
|
||||
public static final int TIMEOUT_IN_SECONDS = 30;
|
||||
|
||||
private String routingKey;
|
||||
private String routingSecret;
|
||||
|
||||
@ -293,7 +295,7 @@ public class EdgeImitator {
|
||||
}
|
||||
|
||||
public boolean waitForMessages() throws InterruptedException {
|
||||
return waitForMessages(5);
|
||||
return waitForMessages(TIMEOUT_IN_SECONDS);
|
||||
}
|
||||
|
||||
public boolean waitForMessages(int timeoutInSeconds) throws InterruptedException {
|
||||
@ -308,7 +310,7 @@ public class EdgeImitator {
|
||||
}
|
||||
|
||||
public boolean waitForResponses() throws InterruptedException {
|
||||
return responsesLatch.await(5, TimeUnit.SECONDS);
|
||||
return responsesLatch.await(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
public void expectResponsesAmount(int messageAmount) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user