Browse Source

updated tests and default rule node configuration

pull/7984/head
ShvaykaD 4 years ago
parent
commit
97f01314f4
  1. 1
      common/cache/src/main/java/org/thingsboard/server/cache/rule/DefaultRuleNodeCache.java
  2. 3
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/deduplication/TbMsgDeduplicationNodeConfiguration.java
  3. 11
      rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbMsgDeduplicationNodeTest.java

1
common/cache/src/main/java/org/thingsboard/server/cache/rule/DefaultRuleNodeCache.java

@ -28,7 +28,6 @@ import java.util.TreeSet;
@Service
@ConditionalOnProperty(prefix = "cache", value = "type", havingValue = "caffeine", matchIfMissing = true)
@Slf4j
public class DefaultRuleNodeCache implements RuleNodeCache {
private final Map<String, Set<byte[]>> cache;

3
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/deduplication/TbMsgDeduplicationNodeConfiguration.java

@ -21,6 +21,8 @@ import org.thingsboard.rule.engine.api.NodeConfiguration;
@Data
public class TbMsgDeduplicationNodeConfiguration implements NodeConfiguration<TbMsgDeduplicationNodeConfiguration> {
private static final String DEFAULT_QUEUE_NAME = "Main";
private int interval;
private DeduplicationId id;
private DeduplicationStrategy strategy;
@ -39,6 +41,7 @@ public class TbMsgDeduplicationNodeConfiguration implements NodeConfiguration<Tb
configuration.setInterval(60);
configuration.setId(DeduplicationId.ORIGINATOR);
configuration.setStrategy(DeduplicationStrategy.FIRST);
configuration.setQueueName(DEFAULT_QUEUE_NAME);
configuration.setMaxPendingMsgs(100);
configuration.setMaxRetries(3);
return configuration;

11
rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbMsgDeduplicationNodeTest.java

@ -17,6 +17,7 @@ package org.thingsboard.rule.engine.action;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.protobuf.ByteString;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
@ -54,6 +55,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@ -175,7 +177,7 @@ public class TbMsgDeduplicationNodeTest {
verify(ctx, times(1)).tellFailure(eq(msgToReject), any());
verify(node, times(msgCount + wantedNumberOfTellSelfInvocation + 1)).onMsg(eq(ctx), any());
verify(ctx, times(1)).enqueueForTellNext(newMsgCaptor.capture(), eq(TbRelationTypes.SUCCESS), successCaptor.capture(), failureCaptor.capture());
Assertions.assertEquals(inputMsgs.get(0), newMsgCaptor.getValue());
Assertions.assertEquals(TbMsg.toByteString(inputMsgs.get(0)), TbMsg.toByteString(newMsgCaptor.getValue()));
}
@Test
@ -214,7 +216,7 @@ public class TbMsgDeduplicationNodeTest {
verify(ctx, times(1)).tellFailure(eq(msgToReject), any());
verify(node, times(msgCount + wantedNumberOfTellSelfInvocation + 1)).onMsg(eq(ctx), any());
verify(ctx, times(1)).enqueueForTellNext(newMsgCaptor.capture(), eq(TbRelationTypes.SUCCESS), successCaptor.capture(), failureCaptor.capture());
Assertions.assertEquals(msgWithLatestTs, newMsgCaptor.getValue());
Assertions.assertEquals(TbMsg.toByteString(msgWithLatestTs), TbMsg.toByteString(newMsgCaptor.getValue()));
}
@Test
@ -351,8 +353,9 @@ public class TbMsgDeduplicationNodeTest {
List<TbMsg> resultMsgs = newMsgCaptor.getAllValues();
Assertions.assertEquals(2, resultMsgs.size());
Assertions.assertTrue(resultMsgs.contains(msgWithLatestTsInFirstPack));
Assertions.assertTrue(resultMsgs.contains(msgWithLatestTsInSecondPack));
List<ByteString> resultMsgsByteStrings = resultMsgs.stream().map(TbMsg::toByteString).collect(Collectors.toList());
Assertions.assertTrue(resultMsgsByteStrings.contains(TbMsg.toByteString(msgWithLatestTsInFirstPack)));
Assertions.assertTrue(resultMsgsByteStrings.contains(TbMsg.toByteString(msgWithLatestTsInSecondPack)));
}
private TbMsg getMsgWithLatestTs(List<TbMsg> firstMsgPack) {

Loading…
Cancel
Save