Added asset & device profiles default edge rule chain test. Added device & device profile software id and default dashboard id tests
This commit is contained in:
parent
ab924d6e13
commit
d0847bb80a
@ -73,6 +73,10 @@ public class DeviceProfileMsgConstructor {
|
||||
builder.setDefaultRuleChainIdMSB(deviceProfile.getDefaultEdgeRuleChainId().getId().getMostSignificantBits())
|
||||
.setDefaultRuleChainIdLSB(deviceProfile.getDefaultEdgeRuleChainId().getId().getLeastSignificantBits());
|
||||
}
|
||||
if (deviceProfile.getDefaultDashboardId() != null) {
|
||||
builder.setDefaultDashboardIdMSB(deviceProfile.getDefaultDashboardId().getId().getMostSignificantBits())
|
||||
.setDefaultDashboardIdLSB(deviceProfile.getDefaultDashboardId().getId().getLeastSignificantBits());
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import org.thingsboard.common.util.JacksonUtil;
|
||||
import org.thingsboard.server.cluster.TbClusterService;
|
||||
import org.thingsboard.server.common.data.Dashboard;
|
||||
import org.thingsboard.server.common.data.Device;
|
||||
import org.thingsboard.server.common.data.DeviceProfile;
|
||||
import org.thingsboard.server.common.data.OtaPackageInfo;
|
||||
@ -51,11 +52,13 @@ import org.thingsboard.server.common.data.edge.Edge;
|
||||
import org.thingsboard.server.common.data.edge.EdgeEvent;
|
||||
import org.thingsboard.server.common.data.edge.EdgeEventActionType;
|
||||
import org.thingsboard.server.common.data.edge.EdgeEventType;
|
||||
import org.thingsboard.server.common.data.id.DashboardId;
|
||||
import org.thingsboard.server.common.data.id.DeviceProfileId;
|
||||
import org.thingsboard.server.common.data.id.EdgeId;
|
||||
import org.thingsboard.server.common.data.id.RuleChainId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
|
||||
import org.thingsboard.server.common.data.ota.OtaPackageType;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.query.EntityKeyValueType;
|
||||
@ -63,6 +66,7 @@ import org.thingsboard.server.common.data.query.FilterPredicateValue;
|
||||
import org.thingsboard.server.common.data.query.NumericFilterPredicate;
|
||||
import org.thingsboard.server.common.data.queue.Queue;
|
||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||
import org.thingsboard.server.common.data.rule.RuleChainType;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.controller.AbstractControllerTest;
|
||||
import org.thingsboard.server.dao.edge.EdgeEventService;
|
||||
@ -500,13 +504,13 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
|
||||
return doPost("/api/asset", asset, Asset.class);
|
||||
}
|
||||
|
||||
protected OtaPackageInfo saveOtaPackageInfo(DeviceProfileId deviceProfileId) {
|
||||
protected OtaPackageInfo saveOtaPackageInfo(DeviceProfileId deviceProfileId, OtaPackageType type) {
|
||||
SaveOtaPackageInfoRequest firmwareInfo = new SaveOtaPackageInfoRequest();
|
||||
firmwareInfo.setDeviceProfileId(deviceProfileId);
|
||||
firmwareInfo.setType(FIRMWARE);
|
||||
firmwareInfo.setTitle("Firmware Edge " + StringUtils.randomAlphanumeric(3));
|
||||
firmwareInfo.setType(type);
|
||||
firmwareInfo.setTitle(type.name() + " Edge " + StringUtils.randomAlphanumeric(3));
|
||||
firmwareInfo.setVersion("v1.0");
|
||||
firmwareInfo.setTag("My firmware #1 v1.0");
|
||||
firmwareInfo.setTag("My " + type.name() + " #1 v1.0");
|
||||
firmwareInfo.setUsesUrl(true);
|
||||
firmwareInfo.setUrl("http://localhost:8080/v1/package");
|
||||
firmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode());
|
||||
@ -541,6 +545,49 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(source.hashCode(), target.hashCode());
|
||||
}
|
||||
|
||||
protected RuleChainId createEdgeRuleChainAndAssignToEdge(String ruleChainName) throws Exception {
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
RuleChain ruleChain = new RuleChain();
|
||||
ruleChain.setName(ruleChainName);
|
||||
ruleChain.setType(RuleChainType.EDGE);
|
||||
RuleChain savedRuleChain = doPost("/api/ruleChain", ruleChain, RuleChain.class);
|
||||
doPost("/api/edge/" + edge.getUuidId()
|
||||
+ "/ruleChain/" + savedRuleChain.getUuidId(), RuleChain.class);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
return savedRuleChain.getId();
|
||||
}
|
||||
|
||||
protected void unAssignFromEdgeAndDeleteRuleChain(RuleChainId ruleChainId) throws Exception {
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
doDelete("/api/edge/" + edge.getUuidId()
|
||||
+ "/ruleChain/" + ruleChainId.getId(), RuleChain.class);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
|
||||
// delete rule chain
|
||||
doDelete("/api/ruleChain/" + ruleChainId.getId())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
protected DashboardId createDashboardAndAssignToEdge(String dashboardName) throws Exception {
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
Dashboard dashboard = new Dashboard();
|
||||
dashboard.setTitle(dashboardName);
|
||||
Dashboard savedDashboard = doPost("/api/dashboard", dashboard, Dashboard.class);
|
||||
doPost("/api/edge/" + edge.getUuidId()
|
||||
+ "/dashboard/" + savedDashboard.getUuidId(), Dashboard.class);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
return savedDashboard.getId();
|
||||
}
|
||||
|
||||
protected void unAssignFromEdgeAndDeleteDashboard(DashboardId dashboardId) throws Exception {
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
doDelete("/api/edge/" + edge.getUuidId()
|
||||
+ "/dashboard/" + dashboardId.getId(), RuleChain.class);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
|
||||
// delete dashboard
|
||||
doDelete("/api/dashboard/" + dashboardId.getId())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ import com.google.protobuf.ByteString;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.thingsboard.server.common.data.asset.AssetProfile;
|
||||
import org.thingsboard.server.common.data.id.RuleChainId;
|
||||
import org.thingsboard.server.gen.edge.v1.AssetProfileUpdateMsg;
|
||||
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
|
||||
|
||||
@ -31,8 +32,11 @@ abstract public class BaseAssetProfileEdgeTest extends AbstractEdgeTest {
|
||||
|
||||
@Test
|
||||
public void testAssetProfiles() throws Exception {
|
||||
RuleChainId buildingsRuleChainId = createEdgeRuleChainAndAssignToEdge("Buildings Rule Chain");
|
||||
|
||||
// create asset profile
|
||||
AssetProfile assetProfile = this.createAssetProfile("Building");
|
||||
assetProfile.setDefaultEdgeRuleChainId(buildingsRuleChainId);
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
assetProfile = doPost("/api/assetProfile", assetProfile, AssetProfile.class);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
@ -43,6 +47,8 @@ abstract public class BaseAssetProfileEdgeTest extends AbstractEdgeTest {
|
||||
Assert.assertEquals(assetProfile.getUuidId().getMostSignificantBits(), assetProfileUpdateMsg.getIdMSB());
|
||||
Assert.assertEquals(assetProfile.getUuidId().getLeastSignificantBits(), assetProfileUpdateMsg.getIdLSB());
|
||||
Assert.assertEquals("Building", assetProfileUpdateMsg.getName());
|
||||
Assert.assertEquals(buildingsRuleChainId.getId().getMostSignificantBits(), assetProfileUpdateMsg.getDefaultRuleChainIdMSB());
|
||||
Assert.assertEquals(buildingsRuleChainId.getId().getLeastSignificantBits(), assetProfileUpdateMsg.getDefaultRuleChainIdLSB());
|
||||
|
||||
// update asset profile
|
||||
assetProfile.setImage("IMAGE");
|
||||
@ -66,5 +72,7 @@ abstract public class BaseAssetProfileEdgeTest extends AbstractEdgeTest {
|
||||
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, assetProfileUpdateMsg.getMsgType());
|
||||
Assert.assertEquals(assetProfile.getUuidId().getMostSignificantBits(), assetProfileUpdateMsg.getIdMSB());
|
||||
Assert.assertEquals(assetProfile.getUuidId().getLeastSignificantBits(), assetProfileUpdateMsg.getIdLSB());
|
||||
|
||||
unAssignFromEdgeAndDeleteRuleChain(buildingsRuleChainId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,6 +43,7 @@ import org.thingsboard.server.common.data.edge.EdgeEventActionType;
|
||||
import org.thingsboard.server.common.data.edge.EdgeEventType;
|
||||
import org.thingsboard.server.common.data.id.CustomerId;
|
||||
import org.thingsboard.server.common.data.id.EntityId;
|
||||
import org.thingsboard.server.common.data.ota.OtaPackageType;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.security.DeviceCredentials;
|
||||
@ -174,7 +175,7 @@ abstract public class BaseDeviceEdgeTest extends AbstractEdgeTest {
|
||||
// create device and assign to edge; update device
|
||||
Device savedDevice = saveDeviceOnCloudAndVerifyDeliveryToEdge();
|
||||
|
||||
verifyUpdateFirmwareIdAndDeviceData(savedDevice);
|
||||
verifyUpdateFirmwareIdSoftwareIdAndDeviceData(savedDevice);
|
||||
|
||||
// update device credentials - ACCESS_TOKEN
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
@ -210,15 +211,20 @@ abstract public class BaseDeviceEdgeTest extends AbstractEdgeTest {
|
||||
Assert.assertEquals(deviceCredentials.getCredentialsValue(), deviceCredentialsUpdateMsg.getCredentialsValue());
|
||||
}
|
||||
|
||||
private void verifyUpdateFirmwareIdAndDeviceData(Device savedDevice) throws InterruptedException {
|
||||
// create ota package
|
||||
private void verifyUpdateFirmwareIdSoftwareIdAndDeviceData(Device savedDevice) throws InterruptedException {
|
||||
// create ota packages
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
OtaPackageInfo firmwareOtaPackageInfo = saveOtaPackageInfo(thermostatDeviceProfile.getId());
|
||||
OtaPackageInfo firmwareOtaPackageInfo = saveOtaPackageInfo(thermostatDeviceProfile.getId(), OtaPackageType.FIRMWARE);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
OtaPackageInfo softwareOtaPackageInfo = saveOtaPackageInfo(thermostatDeviceProfile.getId(), OtaPackageType.SOFTWARE);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
|
||||
// update device
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
savedDevice.setFirmwareId(firmwareOtaPackageInfo.getId());
|
||||
savedDevice.setSoftwareId(softwareOtaPackageInfo.getId());
|
||||
|
||||
DeviceData deviceData = new DeviceData();
|
||||
deviceData.setConfiguration(new DefaultDeviceConfiguration());
|
||||
@ -239,6 +245,8 @@ abstract public class BaseDeviceEdgeTest extends AbstractEdgeTest {
|
||||
Assert.assertEquals(savedDevice.getType(), deviceUpdateMsg.getType());
|
||||
Assert.assertEquals(firmwareOtaPackageInfo.getUuidId().getMostSignificantBits(), deviceUpdateMsg.getFirmwareIdMSB());
|
||||
Assert.assertEquals(firmwareOtaPackageInfo.getUuidId().getLeastSignificantBits(), deviceUpdateMsg.getFirmwareIdLSB());
|
||||
Assert.assertEquals(softwareOtaPackageInfo.getUuidId().getMostSignificantBits(), deviceUpdateMsg.getSoftwareIdMSB());
|
||||
Assert.assertEquals(softwareOtaPackageInfo.getUuidId().getLeastSignificantBits(), deviceUpdateMsg.getSoftwareIdLSB());
|
||||
Optional<DeviceData> deviceDataOpt =
|
||||
dataDecodingEncodingService.decode(deviceUpdateMsg.getDeviceDataBytes().toByteArray());
|
||||
Assert.assertTrue(deviceDataOpt.isPresent());
|
||||
|
||||
@ -36,7 +36,10 @@ import org.thingsboard.server.common.data.device.profile.lwm2m.TelemetryMappingC
|
||||
import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.AbstractLwM2MBootstrapServerCredential;
|
||||
import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.LwM2MBootstrapServerCredential;
|
||||
import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.NoSecLwM2MBootstrapServerCredential;
|
||||
import org.thingsboard.server.common.data.id.DashboardId;
|
||||
import org.thingsboard.server.common.data.id.RuleChainId;
|
||||
import org.thingsboard.server.common.data.kv.DataType;
|
||||
import org.thingsboard.server.common.data.ota.OtaPackageType;
|
||||
import org.thingsboard.server.common.data.transport.snmp.SnmpMapping;
|
||||
import org.thingsboard.server.common.data.transport.snmp.config.SnmpCommunicationConfig;
|
||||
import org.thingsboard.server.common.data.transport.snmp.config.impl.TelemetryQueryingSnmpCommunicationConfig;
|
||||
@ -55,8 +58,11 @@ abstract public class BaseDeviceProfileEdgeTest extends AbstractEdgeTest {
|
||||
|
||||
@Test
|
||||
public void testDeviceProfiles() throws Exception {
|
||||
RuleChainId thermostatsRuleChainId = createEdgeRuleChainAndAssignToEdge("Thermostats Rule Chain");
|
||||
|
||||
// create device profile
|
||||
DeviceProfile deviceProfile = this.createDeviceProfile("ONE_MORE_DEVICE_PROFILE", null);
|
||||
deviceProfile.setDefaultEdgeRuleChainId(thermostatsRuleChainId);
|
||||
extendDeviceProfileData(deviceProfile);
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
deviceProfile = doPost("/api/deviceProfile", deviceProfile, DeviceProfile.class);
|
||||
@ -67,13 +73,23 @@ abstract public class BaseDeviceProfileEdgeTest extends AbstractEdgeTest {
|
||||
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
|
||||
Assert.assertEquals(deviceProfile.getUuidId().getMostSignificantBits(), deviceProfileUpdateMsg.getIdMSB());
|
||||
Assert.assertEquals(deviceProfile.getUuidId().getLeastSignificantBits(), deviceProfileUpdateMsg.getIdLSB());
|
||||
Assert.assertEquals(thermostatsRuleChainId.getId().getMostSignificantBits(), deviceProfileUpdateMsg.getDefaultRuleChainIdMSB());
|
||||
Assert.assertEquals(thermostatsRuleChainId.getId().getLeastSignificantBits(), deviceProfileUpdateMsg.getDefaultRuleChainIdLSB());
|
||||
|
||||
// update device profile
|
||||
OtaPackageInfo firmwareOtaPackageInfo = saveOtaPackageInfo(deviceProfile.getId());
|
||||
OtaPackageInfo firmwareOtaPackageInfo = saveOtaPackageInfo(deviceProfile.getId(), OtaPackageType.FIRMWARE);
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
|
||||
OtaPackageInfo softwareOtaPackageInfo = saveOtaPackageInfo(deviceProfile.getId(), OtaPackageType.SOFTWARE);
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
|
||||
DashboardId thermostatsDashboardId = createDashboardAndAssignToEdge("Thermostats Dashboard");
|
||||
|
||||
deviceProfile.setFirmwareId(firmwareOtaPackageInfo.getId());
|
||||
deviceProfile.setSoftwareId(softwareOtaPackageInfo.getId());
|
||||
deviceProfile.setDefaultDashboardId(thermostatsDashboardId);
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
deviceProfile = doPost("/api/deviceProfile", deviceProfile, DeviceProfile.class);
|
||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||
@ -82,6 +98,10 @@ abstract public class BaseDeviceProfileEdgeTest extends AbstractEdgeTest {
|
||||
deviceProfileUpdateMsg = (DeviceProfileUpdateMsg) latestMessage;
|
||||
Assert.assertEquals(firmwareOtaPackageInfo.getUuidId().getMostSignificantBits(), deviceProfileUpdateMsg.getFirmwareIdMSB());
|
||||
Assert.assertEquals(firmwareOtaPackageInfo.getUuidId().getLeastSignificantBits(), deviceProfileUpdateMsg.getFirmwareIdLSB());
|
||||
Assert.assertEquals(softwareOtaPackageInfo.getUuidId().getMostSignificantBits(), deviceProfileUpdateMsg.getSoftwareIdMSB());
|
||||
Assert.assertEquals(softwareOtaPackageInfo.getUuidId().getLeastSignificantBits(), deviceProfileUpdateMsg.getSoftwareIdLSB());
|
||||
Assert.assertEquals(thermostatsDashboardId.getId().getMostSignificantBits(), deviceProfileUpdateMsg.getDefaultDashboardIdMSB());
|
||||
Assert.assertEquals(thermostatsDashboardId.getId().getLeastSignificantBits(), deviceProfileUpdateMsg.getDefaultDashboardIdLSB());
|
||||
|
||||
// delete profile
|
||||
edgeImitator.expectMessageAmount(1);
|
||||
@ -94,6 +114,9 @@ abstract public class BaseDeviceProfileEdgeTest extends AbstractEdgeTest {
|
||||
Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
|
||||
Assert.assertEquals(deviceProfile.getUuidId().getMostSignificantBits(), deviceProfileUpdateMsg.getIdMSB());
|
||||
Assert.assertEquals(deviceProfile.getUuidId().getLeastSignificantBits(), deviceProfileUpdateMsg.getIdLSB());
|
||||
|
||||
unAssignFromEdgeAndDeleteRuleChain(thermostatsRuleChainId);
|
||||
unAssignFromEdgeAndDeleteDashboard(thermostatsDashboardId);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user