From 7f649e33c39daa68f3948652a593b05ffdfa302c Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Tue, 12 Sep 2023 19:24:28 +0300 Subject: [PATCH] Edge: added singleton mode and configuration version fields for rule node proto --- .../rule/AbstractRuleChainMetadataConstructor.java | 2 ++ .../thingsboard/server/edge/RuleChainEdgeTest.java | 13 ++++++++++--- common/edge-api/src/main/proto/edge.proto | 2 ++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/rule/AbstractRuleChainMetadataConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/rule/AbstractRuleChainMetadataConstructor.java index 0099d85bcd..f33f0f84e8 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/rule/AbstractRuleChainMetadataConstructor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/rule/AbstractRuleChainMetadataConstructor.java @@ -97,6 +97,8 @@ public abstract class AbstractRuleChainMetadataConstructor implements RuleChainM .setDebugMode(node.isDebugMode()) .setConfiguration(JacksonUtil.OBJECT_MAPPER.writeValueAsString(node.getConfiguration())) .setAdditionalInfo(JacksonUtil.OBJECT_MAPPER.writeValueAsString(node.getAdditionalInfo())) + .setSingletonMode(node.isSingletonMode()) + .setConfigurationVersion(node.getConfigurationVersion()) .build(); } diff --git a/application/src/test/java/org/thingsboard/server/edge/RuleChainEdgeTest.java b/application/src/test/java/org/thingsboard/server/edge/RuleChainEdgeTest.java index 83b2370cf0..228a85fc91 100644 --- a/application/src/test/java/org/thingsboard/server/edge/RuleChainEdgeTest.java +++ b/application/src/test/java/org/thingsboard/server/edge/RuleChainEdgeTest.java @@ -32,6 +32,7 @@ import org.thingsboard.server.dao.service.DaoSqlTest; import org.thingsboard.server.gen.edge.v1.RuleChainMetadataRequestMsg; import org.thingsboard.server.gen.edge.v1.RuleChainMetadataUpdateMsg; import org.thingsboard.server.gen.edge.v1.RuleChainUpdateMsg; +import org.thingsboard.server.gen.edge.v1.RuleNodeProto; import org.thingsboard.server.gen.edge.v1.UpdateMsgType; import org.thingsboard.server.gen.edge.v1.UplinkMsg; @@ -46,6 +47,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @DaoSqlTest public class RuleChainEdgeTest extends AbstractEdgeTest { + private static final int CONFIGURATION_VERSION = 5; + @Test public void testRuleChains() throws Exception { // create rule chain @@ -138,6 +141,10 @@ public class RuleChainEdgeTest extends AbstractEdgeTest { RuleChainId receivedRuleChainId = new RuleChainId(new UUID(ruleChainMetadataUpdateMsg.getRuleChainIdMSB(), ruleChainMetadataUpdateMsg.getRuleChainIdLSB())); Assert.assertEquals(ruleChainId, receivedRuleChainId); + + for (RuleNodeProto ruleNodeProto : ruleChainMetadataUpdateMsg.getNodesList()) { + Assert.assertEquals(CONFIGURATION_VERSION, ruleNodeProto.getConfigurationVersion()); + } } private void createRuleChainMetadata(RuleChain ruleChain) { @@ -147,7 +154,7 @@ public class RuleChainEdgeTest extends AbstractEdgeTest { RuleNode ruleNode1 = new RuleNode(); ruleNode1.setName("name1"); ruleNode1.setType(org.thingsboard.rule.engine.metadata.TbGetAttributesNode.class.getName()); - ruleNode1.setConfigurationVersion(TbGetAttributesNode.class.getAnnotation(org.thingsboard.rule.engine.api.RuleNode.class).version()); + ruleNode1.setConfigurationVersion(CONFIGURATION_VERSION); TbGetAttributesNodeConfiguration configuration = new TbGetAttributesNodeConfiguration(); configuration.setFetchTo(TbMsgSource.METADATA); configuration.setServerAttributeNames(Collections.singletonList("serverAttributeKey2")); @@ -156,13 +163,13 @@ public class RuleChainEdgeTest extends AbstractEdgeTest { RuleNode ruleNode2 = new RuleNode(); ruleNode2.setName("name2"); ruleNode2.setType(org.thingsboard.rule.engine.metadata.TbGetAttributesNode.class.getName()); - ruleNode2.setConfigurationVersion(TbGetAttributesNode.class.getAnnotation(org.thingsboard.rule.engine.api.RuleNode.class).version()); + ruleNode2.setConfigurationVersion(CONFIGURATION_VERSION); ruleNode2.setConfiguration(JacksonUtil.valueToTree(configuration)); RuleNode ruleNode3 = new RuleNode(); ruleNode3.setName("name3"); ruleNode3.setType(org.thingsboard.rule.engine.metadata.TbGetAttributesNode.class.getName()); - ruleNode3.setConfigurationVersion(TbGetAttributesNode.class.getAnnotation(org.thingsboard.rule.engine.api.RuleNode.class).version()); + ruleNode3.setConfigurationVersion(CONFIGURATION_VERSION); ruleNode3.setConfiguration(JacksonUtil.valueToTree(configuration)); List ruleNodes = new ArrayList<>(); diff --git a/common/edge-api/src/main/proto/edge.proto b/common/edge-api/src/main/proto/edge.proto index 50d5ad3c7f..b316d5b3c4 100644 --- a/common/edge-api/src/main/proto/edge.proto +++ b/common/edge-api/src/main/proto/edge.proto @@ -163,6 +163,8 @@ message RuleNodeProto { bool debugMode = 5; string configuration = 6; string additionalInfo = 7; + bool singletonMode = 8; + int32 configurationVersion = 9; } message NodeConnectionInfoProto {