Merge pull request #11172 from ShvaykaD/hotfix/calculate-delta-node
hotfix for calculate delta node: fixed false positive tests & fixed NPE
This commit is contained in:
commit
75fb156178
@ -181,8 +181,11 @@ public class CalculateDeltaNode implements TbNode {
|
|||||||
|
|
||||||
private ListenableFuture<ValueWithTs> getLatestFromCacheOrFetchFromDb(TbContext ctx, TbMsg msg) {
|
private ListenableFuture<ValueWithTs> getLatestFromCacheOrFetchFromDb(TbContext ctx, TbMsg msg) {
|
||||||
EntityId originator = msg.getOriginator();
|
EntityId originator = msg.getOriginator();
|
||||||
ValueWithTs valueWithTs = cache.get(msg.getOriginator());
|
if (config.isUseCache()) {
|
||||||
return valueWithTs != null ? Futures.immediateFuture(valueWithTs) : fetchLatestValueAsync(ctx, originator);
|
ValueWithTs valueWithTs = cache.get(msg.getOriginator());
|
||||||
|
return valueWithTs != null ? Futures.immediateFuture(valueWithTs) : fetchLatestValueAsync(ctx, originator);
|
||||||
|
}
|
||||||
|
return fetchLatestValueAsync(ctx, originator);
|
||||||
}
|
}
|
||||||
|
|
||||||
private record ValueWithTs(long ts, double value) {
|
private record ValueWithTs(long ts, double value) {
|
||||||
|
|||||||
@ -109,7 +109,6 @@ public class CalculateDeltaNodeTest extends AbstractRuleNodeUpgradeTest {
|
|||||||
public void setUp() throws TbNodeException {
|
public void setUp() throws TbNodeException {
|
||||||
config = new CalculateDeltaNodeConfiguration().defaultConfiguration();
|
config = new CalculateDeltaNodeConfiguration().defaultConfiguration();
|
||||||
nodeConfiguration = new TbNodeConfiguration(JacksonUtil.valueToTree(config));
|
nodeConfiguration = new TbNodeConfiguration(JacksonUtil.valueToTree(config));
|
||||||
node.init(ctxMock, nodeConfiguration);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -166,8 +165,9 @@ public class CalculateDeltaNodeTest extends AbstractRuleNodeUpgradeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenInvalidMsgType_whenOnMsg_thenShouldTellNextOther() {
|
public void givenInvalidMsgType_whenOnMsg_thenShouldTellNextOther() throws TbNodeException {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
|
node.init(ctxMock, nodeConfiguration);
|
||||||
var msgData = "{\"pulseCounter\": 42}";
|
var msgData = "{\"pulseCounter\": 42}";
|
||||||
var msg = TbMsg.newMsg(TbMsgType.POST_ATTRIBUTES_REQUEST, DUMMY_DEVICE_ORIGINATOR, TbMsgMetaData.EMPTY, msgData);
|
var msg = TbMsg.newMsg(TbMsgType.POST_ATTRIBUTES_REQUEST, DUMMY_DEVICE_ORIGINATOR, TbMsgMetaData.EMPTY, msgData);
|
||||||
|
|
||||||
@ -181,8 +181,9 @@ public class CalculateDeltaNodeTest extends AbstractRuleNodeUpgradeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenInvalidMsgDataType_whenOnMsg_thenShouldTellNextOther() {
|
public void givenInvalidMsgDataType_whenOnMsg_thenShouldTellNextOther() throws TbNodeException {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
|
node.init(ctxMock, nodeConfiguration);
|
||||||
var msg = TbMsg.newMsg(TbMsgType.POST_TELEMETRY_REQUEST, DUMMY_DEVICE_ORIGINATOR, TbMsgMetaData.EMPTY, TbMsg.EMPTY_JSON_ARRAY);
|
var msg = TbMsg.newMsg(TbMsgType.POST_TELEMETRY_REQUEST, DUMMY_DEVICE_ORIGINATOR, TbMsgMetaData.EMPTY, TbMsg.EMPTY_JSON_ARRAY);
|
||||||
|
|
||||||
// WHEN
|
// WHEN
|
||||||
@ -196,8 +197,9 @@ public class CalculateDeltaNodeTest extends AbstractRuleNodeUpgradeTest {
|
|||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenInputKeyIsNotPresent_whenOnMsg_thenShouldTellNextOther() {
|
public void givenInputKeyIsNotPresent_whenOnMsg_thenShouldTellNextOther() throws TbNodeException {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
|
node.init(ctxMock, nodeConfiguration);
|
||||||
var msg = TbMsg.newMsg(TbMsgType.POST_TELEMETRY_REQUEST, DUMMY_DEVICE_ORIGINATOR, TbMsgMetaData.EMPTY, TbMsg.EMPTY_JSON_OBJECT);
|
var msg = TbMsg.newMsg(TbMsgType.POST_TELEMETRY_REQUEST, DUMMY_DEVICE_ORIGINATOR, TbMsgMetaData.EMPTY, TbMsg.EMPTY_JSON_OBJECT);
|
||||||
|
|
||||||
// WHEN
|
// WHEN
|
||||||
@ -451,8 +453,9 @@ public class CalculateDeltaNodeTest extends AbstractRuleNodeUpgradeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenInvalidStringValue_whenOnMsg_thenException() {
|
public void givenInvalidStringValue_whenOnMsg_thenException() throws TbNodeException {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
|
node.init(ctxMock, nodeConfiguration);
|
||||||
mockFindLatestAsync(new BasicTsKvEntry(System.currentTimeMillis(), new StringDataEntry("pulseCounter", "high")));
|
mockFindLatestAsync(new BasicTsKvEntry(System.currentTimeMillis(), new StringDataEntry("pulseCounter", "high")));
|
||||||
|
|
||||||
var msgData = "{\"pulseCounter\":\"123\"}";
|
var msgData = "{\"pulseCounter\":\"123\"}";
|
||||||
@ -475,8 +478,9 @@ public class CalculateDeltaNodeTest extends AbstractRuleNodeUpgradeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenBooleanValue_whenOnMsg_thenException() {
|
public void givenBooleanValue_whenOnMsg_thenException() throws TbNodeException {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
|
node.init(ctxMock, nodeConfiguration);
|
||||||
mockFindLatestAsync(new BasicTsKvEntry(System.currentTimeMillis(), new BooleanDataEntry("pulseCounter", false)));
|
mockFindLatestAsync(new BasicTsKvEntry(System.currentTimeMillis(), new BooleanDataEntry("pulseCounter", false)));
|
||||||
|
|
||||||
var msgData = "{\"pulseCounter\":true}";
|
var msgData = "{\"pulseCounter\":true}";
|
||||||
@ -499,8 +503,9 @@ public class CalculateDeltaNodeTest extends AbstractRuleNodeUpgradeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenJsonValue_whenOnMsg_thenException() {
|
public void givenJsonValue_whenOnMsg_thenException() throws TbNodeException {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
|
node.init(ctxMock, nodeConfiguration);
|
||||||
mockFindLatestAsync(new BasicTsKvEntry(System.currentTimeMillis(), new JsonDataEntry("pulseCounter", "{\"isActive\":false}")));
|
mockFindLatestAsync(new BasicTsKvEntry(System.currentTimeMillis(), new JsonDataEntry("pulseCounter", "{\"isActive\":false}")));
|
||||||
|
|
||||||
var msgData = "{\"pulseCounter\":{\"isActive\":true}}";
|
var msgData = "{\"pulseCounter\":{\"isActive\":true}}";
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user