Removed device profiles devices request
This commit is contained in:
		
							parent
							
								
									0b8abd579f
								
							
						
					
					
						commit
						35d6716b70
					
				@ -27,6 +27,7 @@ import org.thingsboard.server.dao.attributes.AttributesService;
 | 
			
		||||
import org.thingsboard.server.dao.customer.CustomerService;
 | 
			
		||||
import org.thingsboard.server.dao.dashboard.DashboardService;
 | 
			
		||||
import org.thingsboard.server.dao.device.DeviceProfileService;
 | 
			
		||||
import org.thingsboard.server.dao.device.DeviceService;
 | 
			
		||||
import org.thingsboard.server.dao.edge.EdgeEventService;
 | 
			
		||||
import org.thingsboard.server.dao.edge.EdgeService;
 | 
			
		||||
import org.thingsboard.server.dao.ota.OtaPackageService;
 | 
			
		||||
@ -81,6 +82,9 @@ public class EdgeContextComponent {
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private Configuration freemarkerConfig;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private DeviceService deviceService;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private AssetService assetService;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -42,7 +42,6 @@ import org.thingsboard.server.gen.edge.v1.ConnectResponseCode;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.ConnectResponseMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceCredentialsRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceCredentialsUpdateMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceProfileDevicesRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceRpcCallMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceUpdateMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DownlinkMsg;
 | 
			
		||||
@ -598,11 +597,6 @@ public final class EdgeGrpcSession implements Closeable {
 | 
			
		||||
                    result.add(ctx.getDeviceProcessor().processDeviceRpcCallResponseFromEdge(edge.getTenantId(), deviceRpcCallMsg));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (uplinkMsg.getDeviceProfileDevicesRequestMsgCount() > 0) {
 | 
			
		||||
                for (DeviceProfileDevicesRequestMsg deviceProfileDevicesRequestMsg : uplinkMsg.getDeviceProfileDevicesRequestMsgList()) {
 | 
			
		||||
                    result.add(ctx.getEdgeRequestsService().processDeviceProfileDevicesRequestMsg(edge.getTenantId(), edge, deviceProfileDevicesRequestMsg));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (uplinkMsg.getWidgetBundleTypesRequestMsgCount() > 0) {
 | 
			
		||||
                for (WidgetBundleTypesRequestMsg widgetBundleTypesRequestMsg : uplinkMsg.getWidgetBundleTypesRequestMsgList()) {
 | 
			
		||||
                    result.add(ctx.getEdgeRequestsService().processWidgetBundleTypesRequestMsg(edge.getTenantId(), edge, widgetBundleTypesRequestMsg));
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@ import org.thingsboard.server.service.edge.rpc.fetch.AssetsEdgeEventFetcher;
 | 
			
		||||
import org.thingsboard.server.service.edge.rpc.fetch.CustomerEdgeEventFetcher;
 | 
			
		||||
import org.thingsboard.server.service.edge.rpc.fetch.DashboardsEdgeEventFetcher;
 | 
			
		||||
import org.thingsboard.server.service.edge.rpc.fetch.DeviceProfilesEdgeEventFetcher;
 | 
			
		||||
import org.thingsboard.server.service.edge.rpc.fetch.DevicesEdgeEventFetcher;
 | 
			
		||||
import org.thingsboard.server.service.edge.rpc.fetch.EdgeEventFetcher;
 | 
			
		||||
import org.thingsboard.server.service.edge.rpc.fetch.OtaPackagesEdgeEventFetcher;
 | 
			
		||||
import org.thingsboard.server.service.edge.rpc.fetch.QueuesEdgeEventFetcher;
 | 
			
		||||
@ -48,6 +49,7 @@ public class EdgeSyncCursor {
 | 
			
		||||
        fetchers.add(new AssetProfilesEdgeEventFetcher(ctx.getAssetProfileService()));
 | 
			
		||||
        fetchers.add(new CustomerEdgeEventFetcher(ctx.getCustomerService()));
 | 
			
		||||
        fetchers.add(new UsersEdgeEventFetcher(ctx.getUserService()));
 | 
			
		||||
        fetchers.add(new DevicesEdgeEventFetcher(ctx.getDeviceService()));
 | 
			
		||||
        fetchers.add(new AssetsEdgeEventFetcher(ctx.getAssetService()));
 | 
			
		||||
        fetchers.add(new SystemWidgetsBundlesEdgeEventFetcher(ctx.getWidgetsBundleService()));
 | 
			
		||||
        fetchers.add(new TenantWidgetsBundlesEdgeEventFetcher(ctx.getWidgetsBundleService()));
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,47 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright © 2016-2022 The Thingsboard Authors
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.service.edge.rpc.fetch;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.thingsboard.server.common.data.Device;
 | 
			
		||||
import org.thingsboard.server.common.data.EdgeUtils;
 | 
			
		||||
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.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageData;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageLink;
 | 
			
		||||
import org.thingsboard.server.dao.device.DeviceService;
 | 
			
		||||
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class DevicesEdgeEventFetcher extends BasePageableEdgeEventFetcher<Device> {
 | 
			
		||||
 | 
			
		||||
    private final DeviceService deviceService;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    PageData<Device> fetchPageData(TenantId tenantId, Edge edge, PageLink pageLink) {
 | 
			
		||||
        return deviceService.findDevicesByTenantIdAndEdgeId(tenantId, edge.getId(), pageLink);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    EdgeEvent constructEdgeEvent(TenantId tenantId, Edge edge, Device device) {
 | 
			
		||||
        return EdgeUtils.constructEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE,
 | 
			
		||||
                EdgeEventActionType.ADDED, device.getId(), null);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -28,8 +28,6 @@ import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.cluster.TbClusterService;
 | 
			
		||||
import org.thingsboard.server.common.data.Device;
 | 
			
		||||
import org.thingsboard.server.common.data.DeviceProfile;
 | 
			
		||||
import org.thingsboard.server.common.data.EdgeUtils;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityView;
 | 
			
		||||
@ -38,7 +36,6 @@ 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.DeviceId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceProfileId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EdgeId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityIdFactory;
 | 
			
		||||
@ -48,8 +45,6 @@ import org.thingsboard.server.common.data.id.UserId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.WidgetsBundleId;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.DataType;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageData;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageLink;
 | 
			
		||||
import org.thingsboard.server.common.data.relation.EntityRelation;
 | 
			
		||||
import org.thingsboard.server.common.data.relation.EntityRelationsQuery;
 | 
			
		||||
import org.thingsboard.server.common.data.relation.EntitySearchDirection;
 | 
			
		||||
@ -68,7 +63,6 @@ import org.thingsboard.server.dao.widget.WidgetTypeService;
 | 
			
		||||
import org.thingsboard.server.dao.widget.WidgetsBundleService;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.AttributesRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceCredentialsRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceProfileDevicesRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.EntityViewsRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.RelationRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.RuleChainMetadataRequestMsg;
 | 
			
		||||
@ -319,44 +313,6 @@ public class DefaultEdgeRequestsService implements EdgeRequestsService {
 | 
			
		||||
                EdgeEventActionType.CREDENTIALS_UPDATED, userId, null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ListenableFuture<Void> processDeviceProfileDevicesRequestMsg(TenantId tenantId, Edge edge, DeviceProfileDevicesRequestMsg deviceProfileDevicesRequestMsg) {
 | 
			
		||||
        log.trace("[{}] processDeviceProfileDevicesRequestMsg [{}][{}]", tenantId, edge.getName(), deviceProfileDevicesRequestMsg);
 | 
			
		||||
        if (deviceProfileDevicesRequestMsg.getDeviceProfileIdMSB() == 0 || deviceProfileDevicesRequestMsg.getDeviceProfileIdLSB() == 0) {
 | 
			
		||||
            return Futures.immediateFuture(null);
 | 
			
		||||
        }
 | 
			
		||||
        DeviceProfileId deviceProfileId = new DeviceProfileId(new UUID(deviceProfileDevicesRequestMsg.getDeviceProfileIdMSB(), deviceProfileDevicesRequestMsg.getDeviceProfileIdLSB()));
 | 
			
		||||
        DeviceProfile deviceProfileById = deviceProfileService.findDeviceProfileById(tenantId, deviceProfileId);
 | 
			
		||||
        if (deviceProfileById == null) {
 | 
			
		||||
            return Futures.immediateFuture(null);
 | 
			
		||||
        }
 | 
			
		||||
        return syncDevices(tenantId, edge, deviceProfileById.getName());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private ListenableFuture<Void> syncDevices(TenantId tenantId, Edge edge, String deviceType) {
 | 
			
		||||
        log.trace("[{}] syncDevices [{}][{}]", tenantId, edge.getName(), deviceType);
 | 
			
		||||
        List<ListenableFuture<Void>> futures = new ArrayList<>();
 | 
			
		||||
        try {
 | 
			
		||||
            PageLink pageLink = new PageLink(DEFAULT_PAGE_SIZE);
 | 
			
		||||
            PageData<Device> pageData;
 | 
			
		||||
            do {
 | 
			
		||||
                pageData = deviceService.findDevicesByTenantIdAndEdgeIdAndType(tenantId, edge.getId(), deviceType, pageLink);
 | 
			
		||||
                if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) {
 | 
			
		||||
                    log.trace("[{}] [{}] device(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size());
 | 
			
		||||
                    for (Device device : pageData.getData()) {
 | 
			
		||||
                        futures.add(saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.ADDED, device.getId(), null));
 | 
			
		||||
                    }
 | 
			
		||||
                    if (pageData.hasNext()) {
 | 
			
		||||
                        pageLink = pageLink.nextPageLink();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } while (pageData != null && pageData.hasNext());
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            log.error("Exception during loading edge device(s) on sync!", e);
 | 
			
		||||
        }
 | 
			
		||||
        return Futures.transform(Futures.allAsList(futures), voids -> null, dbCallbackExecutorService);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ListenableFuture<Void> processWidgetBundleTypesRequestMsg(TenantId tenantId, Edge edge,
 | 
			
		||||
                                                                     WidgetBundleTypesRequestMsg widgetBundleTypesRequestMsg) {
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.edge.Edge;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.AttributesRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceCredentialsRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceProfileDevicesRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.EntityViewsRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.RelationRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.RuleChainMetadataRequestMsg;
 | 
			
		||||
@ -39,8 +38,6 @@ public interface EdgeRequestsService {
 | 
			
		||||
 | 
			
		||||
    ListenableFuture<Void> processUserCredentialsRequestMsg(TenantId tenantId, Edge edge, UserCredentialsRequestMsg userCredentialsRequestMsg);
 | 
			
		||||
 | 
			
		||||
    ListenableFuture<Void> processDeviceProfileDevicesRequestMsg(TenantId tenantId, Edge edge, DeviceProfileDevicesRequestMsg deviceProfileDevicesRequestMsg);
 | 
			
		||||
 | 
			
		||||
    ListenableFuture<Void> processWidgetBundleTypesRequestMsg(TenantId tenantId, Edge edge, WidgetBundleTypesRequestMsg widgetBundleTypesRequestMsg);
 | 
			
		||||
 | 
			
		||||
    ListenableFuture<Void> processEntityViewsRequestMsg(TenantId tenantId, Edge edge, EntityViewsRequestMsg entityViewsRequestMsg);
 | 
			
		||||
 | 
			
		||||
@ -146,7 +146,7 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
        installation();
 | 
			
		||||
 | 
			
		||||
        edgeImitator = new EdgeImitator("localhost", 7070, edge.getRoutingKey(), edge.getSecret());
 | 
			
		||||
        edgeImitator.expectMessageAmount(16);
 | 
			
		||||
        edgeImitator.expectMessageAmount(21);
 | 
			
		||||
        edgeImitator.connect();
 | 
			
		||||
 | 
			
		||||
        requestEdgeRuleChainMetadata();
 | 
			
		||||
@ -240,10 +240,14 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
 | 
			
		||||
        validateEdgeConfiguration();
 | 
			
		||||
 | 
			
		||||
        // 3 messages - 2 from device profile fetcher (default and thermostat), 1 from device profile controller (thermostat)
 | 
			
		||||
        // 5 messages
 | 
			
		||||
        // - 2 from device profile fetcher (default and thermostat)
 | 
			
		||||
        // - 1 from device fetcher
 | 
			
		||||
        // - 1 from device profile controller (thermostat)
 | 
			
		||||
        // - 1 from device controller (thermostat)
 | 
			
		||||
        validateDeviceProfiles();
 | 
			
		||||
 | 
			
		||||
        // 1 message from device controller
 | 
			
		||||
        // 2 messages - 1 from device fetcher and 1 from device controller
 | 
			
		||||
        validateDevices();
 | 
			
		||||
 | 
			
		||||
        // 2 messages - 1 from asset fetcher and 1 from asset controller
 | 
			
		||||
@ -258,7 +262,10 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
        // 4 messages - 4 messages from fetcher - 2 from system level ('mail', 'mailTemplates') and 2 from admin level ('mail', 'mailTemplates')
 | 
			
		||||
        validateAdminSettings();
 | 
			
		||||
 | 
			
		||||
        // 1 message from asset profile fetcher
 | 
			
		||||
        // 3 messages
 | 
			
		||||
        // - 1 message from asset profile fetcher
 | 
			
		||||
        // - 1 message from asset fetcher
 | 
			
		||||
        // - 1 message from asset controller
 | 
			
		||||
        validateAssetProfiles();
 | 
			
		||||
 | 
			
		||||
        // 1 message from queue fetcher
 | 
			
		||||
@ -278,8 +285,10 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
        List<DeviceProfileUpdateMsg> deviceProfileUpdateMsgList = edgeImitator.findAllMessagesByType(DeviceProfileUpdateMsg.class);
 | 
			
		||||
        // default msg
 | 
			
		||||
        // thermostat msg from fetcher
 | 
			
		||||
        // thermostat msg from contoller
 | 
			
		||||
        Assert.assertEquals(3, deviceProfileUpdateMsgList.size());
 | 
			
		||||
        // thermostat msg from device fetcher
 | 
			
		||||
        // thermostat msg from controller
 | 
			
		||||
        // thermostat msg from creation of device
 | 
			
		||||
        Assert.assertEquals(5, deviceProfileUpdateMsgList.size());
 | 
			
		||||
        Optional<DeviceProfileUpdateMsg> thermostatProfileUpdateMsgOpt =
 | 
			
		||||
                deviceProfileUpdateMsgList.stream().filter(dfum -> THERMOSTAT_DEVICE_PROFILE_NAME.equals(dfum.getName())).findAny();
 | 
			
		||||
        Assert.assertTrue(thermostatProfileUpdateMsgOpt.isPresent());
 | 
			
		||||
@ -296,9 +305,13 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validateDevices() throws Exception {
 | 
			
		||||
        Optional<DeviceUpdateMsg> deviceUpdateMsgOpt = edgeImitator.findMessageByType(DeviceUpdateMsg.class);
 | 
			
		||||
        Assert.assertTrue(deviceUpdateMsgOpt.isPresent());
 | 
			
		||||
        DeviceUpdateMsg deviceUpdateMsg = deviceUpdateMsgOpt.get();
 | 
			
		||||
        List<DeviceUpdateMsg> deviceUpdateMsgs = edgeImitator.findAllMessagesByType(DeviceUpdateMsg.class);
 | 
			
		||||
        Assert.assertEquals(2, deviceUpdateMsgs.size());
 | 
			
		||||
        validateDevice(deviceUpdateMsgs.get(0));
 | 
			
		||||
        validateDevice(deviceUpdateMsgs.get(1));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validateDevice(DeviceUpdateMsg deviceUpdateMsg) throws Exception {
 | 
			
		||||
        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
 | 
			
		||||
        UUID deviceUUID = new UUID(deviceUpdateMsg.getIdMSB(), deviceUpdateMsg.getIdLSB());
 | 
			
		||||
        Device device = doGet("/api/device/" + deviceUUID, Device.class);
 | 
			
		||||
@ -306,6 +319,8 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
        List<Device> edgeDevices = doGetTypedWithPageLink("/api/edge/" + edge.getUuidId() + "/devices?",
 | 
			
		||||
                new TypeReference<PageData<Device>>() {}, new PageLink(100)).getData();
 | 
			
		||||
        Assert.assertTrue(edgeDevices.contains(device));
 | 
			
		||||
 | 
			
		||||
        testAutoGeneratedCodeByProtobuf(deviceUpdateMsg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validateAssets() throws Exception {
 | 
			
		||||
@ -392,9 +407,9 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validateAssetProfiles() throws Exception {
 | 
			
		||||
        Optional<AssetProfileUpdateMsg> assetProfileUpdateMsgOpt = edgeImitator.findMessageByType(AssetProfileUpdateMsg.class);
 | 
			
		||||
        Assert.assertTrue(assetProfileUpdateMsgOpt.isPresent());
 | 
			
		||||
        AssetProfileUpdateMsg assetProfileUpdateMsg = assetProfileUpdateMsgOpt.get();
 | 
			
		||||
        List<AssetProfileUpdateMsg> assetProfileUpdateMsgs = edgeImitator.findAllMessagesByType(AssetProfileUpdateMsg.class);
 | 
			
		||||
        Assert.assertEquals(3, assetProfileUpdateMsgs.size());
 | 
			
		||||
        AssetProfileUpdateMsg assetProfileUpdateMsg = assetProfileUpdateMsgs.get(0);
 | 
			
		||||
        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetProfileUpdateMsg.getMsgType());
 | 
			
		||||
        UUID assetProfileUUID = new UUID(assetProfileUpdateMsg.getIdMSB(), assetProfileUpdateMsg.getIdLSB());
 | 
			
		||||
        AssetProfile assetProfile = doGet("/api/assetProfile/" + assetProfileUUID, AssetProfile.class);
 | 
			
		||||
@ -439,17 +454,24 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
 | 
			
		||||
        // create device and assign to edge
 | 
			
		||||
        Device savedDevice = saveDevice(StringUtils.randomAlphanumeric(15), thermostatDeviceProfile.getName());
 | 
			
		||||
        edgeImitator.expectMessageAmount(1);
 | 
			
		||||
        edgeImitator.expectMessageAmount(2); // device and device profile messages
 | 
			
		||||
        doPost("/api/edge/" + edge.getUuidId()
 | 
			
		||||
                + "/device/" + savedDevice.getUuidId(), Device.class);
 | 
			
		||||
        Assert.assertTrue(edgeImitator.waitForMessages());
 | 
			
		||||
        AbstractMessage latestMessage = edgeImitator.getLatestMessage();
 | 
			
		||||
        Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
 | 
			
		||||
        DeviceUpdateMsg deviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
 | 
			
		||||
        Optional<DeviceUpdateMsg> deviceUpdateMsgOpt = edgeImitator.findMessageByType(DeviceUpdateMsg.class);
 | 
			
		||||
        Assert.assertTrue(deviceUpdateMsgOpt.isPresent());
 | 
			
		||||
        DeviceUpdateMsg deviceUpdateMsg = deviceUpdateMsgOpt.get();
 | 
			
		||||
        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getUuidId().getMostSignificantBits(), deviceUpdateMsg.getIdMSB());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getUuidId().getLeastSignificantBits(), deviceUpdateMsg.getIdLSB());
 | 
			
		||||
 | 
			
		||||
        Optional<DeviceProfileUpdateMsg> deviceProfileUpdateMsgOpt = edgeImitator.findMessageByType(DeviceProfileUpdateMsg.class);
 | 
			
		||||
        Assert.assertTrue(deviceProfileUpdateMsgOpt.isPresent());
 | 
			
		||||
        DeviceProfileUpdateMsg deviceProfileUpdateMsg = deviceProfileUpdateMsgOpt.get();
 | 
			
		||||
        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
 | 
			
		||||
        Assert.assertEquals(thermostatDeviceProfile.getUuidId().getMostSignificantBits(), deviceProfileUpdateMsg.getIdMSB());
 | 
			
		||||
        Assert.assertEquals(thermostatDeviceProfile.getUuidId().getLeastSignificantBits(), deviceProfileUpdateMsg.getIdLSB());
 | 
			
		||||
 | 
			
		||||
        // update device
 | 
			
		||||
        edgeImitator.expectMessageAmount(1);
 | 
			
		||||
        savedDevice.setFirmwareId(firmwareOtaPackageInfo.getId());
 | 
			
		||||
@ -463,7 +485,7 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
			
		||||
 | 
			
		||||
        savedDevice = doPost("/api/device", savedDevice, Device.class);
 | 
			
		||||
        Assert.assertTrue(edgeImitator.waitForMessages());
 | 
			
		||||
        latestMessage = edgeImitator.getLatestMessage();
 | 
			
		||||
        AbstractMessage latestMessage = edgeImitator.getLatestMessage();
 | 
			
		||||
        Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
 | 
			
		||||
        deviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
 | 
			
		||||
        Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
 | 
			
		||||
 | 
			
		||||
@ -44,6 +44,7 @@ import org.thingsboard.server.common.transport.adaptor.JsonConverter;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.AttributesRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceCredentialsRequestMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceCredentialsUpdateMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceProfileUpdateMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceRpcCallMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.DeviceUpdateMsg;
 | 
			
		||||
import org.thingsboard.server.gen.edge.v1.EntityDataProto;
 | 
			
		||||
@ -88,20 +89,27 @@ abstract public class BaseDeviceEdgeTest extends AbstractEdgeTest {
 | 
			
		||||
        Assert.assertFalse(edgeImitator.waitForMessages(1));
 | 
			
		||||
 | 
			
		||||
        // create device #2 and assign to edge
 | 
			
		||||
        edgeImitator.expectMessageAmount(1);
 | 
			
		||||
        edgeImitator.expectMessageAmount(2);
 | 
			
		||||
        savedDevice = saveDevice("Edge Device 3", "Default");
 | 
			
		||||
        doPost("/api/edge/" + edge.getUuidId()
 | 
			
		||||
                + "/device/" + savedDevice.getUuidId(), Device.class);
 | 
			
		||||
        Assert.assertTrue(edgeImitator.waitForMessages());
 | 
			
		||||
        latestMessage = edgeImitator.getLatestMessage();
 | 
			
		||||
        Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
 | 
			
		||||
        deviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
 | 
			
		||||
        Optional<DeviceUpdateMsg> deviceUpdateMsgOpt = edgeImitator.findMessageByType(DeviceUpdateMsg.class);
 | 
			
		||||
        Assert.assertTrue(deviceUpdateMsgOpt.isPresent());
 | 
			
		||||
        deviceUpdateMsg = deviceUpdateMsgOpt.get();
 | 
			
		||||
        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getUuidId().getMostSignificantBits(), deviceUpdateMsg.getIdMSB());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getUuidId().getLeastSignificantBits(), deviceUpdateMsg.getIdLSB());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getName(), deviceUpdateMsg.getName());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getType(), deviceUpdateMsg.getType());
 | 
			
		||||
 | 
			
		||||
        Optional<DeviceProfileUpdateMsg> deviceProfileUpdateMsgOpt = edgeImitator.findMessageByType(DeviceProfileUpdateMsg.class);
 | 
			
		||||
        Assert.assertTrue(deviceProfileUpdateMsgOpt.isPresent());
 | 
			
		||||
        DeviceProfileUpdateMsg deviceProfileUpdateMsg = deviceProfileUpdateMsgOpt.get();
 | 
			
		||||
        Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getDeviceProfileId().getId().getMostSignificantBits(), deviceProfileUpdateMsg.getIdMSB());
 | 
			
		||||
        Assert.assertEquals(savedDevice.getDeviceProfileId().getId().getLeastSignificantBits(), deviceProfileUpdateMsg.getIdLSB());
 | 
			
		||||
 | 
			
		||||
        // assign device #2 to customer
 | 
			
		||||
        edgeImitator.expectMessageAmount(1);
 | 
			
		||||
        Customer customer = new Customer();
 | 
			
		||||
 | 
			
		||||
@ -400,6 +400,7 @@ message DeviceCredentialsRequestMsg {
 | 
			
		||||
  int64 deviceIdLSB = 2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// deprecated
 | 
			
		||||
message DeviceProfileDevicesRequestMsg {
 | 
			
		||||
  int64 deviceProfileIdMSB = 1;
 | 
			
		||||
  int64 deviceProfileIdLSB = 2;
 | 
			
		||||
@ -509,7 +510,7 @@ message UplinkMsg {
 | 
			
		||||
  repeated UserCredentialsRequestMsg userCredentialsRequestMsg = 10;
 | 
			
		||||
  repeated DeviceCredentialsRequestMsg deviceCredentialsRequestMsg = 11;
 | 
			
		||||
  repeated DeviceRpcCallMsg deviceRpcCallMsg = 12;
 | 
			
		||||
  repeated DeviceProfileDevicesRequestMsg deviceProfileDevicesRequestMsg = 13;
 | 
			
		||||
  repeated DeviceProfileDevicesRequestMsg deviceProfileDevicesRequestMsg = 13; // deprecated
 | 
			
		||||
  repeated WidgetBundleTypesRequestMsg widgetBundleTypesRequestMsg = 14;
 | 
			
		||||
  repeated EntityViewsRequestMsg entityViewsRequestMsg = 15;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user