Search in sources :

Example 61 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbTransformMsgNodeTest method exceptionHandledCorrectly.

@Test
public void exceptionHandledCorrectly() throws TbNodeException, ScriptException {
    initWithScript();
    TbMsgMetaData metaData = new TbMsgMetaData();
    metaData.putValue("temp", "7");
    String rawJson = "{\"passed\": 5";
    RuleChainId ruleChainId = new RuleChainId(Uuids.timeBased());
    RuleNodeId ruleNodeId = new RuleNodeId(Uuids.timeBased());
    TbMsg msg = TbMsg.newMsg("USER", null, metaData, TbMsgDataType.JSON, rawJson, ruleChainId, ruleNodeId);
    when(scriptEngine.executeUpdateAsync(msg)).thenReturn(Futures.immediateFailedFuture(new IllegalStateException("error")));
    node.onMsg(ctx, msg);
    verifyError(msg, "error", IllegalStateException.class);
}
Also used : RuleChainId(org.thingsboard.server.common.data.id.RuleChainId) TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg) RuleNodeId(org.thingsboard.server.common.data.id.RuleNodeId) Test(org.junit.Test)

Example 62 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbMsgGeneratorNode method scheduleTickMsg.

private void scheduleTickMsg(TbContext ctx) {
    log.trace("scheduleTickMsg, config {}", config);
    long curTs = System.currentTimeMillis();
    if (lastScheduledTs == 0L) {
        lastScheduledTs = curTs;
    }
    lastScheduledTs = lastScheduledTs + delay;
    long curDelay = Math.max(0L, (lastScheduledTs - curTs));
    TbMsg tickMsg = ctx.newMsg(ServiceQueue.MAIN, TB_MSG_GENERATOR_NODE_MSG, ctx.getSelfId(), new TbMsgMetaData(), "");
    nextTickId = tickMsg.getId();
    ctx.tellSelf(tickMsg, curDelay);
}
Also used : TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg)

Example 63 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbMsgDelayNode method onMsg.

@Override
public void onMsg(TbContext ctx, TbMsg msg) {
    if (msg.getType().equals(TB_MSG_DELAY_NODE_MSG)) {
        TbMsg pendingMsg = pendingMsgs.remove(UUID.fromString(msg.getData()));
        if (pendingMsg != null) {
            ctx.enqueueForTellNext(pendingMsg, SUCCESS);
        }
    } else {
        if (pendingMsgs.size() < config.getMaxPendingMsgs()) {
            pendingMsgs.put(msg.getId(), msg);
            TbMsg tickMsg = ctx.newMsg(ServiceQueue.MAIN, TB_MSG_DELAY_NODE_MSG, ctx.getSelfId(), msg.getCustomerId(), new TbMsgMetaData(), msg.getId().toString());
            ctx.tellSelf(tickMsg, getDelay(msg));
            ctx.ack(msg);
        } else {
            ctx.tellFailure(msg, new RuntimeException("Max limit of pending messages reached!"));
        }
    }
}
Also used : TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg)

Example 64 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbNodeUtilsTest method testSameKeysReplacement.

@Test
public void testSameKeysReplacement() {
    String pattern = "ABC ${key} $[key]";
    TbMsgMetaData md = new TbMsgMetaData();
    md.putValue("key", "metadata_value");
    ObjectNode node = JacksonUtil.newObjectNode();
    node.put("key", "data_value");
    TbMsg msg = TbMsg.newMsg("CUSTOM", TenantId.SYS_TENANT_ID, md, JacksonUtil.toString(node));
    String result = TbNodeUtils.processPattern(pattern, msg);
    Assert.assertEquals("ABC metadata_value data_value", result);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg) Test(org.junit.Test)

Example 65 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbNodeUtilsTest method testArrayReplacementDoesNotWork.

@Test
public void testArrayReplacementDoesNotWork() {
    String pattern = "ABC ${key} $[key1.key2[0].key3]";
    TbMsgMetaData md = new TbMsgMetaData();
    md.putValue("key", "metadata_value");
    ObjectNode key2Node = JacksonUtil.newObjectNode();
    key2Node.put("key3", "value3");
    ObjectNode key1Node = JacksonUtil.newObjectNode();
    key1Node.set("key2", key2Node);
    ObjectNode node = JacksonUtil.newObjectNode();
    node.set("key1", key1Node);
    TbMsg msg = TbMsg.newMsg("CUSTOM", TenantId.SYS_TENANT_ID, md, JacksonUtil.toString(node));
    String result = TbNodeUtils.processPattern(pattern, msg);
    Assert.assertEquals("ABC metadata_value $[key1.key2[0].key3]", result);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg) Test(org.junit.Test)

Aggregations

TbMsg (org.thingsboard.server.common.msg.TbMsg)88 TbMsgMetaData (org.thingsboard.server.common.msg.TbMsgMetaData)57 Test (org.junit.Test)46 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)29 List (java.util.List)19 DeviceProfile (org.thingsboard.server.common.data.DeviceProfile)18 RuleChainId (org.thingsboard.server.common.data.id.RuleChainId)17 DeviceProfileData (org.thingsboard.server.common.data.device.profile.DeviceProfileData)16 EntityId (org.thingsboard.server.common.data.id.EntityId)16 AttributeKvEntry (org.thingsboard.server.common.data.kv.AttributeKvEntry)16 Device (org.thingsboard.server.common.data.Device)15 DeviceProfileAlarm (org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm)15 JsonNode (com.fasterxml.jackson.databind.JsonNode)14 AlarmCondition (org.thingsboard.server.common.data.device.profile.AlarmCondition)14 AlarmConditionFilter (org.thingsboard.server.common.data.device.profile.AlarmConditionFilter)14 AlarmConditionFilterKey (org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey)14 AlarmRule (org.thingsboard.server.common.data.device.profile.AlarmRule)14 NumericFilterPredicate (org.thingsboard.server.common.data.query.NumericFilterPredicate)14 RuleNodeId (org.thingsboard.server.common.data.id.RuleNodeId)13 DynamicValue (org.thingsboard.server.common.data.query.DynamicValue)13