Merge pull request #12565 from jekka001/error-processing-resources
Fix error in resource processing
This commit is contained in:
commit
8fc7ae2897
@ -53,6 +53,9 @@ public abstract class BaseResourceProcessor extends BaseEdgeProcessor {
|
|||||||
}
|
}
|
||||||
String resourceKey = resource.getResourceKey();
|
String resourceKey = resource.getResourceKey();
|
||||||
ResourceType resourceType = resource.getResourceType();
|
ResourceType resourceType = resource.getResourceType();
|
||||||
|
if (!created && !resourceType.isUpdatable()) {
|
||||||
|
resource.setData(null);
|
||||||
|
}
|
||||||
PageDataIterable<TbResource> resourcesIterable = new PageDataIterable<>(
|
PageDataIterable<TbResource> resourcesIterable = new PageDataIterable<>(
|
||||||
link -> edgeCtx.getResourceService().findTenantResourcesByResourceTypeAndPageLink(tenantId, resourceType, link), 1024);
|
link -> edgeCtx.getResourceService().findTenantResourcesByResourceTypeAndPageLink(tenantId, resourceType, link), 1024);
|
||||||
for (TbResource tbResource : resourcesIterable) {
|
for (TbResource tbResource : resourcesIterable) {
|
||||||
|
|||||||
@ -17,6 +17,7 @@ package org.thingsboard.server.edge;
|
|||||||
|
|
||||||
import com.datastax.oss.driver.api.core.uuid.Uuids;
|
import com.datastax.oss.driver.api.core.uuid.Uuids;
|
||||||
import com.google.protobuf.AbstractMessage;
|
import com.google.protobuf.AbstractMessage;
|
||||||
|
import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.thingsboard.common.util.JacksonUtil;
|
import org.thingsboard.common.util.JacksonUtil;
|
||||||
@ -98,30 +99,23 @@ public class ResourceEdgeTest extends AbstractEdgeTest {
|
|||||||
public void testSendResourceToCloud() throws Exception {
|
public void testSendResourceToCloud() throws Exception {
|
||||||
TbResource tbResource = createTbResource();
|
TbResource tbResource = createTbResource();
|
||||||
UUID uuid = Uuids.timeBased();
|
UUID uuid = Uuids.timeBased();
|
||||||
|
UplinkMsg uplinkMsg = getUplinkMsg(uuid, tbResource, UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE);
|
||||||
|
|
||||||
UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder();
|
checkResourceOnCloud(uplinkMsg, uuid, tbResource.getTitle());
|
||||||
ResourceUpdateMsg.Builder resourceUpdateMsgBuilder = ResourceUpdateMsg.newBuilder();
|
}
|
||||||
resourceUpdateMsgBuilder.setIdMSB(uuid.getMostSignificantBits());
|
|
||||||
resourceUpdateMsgBuilder.setIdLSB(uuid.getLeastSignificantBits());
|
|
||||||
resourceUpdateMsgBuilder.setEntity(JacksonUtil.toString(tbResource));
|
|
||||||
resourceUpdateMsgBuilder.setMsgType(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE);
|
|
||||||
testAutoGeneratedCodeByProtobuf(resourceUpdateMsgBuilder);
|
|
||||||
uplinkMsgBuilder.addResourceUpdateMsg(resourceUpdateMsgBuilder.build());
|
|
||||||
|
|
||||||
testAutoGeneratedCodeByProtobuf(uplinkMsgBuilder);
|
@Test
|
||||||
|
public void testUpdateResourceTitleOnCloud() throws Exception {
|
||||||
|
TbResource tbResource = createTbResource();
|
||||||
|
UUID uuid = Uuids.timeBased();
|
||||||
|
UplinkMsg uplinkMsg = getUplinkMsg(uuid, tbResource, UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE);
|
||||||
|
|
||||||
edgeImitator.expectResponsesAmount(1);
|
checkResourceOnCloud(uplinkMsg, uuid, tbResource.getTitle());
|
||||||
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
|
||||||
|
|
||||||
Assert.assertTrue(edgeImitator.waitForResponses());
|
tbResource.setTitle("Updated Edge Test Resource");
|
||||||
|
UplinkMsg updatedUplinkMsg = getUplinkMsg(uuid, tbResource, UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE);
|
||||||
|
|
||||||
UplinkResponseMsg latestResponseMsg = edgeImitator.getLatestResponseMsg();
|
checkResourceOnCloud(updatedUplinkMsg, uuid, tbResource.getTitle());
|
||||||
Assert.assertTrue(latestResponseMsg.getSuccess());
|
|
||||||
|
|
||||||
TbResource tb = doGet("/api/resource/" + uuid, TbResource.class);
|
|
||||||
Assert.assertNotNull(tb);
|
|
||||||
Assert.assertEquals("Edge Test Resource", tb.getName());
|
|
||||||
Assert.assertEquals(TEST_DATA, tb.getEncodedData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -134,21 +128,12 @@ public class ResourceEdgeTest extends AbstractEdgeTest {
|
|||||||
|
|
||||||
UUID uuid = Uuids.timeBased();
|
UUID uuid = Uuids.timeBased();
|
||||||
|
|
||||||
UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder();
|
UplinkMsg uplinkMsg = getUplinkMsg(uuid, resource, UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE);
|
||||||
ResourceUpdateMsg.Builder resourceUpdateMsgBuilder = ResourceUpdateMsg.newBuilder();
|
|
||||||
resourceUpdateMsgBuilder.setIdMSB(uuid.getMostSignificantBits());
|
|
||||||
resourceUpdateMsgBuilder.setIdLSB(uuid.getLeastSignificantBits());
|
|
||||||
resourceUpdateMsgBuilder.setEntity(JacksonUtil.toString(resource));
|
|
||||||
resourceUpdateMsgBuilder.setMsgType(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE);
|
|
||||||
testAutoGeneratedCodeByProtobuf(resourceUpdateMsgBuilder);
|
|
||||||
uplinkMsgBuilder.addResourceUpdateMsg(resourceUpdateMsgBuilder.build());
|
|
||||||
|
|
||||||
testAutoGeneratedCodeByProtobuf(uplinkMsgBuilder);
|
|
||||||
|
|
||||||
edgeImitator.expectResponsesAmount(1);
|
edgeImitator.expectResponsesAmount(1);
|
||||||
edgeImitator.expectMessageAmount(1);
|
edgeImitator.expectMessageAmount(1);
|
||||||
|
|
||||||
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
edgeImitator.sendUplinkMsg(uplinkMsg);
|
||||||
|
|
||||||
Assert.assertTrue(edgeImitator.waitForResponses());
|
Assert.assertTrue(edgeImitator.waitForResponses());
|
||||||
Assert.assertTrue(edgeImitator.waitForMessages());
|
Assert.assertTrue(edgeImitator.waitForMessages());
|
||||||
@ -177,4 +162,35 @@ public class ResourceEdgeTest extends AbstractEdgeTest {
|
|||||||
tbResource.setEncodedData(TEST_DATA);
|
tbResource.setEncodedData(TEST_DATA);
|
||||||
return tbResource;
|
return tbResource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private UplinkMsg getUplinkMsg(UUID uuid, TbResource tbResource, UpdateMsgType updateMsgType) throws InvalidProtocolBufferException {
|
||||||
|
UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder();
|
||||||
|
ResourceUpdateMsg.Builder resourceUpdateMsgBuilder = ResourceUpdateMsg.newBuilder();
|
||||||
|
resourceUpdateMsgBuilder.setIdMSB(uuid.getMostSignificantBits());
|
||||||
|
resourceUpdateMsgBuilder.setIdLSB(uuid.getLeastSignificantBits());
|
||||||
|
resourceUpdateMsgBuilder.setEntity(JacksonUtil.toString(tbResource));
|
||||||
|
resourceUpdateMsgBuilder.setMsgType(updateMsgType);
|
||||||
|
testAutoGeneratedCodeByProtobuf(resourceUpdateMsgBuilder);
|
||||||
|
uplinkMsgBuilder.addResourceUpdateMsg(resourceUpdateMsgBuilder.build());
|
||||||
|
|
||||||
|
testAutoGeneratedCodeByProtobuf(uplinkMsgBuilder);
|
||||||
|
|
||||||
|
return uplinkMsgBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkResourceOnCloud(UplinkMsg uplinkMsg, UUID uuid, String resourceTitle) throws Exception {
|
||||||
|
edgeImitator.expectResponsesAmount(1);
|
||||||
|
edgeImitator.sendUplinkMsg(uplinkMsg);
|
||||||
|
|
||||||
|
Assert.assertTrue(edgeImitator.waitForResponses());
|
||||||
|
|
||||||
|
UplinkResponseMsg latestResponseMsg = edgeImitator.getLatestResponseMsg();
|
||||||
|
Assert.assertTrue(latestResponseMsg.getSuccess());
|
||||||
|
|
||||||
|
TbResource tb = doGet("/api/resource/" + uuid, TbResource.class);
|
||||||
|
Assert.assertNotNull(tb);
|
||||||
|
Assert.assertEquals(resourceTitle, tb.getName());
|
||||||
|
Assert.assertEquals(TEST_DATA, tb.getEncodedData());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user