diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/delay/TbMsgDeDuplicateNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/delay/TbMsgDeDuplicateNode.java index ca93be30e1..8ec52a7c70 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/delay/TbMsgDeDuplicateNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/delay/TbMsgDeDuplicateNode.java @@ -51,12 +51,12 @@ import java.util.stream.Collectors; "FIRST - return first message that arrived during de-duplication period.

" + "LAST - return last message that arrived during de-duplication period.

" + "ALL - return all messages as a single JSON array message. Where each element represents object with msg and metadata inner properties.

" + - "By default rule node de-duplicates messages by message originator, however, there is an option to de-duplicate messages independently from the incoming message's originator. " + - "In case of the de-duplication strategy set to ALL and de-duplicates messages by message originator checkbox set to false, you must configure the Queue Name and Message Type for the output array message. " + + "By default rule node De-duplicate messages by message originator, however, there is an option to de-duplicate messages independently from the incoming message's originator. " + + "In case of the De-duplicate strategy set to ALL and De-duplicate messages by message originator checkbox set to false, you must configure the Queue Name and Out Message Type for the output array message. " + "Also in this case the output message originator will be set to the current tenant id.

", icon = "pause", uiResources = {"static/rulenode/rulenode-core-config.js"}, - configDirective = "" + configDirective = "tbActionNodeMsgDeDuplicateConfig" ) @Slf4j public class TbMsgDeDuplicateNode implements TbNode { diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbMsgDeDuplicateNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbMsgDeDuplicateNodeTest.java index 5411dda07b..db56f6958f 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbMsgDeDuplicateNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbMsgDeDuplicateNodeTest.java @@ -70,10 +70,9 @@ public class TbMsgDeDuplicateNodeTest { private TbContext ctx; - private ExecutorService executorService = Executors.newSingleThreadExecutor(ThingsBoardThreadFactory.forName("de-duplication-node-test")); + private final ExecutorService executorService = Executors.newSingleThreadExecutor(ThingsBoardThreadFactory.forName("de-duplication-node-test")); private TenantId tenantId; - private RuleNodeId ruleNodeId; private TbMsgDeDuplicateNode node; private TbMsgDeDuplicateNodeConfiguration config; @@ -84,14 +83,13 @@ public class TbMsgDeDuplicateNodeTest { private int scheduleCount; @BeforeEach - @SuppressWarnings("unchecked") public void init() throws TbNodeException { ctx = mock(TbContext.class); awaitTellSelfLatch = new CountDownLatch(1); awaitAllMsgsProcessedLatch = new CountDownLatch(1); tenantId = TenantId.fromUUID(UUID.randomUUID()); - ruleNodeId = new RuleNodeId(UUID.randomUUID()); + RuleNodeId ruleNodeId = new RuleNodeId(UUID.randomUUID()); when(ctx.getSelfId()).thenReturn(ruleNodeId); when(ctx.getTenantId()).thenReturn(tenantId); @@ -129,9 +127,7 @@ public class TbMsgDeDuplicateNodeTest { @AfterEach public void destroy() { - if (executorService != null) { - executorService.shutdown(); - } + executorService.shutdown(); node.destroy(); } @@ -275,6 +271,8 @@ public class TbMsgDeDuplicateNodeTest { TbMsg outMessage = newMsgCaptor.getAllValues().get(0); Assertions.assertEquals(getMergedData(inputMsgs), outMessage.getData()); Assertions.assertEquals(tenantId, outMessage.getOriginator()); + Assertions.assertEquals(config.getQueueName(), outMessage.getQueueName()); + Assertions.assertEquals(config.getOutMsgType(), outMessage.getType()); } private List createTbMsgs(DeviceId deviceId) {