From b3bfe28cc8ec8a16dc93607199eae7415fc92034 Mon Sep 17 00:00:00 2001 From: ShvaykaD Date: Thu, 14 Dec 2023 13:33:37 +0200 Subject: [PATCH 1/2] added hotfix upgrade for transformation rule nodes with TbMsgSource --- ...bAbstractTransformNodeWithTbMsgSource.java | 28 +++++++++++++------ .../rule/engine/transform/TbCopyKeysNode.java | 2 +- .../engine/transform/TbDeleteKeysNode.java | 2 +- .../engine/transform/TbRenameKeysNode.java | 2 +- .../engine/transform/TbCopyKeysNodeTest.java | 4 ++- .../transform/TbDeleteKeysNodeTest.java | 4 ++- .../transform/TbRenameKeysNodeTest.java | 4 ++- 7 files changed, 31 insertions(+), 15 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java index bed00659ea..2213f6a4ee 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java @@ -22,9 +22,6 @@ import org.thingsboard.rule.engine.api.TbNodeException; import org.thingsboard.rule.engine.util.TbMsgSource; import org.thingsboard.server.common.data.util.TbPair; -import java.util.List; -import java.util.regex.Pattern; - public abstract class TbAbstractTransformNodeWithTbMsgSource implements TbNode { private static final String FROM_METADATA_PROPERTY = "fromMetadata"; @@ -33,28 +30,41 @@ public abstract class TbAbstractTransformNodeWithTbMsgSource implements TbNode { @Override public TbPair upgrade(int fromVersion, JsonNode oldConfiguration) throws TbNodeException { - return fromVersion == 0 ? - upgradeToUseTbMsgSource((ObjectNode) oldConfiguration, getKeyToUpgradeFromVersionZero()) : - new TbPair<>(false, oldConfiguration); + ObjectNode configToUpdate = (ObjectNode) oldConfiguration; + switch (fromVersion) { + case 0: + return upgradeToUseTbMsgSource(configToUpdate); + case 1: + return upgradeNodesWithVersionOneToUseTbMsgSource(configToUpdate); + default: + return new TbPair<>(false, oldConfiguration); + } } - private TbPair upgradeToUseTbMsgSource(ObjectNode configToUpdate, String newProperty) throws TbNodeException { + private TbPair upgradeToUseTbMsgSource(ObjectNode configToUpdate) throws TbNodeException { if (!configToUpdate.has(FROM_METADATA_PROPERTY)) { throw new TbNodeException("property to update: '" + FROM_METADATA_PROPERTY + "' doesn't exists in configuration!"); } var value = configToUpdate.get(FROM_METADATA_PROPERTY).asText(); if ("true".equals(value)) { configToUpdate.remove(FROM_METADATA_PROPERTY); - configToUpdate.put(newProperty, TbMsgSource.METADATA.name()); + configToUpdate.put(getKeyToUpgradeFromVersionZero(), TbMsgSource.METADATA.name()); return new TbPair<>(true, configToUpdate); } if ("false".equals(value)) { configToUpdate.remove(FROM_METADATA_PROPERTY); - configToUpdate.put(newProperty, TbMsgSource.DATA.name()); + configToUpdate.put(getKeyToUpgradeFromVersionZero(), TbMsgSource.DATA.name()); return new TbPair<>(true, configToUpdate); } throw new TbNodeException("property to update: '" + FROM_METADATA_PROPERTY + "' has unexpected value: " + value + ". Allowed values: true or false!"); } + private TbPair upgradeNodesWithVersionOneToUseTbMsgSource(ObjectNode configToUpdate) throws TbNodeException { + if (configToUpdate.has(getKeyToUpgradeFromVersionZero())) { + return new TbPair<>(false, configToUpdate); + } + return upgradeToUseTbMsgSource(configToUpdate); + } + } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java index ef950ff563..7b26d2bd33 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java @@ -40,7 +40,7 @@ import java.util.stream.Collectors; @RuleNode( type = ComponentType.TRANSFORMATION, name = "copy key-value pairs", - version = 1, + version = 2, configClazz = TbCopyKeysNodeConfiguration.class, nodeDescription = "Copies key-value pairs from message to message metadata or vice-versa.", nodeDetails = "Copies key-value pairs from the message to message metadata, or vice-versa, according to the configured direction and keys. " + diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java index 7bb63ee1bd..be66944280 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java @@ -40,7 +40,7 @@ import java.util.stream.Collectors; @RuleNode( type = ComponentType.TRANSFORMATION, name = "delete key-value pairs", - version = 1, + version = 2, configClazz = TbDeleteKeysNodeConfiguration.class, nodeDescription = "Deletes key-value pairs from message or message metadata.", nodeDetails = "Deletes key-value pairs from the message or message metadata according to the configured " + diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java index 705ce3fc42..1b09570985 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java @@ -37,7 +37,7 @@ import java.util.concurrent.ExecutionException; @RuleNode( type = ComponentType.TRANSFORMATION, name = "rename keys", - version = 1, + version = 2, configClazz = TbRenameKeysNodeConfiguration.class, nodeDescription = "Renames message or message metadata keys.", nodeDetails = "Renames keys in the message or message metadata according to the provided mapping. " + diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java index 5f9efed3fb..1efe85966d 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java @@ -164,7 +164,9 @@ public class TbCopyKeysNodeTest { private static Stream givenFromVersionAndConfig_whenUpgrade_thenVerifyUpgradeResultAndConfig() { return Stream.of( Arguments.of(0, "{\"fromMetadata\":false,\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"DATA\",\"keys\":[\"temperature\"]}"), - Arguments.of(0, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}") + Arguments.of(0, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}", false, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}") ); } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java index 176979a546..9dce929ab3 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java @@ -141,7 +141,9 @@ public class TbDeleteKeysNodeTest { private static Stream givenFromVersionAndConfig_whenUpgrade_thenVerifyUpgradeResultAndConfig() { return Stream.of( Arguments.of(0, "{\"fromMetadata\":false,\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"DATA\",\"keys\":[\"temperature\"]}"), - Arguments.of(0, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}") + Arguments.of(0, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}", false, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}") ); } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java index ea46db2e2b..daafd4675a 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java @@ -157,7 +157,9 @@ public class TbRenameKeysNodeTest { private static Stream givenFromVersionAndConfig_whenUpgrade_thenVerifyUpgradeResultAndConfig() { return Stream.of( Arguments.of(0, "{\"fromMetadata\":false,\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"DATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), - Arguments.of(0, "{\"fromMetadata\":true,\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}") + Arguments.of(0, "{\"fromMetadata\":true,\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), + Arguments.of(1, "{\"fromMetadata\":true,\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), + Arguments.of(1, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}", false, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}") ); } From c128a7aecb6e23392fb621ace32480ef71896aa4 Mon Sep 17 00:00:00 2001 From: ShvaykaD Date: Thu, 14 Dec 2023 14:39:56 +0200 Subject: [PATCH 2/2] added additional fix after check bugs on UI --- ...bAbstractTransformNodeWithTbMsgSource.java | 33 +++++++++++++++---- .../rule/engine/transform/TbCopyKeysNode.java | 7 +++- .../engine/transform/TbDeleteKeysNode.java | 7 +++- .../engine/transform/TbRenameKeysNode.java | 7 +++- .../engine/transform/TbCopyKeysNodeTest.java | 6 ++-- .../transform/TbDeleteKeysNodeTest.java | 6 ++-- .../transform/TbRenameKeysNodeTest.java | 6 ++-- 7 files changed, 57 insertions(+), 15 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java index 2213f6a4ee..02e99d90fe 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNodeWithTbMsgSource.java @@ -24,9 +24,11 @@ import org.thingsboard.server.common.data.util.TbPair; public abstract class TbAbstractTransformNodeWithTbMsgSource implements TbNode { - private static final String FROM_METADATA_PROPERTY = "fromMetadata"; + protected static final String FROM_METADATA_PROPERTY = "fromMetadata"; - protected abstract String getKeyToUpgradeFromVersionZero(); + protected abstract String getNewKeyForUpgradeFromVersionZero(); + + protected abstract String getKeyToUpgradeFromVersionOne(); @Override public TbPair upgrade(int fromVersion, JsonNode oldConfiguration) throws TbNodeException { @@ -48,12 +50,12 @@ public abstract class TbAbstractTransformNodeWithTbMsgSource implements TbNode { var value = configToUpdate.get(FROM_METADATA_PROPERTY).asText(); if ("true".equals(value)) { configToUpdate.remove(FROM_METADATA_PROPERTY); - configToUpdate.put(getKeyToUpgradeFromVersionZero(), TbMsgSource.METADATA.name()); + configToUpdate.put(getNewKeyForUpgradeFromVersionZero(), TbMsgSource.METADATA.name()); return new TbPair<>(true, configToUpdate); } if ("false".equals(value)) { configToUpdate.remove(FROM_METADATA_PROPERTY); - configToUpdate.put(getKeyToUpgradeFromVersionZero(), TbMsgSource.DATA.name()); + configToUpdate.put(getNewKeyForUpgradeFromVersionZero(), TbMsgSource.DATA.name()); return new TbPair<>(true, configToUpdate); } throw new TbNodeException("property to update: '" + FROM_METADATA_PROPERTY + "' has unexpected value: " @@ -61,10 +63,29 @@ public abstract class TbAbstractTransformNodeWithTbMsgSource implements TbNode { } private TbPair upgradeNodesWithVersionOneToUseTbMsgSource(ObjectNode configToUpdate) throws TbNodeException { - if (configToUpdate.has(getKeyToUpgradeFromVersionZero())) { + if (configToUpdate.has(getNewKeyForUpgradeFromVersionZero())) { return new TbPair<>(false, configToUpdate); } - return upgradeToUseTbMsgSource(configToUpdate); + return upgradeTbMsgSourceKey(configToUpdate, getKeyToUpgradeFromVersionOne()); + } + + private TbPair upgradeTbMsgSourceKey(ObjectNode configToUpdate, String oldPropertyKey) throws TbNodeException { + if (!configToUpdate.has(oldPropertyKey)) { + throw new TbNodeException("property to update: '" + oldPropertyKey + "' doesn't exists in configuration!"); + } + var value = configToUpdate.get(oldPropertyKey).asText(); + if (TbMsgSource.METADATA.name().equals(value)) { + configToUpdate.remove(oldPropertyKey); + configToUpdate.put(getNewKeyForUpgradeFromVersionZero(), TbMsgSource.METADATA.name()); + return new TbPair<>(true, configToUpdate); + } + if (TbMsgSource.DATA.name().equals(value)) { + configToUpdate.remove(oldPropertyKey); + configToUpdate.put(getNewKeyForUpgradeFromVersionZero(), TbMsgSource.DATA.name()); + return new TbPair<>(true, configToUpdate); + } + throw new TbNodeException("property to update: '" + oldPropertyKey + "' has unexpected value: " + + value + ". Allowed values: true or false!"); } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java index 7b26d2bd33..b96486fe4c 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java @@ -109,10 +109,15 @@ public class TbCopyKeysNode extends TbAbstractTransformNodeWithTbMsgSource { } @Override - protected String getKeyToUpgradeFromVersionZero() { + protected String getNewKeyForUpgradeFromVersionZero() { return "copyFrom"; } + @Override + protected String getKeyToUpgradeFromVersionOne() { + return FROM_METADATA_PROPERTY; + } + boolean matches(String key) { return compiledKeyPatterns.stream().anyMatch(pattern -> pattern.matcher(key).matches()); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java index be66944280..65ecdd42e2 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNode.java @@ -104,10 +104,15 @@ public class TbDeleteKeysNode extends TbAbstractTransformNodeWithTbMsgSource { } @Override - protected String getKeyToUpgradeFromVersionZero() { + protected String getNewKeyForUpgradeFromVersionZero() { return "deleteFrom"; } + @Override + protected String getKeyToUpgradeFromVersionOne() { + return "dataToFetch"; + } + boolean matches(String key) { return compiledKeyPatterns.stream().anyMatch(pattern -> pattern.matcher(key).matches()); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java index 1b09570985..64850ee80a 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbRenameKeysNode.java @@ -110,8 +110,13 @@ public class TbRenameKeysNode extends TbAbstractTransformNodeWithTbMsgSource { } @Override - protected String getKeyToUpgradeFromVersionZero() { + protected String getNewKeyForUpgradeFromVersionZero() { return "renameIn"; } + @Override + protected String getKeyToUpgradeFromVersionOne() { + return FROM_METADATA_PROPERTY; + } + } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java index 1efe85966d..ae58298e0d 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbCopyKeysNodeTest.java @@ -165,8 +165,10 @@ public class TbCopyKeysNodeTest { return Stream.of( Arguments.of(0, "{\"fromMetadata\":false,\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"DATA\",\"keys\":[\"temperature\"]}"), Arguments.of(0, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), - Arguments.of(1, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), - Arguments.of(1, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}", false, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}") + Arguments.of(1, "{\"fromMetadata\":\"METADATA\",\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"fromMetadata\":\"DATA\",\"keys\":[\"temperature\"]}", true, "{\"copyFrom\":\"DATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}", false, "{\"copyFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"copyFrom\":\"DATA\",\"keys\":[\"temperature\"]}", false, "{\"copyFrom\":\"DATA\",\"keys\":[\"temperature\"]}") ); } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java index 9dce929ab3..5acc9f2073 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbDeleteKeysNodeTest.java @@ -142,8 +142,10 @@ public class TbDeleteKeysNodeTest { return Stream.of( Arguments.of(0, "{\"fromMetadata\":false,\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"DATA\",\"keys\":[\"temperature\"]}"), Arguments.of(0, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), - Arguments.of(1, "{\"fromMetadata\":true,\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), - Arguments.of(1, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}", false, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}") + Arguments.of(1, "{\"dataToFetch\":\"METADATA\",\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"dataToFetch\":\"DATA\",\"keys\":[\"temperature\"]}", true, "{\"deleteFrom\":\"DATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}", false, "{\"deleteFrom\":\"METADATA\",\"keys\":[\"temperature\"]}"), + Arguments.of(1, "{\"deleteFrom\":\"DATA\",\"keys\":[\"temperature\"]}", false, "{\"deleteFrom\":\"DATA\",\"keys\":[\"temperature\"]}") ); } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java index daafd4675a..23f6e33f26 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbRenameKeysNodeTest.java @@ -158,8 +158,10 @@ public class TbRenameKeysNodeTest { return Stream.of( Arguments.of(0, "{\"fromMetadata\":false,\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"DATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), Arguments.of(0, "{\"fromMetadata\":true,\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), - Arguments.of(1, "{\"fromMetadata\":true,\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), - Arguments.of(1, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}", false, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}") + Arguments.of(1, "{\"fromMetadata\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), + Arguments.of(1, "{\"fromMetadata\":\"DATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}", true, "{\"renameIn\":\"DATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), + Arguments.of(1, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}", false, "{\"renameIn\":\"METADATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}"), + Arguments.of(1, "{\"renameIn\":\"DATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}", false, "{\"renameIn\":\"DATA\",\"renameKeysMapping\":{\"temp\":\"temperature\"}}") ); }