Edge: added singleton mode and configuration version fields for rule node proto

This commit is contained in:
Volodymyr Babak 2023-09-12 19:24:28 +03:00
parent cc441b4148
commit 7f649e33c3
3 changed files with 14 additions and 3 deletions

View File

@ -97,6 +97,8 @@ public abstract class AbstractRuleChainMetadataConstructor implements RuleChainM
.setDebugMode(node.isDebugMode()) .setDebugMode(node.isDebugMode())
.setConfiguration(JacksonUtil.OBJECT_MAPPER.writeValueAsString(node.getConfiguration())) .setConfiguration(JacksonUtil.OBJECT_MAPPER.writeValueAsString(node.getConfiguration()))
.setAdditionalInfo(JacksonUtil.OBJECT_MAPPER.writeValueAsString(node.getAdditionalInfo())) .setAdditionalInfo(JacksonUtil.OBJECT_MAPPER.writeValueAsString(node.getAdditionalInfo()))
.setSingletonMode(node.isSingletonMode())
.setConfigurationVersion(node.getConfigurationVersion())
.build(); .build();
} }

View File

@ -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.RuleChainMetadataRequestMsg;
import org.thingsboard.server.gen.edge.v1.RuleChainMetadataUpdateMsg; import org.thingsboard.server.gen.edge.v1.RuleChainMetadataUpdateMsg;
import org.thingsboard.server.gen.edge.v1.RuleChainUpdateMsg; 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.UpdateMsgType;
import org.thingsboard.server.gen.edge.v1.UplinkMsg; import org.thingsboard.server.gen.edge.v1.UplinkMsg;
@ -46,6 +47,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@DaoSqlTest @DaoSqlTest
public class RuleChainEdgeTest extends AbstractEdgeTest { public class RuleChainEdgeTest extends AbstractEdgeTest {
private static final int CONFIGURATION_VERSION = 5;
@Test @Test
public void testRuleChains() throws Exception { public void testRuleChains() throws Exception {
// create rule chain // create rule chain
@ -138,6 +141,10 @@ public class RuleChainEdgeTest extends AbstractEdgeTest {
RuleChainId receivedRuleChainId = RuleChainId receivedRuleChainId =
new RuleChainId(new UUID(ruleChainMetadataUpdateMsg.getRuleChainIdMSB(), ruleChainMetadataUpdateMsg.getRuleChainIdLSB())); new RuleChainId(new UUID(ruleChainMetadataUpdateMsg.getRuleChainIdMSB(), ruleChainMetadataUpdateMsg.getRuleChainIdLSB()));
Assert.assertEquals(ruleChainId, receivedRuleChainId); Assert.assertEquals(ruleChainId, receivedRuleChainId);
for (RuleNodeProto ruleNodeProto : ruleChainMetadataUpdateMsg.getNodesList()) {
Assert.assertEquals(CONFIGURATION_VERSION, ruleNodeProto.getConfigurationVersion());
}
} }
private void createRuleChainMetadata(RuleChain ruleChain) { private void createRuleChainMetadata(RuleChain ruleChain) {
@ -147,7 +154,7 @@ public class RuleChainEdgeTest extends AbstractEdgeTest {
RuleNode ruleNode1 = new RuleNode(); RuleNode ruleNode1 = new RuleNode();
ruleNode1.setName("name1"); ruleNode1.setName("name1");
ruleNode1.setType(org.thingsboard.rule.engine.metadata.TbGetAttributesNode.class.getName()); 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(); TbGetAttributesNodeConfiguration configuration = new TbGetAttributesNodeConfiguration();
configuration.setFetchTo(TbMsgSource.METADATA); configuration.setFetchTo(TbMsgSource.METADATA);
configuration.setServerAttributeNames(Collections.singletonList("serverAttributeKey2")); configuration.setServerAttributeNames(Collections.singletonList("serverAttributeKey2"));
@ -156,13 +163,13 @@ public class RuleChainEdgeTest extends AbstractEdgeTest {
RuleNode ruleNode2 = new RuleNode(); RuleNode ruleNode2 = new RuleNode();
ruleNode2.setName("name2"); ruleNode2.setName("name2");
ruleNode2.setType(org.thingsboard.rule.engine.metadata.TbGetAttributesNode.class.getName()); 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)); ruleNode2.setConfiguration(JacksonUtil.valueToTree(configuration));
RuleNode ruleNode3 = new RuleNode(); RuleNode ruleNode3 = new RuleNode();
ruleNode3.setName("name3"); ruleNode3.setName("name3");
ruleNode3.setType(org.thingsboard.rule.engine.metadata.TbGetAttributesNode.class.getName()); 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)); ruleNode3.setConfiguration(JacksonUtil.valueToTree(configuration));
List<RuleNode> ruleNodes = new ArrayList<>(); List<RuleNode> ruleNodes = new ArrayList<>();

View File

@ -163,6 +163,8 @@ message RuleNodeProto {
bool debugMode = 5; bool debugMode = 5;
string configuration = 6; string configuration = 6;
string additionalInfo = 7; string additionalInfo = 7;
bool singletonMode = 8;
int32 configurationVersion = 9;
} }
message NodeConnectionInfoProto { message NodeConnectionInfoProto {