From bef6cfd339b711b9a5e23d5dd39d4c08c760d6e9 Mon Sep 17 00:00:00 2001 From: IrynaMatveieva Date: Wed, 19 Jun 2024 16:15:08 +0300 Subject: [PATCH] refactored tests --- .../TbSaveToCustomCassandraTableNode.java | 9 ++-- .../engine/telemetry/TbMsgTimeseriesNode.java | 2 +- .../TbSaveToCustomCassandraTableNodeTest.java | 41 ++++++++++--------- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNode.java index 2df4225b0f..d22ffe928a 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNode.java @@ -103,18 +103,17 @@ public class TbSaveToCustomCassandraTableNode implements TbNode { saveStmt = getSaveStmt(); } - void onTenantProfileUpdate(TenantProfile tenantProfile) { + private void onTenantProfileUpdate(TenantProfile tenantProfile) { DefaultTenantProfileConfiguration configuration = (DefaultTenantProfileConfiguration) tenantProfile.getProfileData().getConfiguration(); - long tenantProfileDefaultStorageTtl = TimeUnit.DAYS.toSeconds(configuration.getDefaultStorageTtlDays()); ttl = config.getDefaultTTL(); if (ttl == 0L) { - ttl = tenantProfileDefaultStorageTtl; + ttl = TimeUnit.DAYS.toSeconds(configuration.getDefaultStorageTtlDays()); } } @Override public void onMsg(TbContext ctx, TbMsg msg) { - withCallback(save(msg, ctx, ttl), aVoid -> ctx.tellSuccess(msg), e -> ctx.tellFailure(msg, e), ctx.getDbCallbackExecutor()); + withCallback(save(msg, ctx), aVoid -> ctx.tellSuccess(msg), e -> ctx.tellFailure(msg, e), ctx.getDbCallbackExecutor()); } @Override @@ -187,7 +186,7 @@ public class TbSaveToCustomCassandraTableNode implements TbNode { return query.toString(); } - private ListenableFuture save(TbMsg msg, TbContext ctx, long ttl) { + private ListenableFuture save(TbMsg msg, TbContext ctx) { JsonElement data = JsonParser.parseString(msg.getData()); if (!data.isJsonObject()) { throw new IllegalStateException("Invalid message structure, it is not a JSON Object: " + data); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java index 081804639a..97b2ac116f 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java @@ -75,7 +75,7 @@ public class TbMsgTimeseriesNode implements TbNode { onTenantProfileUpdate(ctx.getTenantProfile()); } - void onTenantProfileUpdate(TenantProfile tenantProfile) { + private void onTenantProfileUpdate(TenantProfile tenantProfile) { DefaultTenantProfileConfiguration configuration = (DefaultTenantProfileConfiguration) tenantProfile.getProfileData().getConfiguration(); tenantProfileDefaultStorageTtl = TimeUnit.DAYS.toSeconds(configuration.getDefaultStorageTtlDays()); } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java index 3ab997238a..5d520d5ab9 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbSaveToCustomCassandraTableNodeTest.java @@ -57,6 +57,7 @@ import org.thingsboard.server.dao.nosql.CassandraStatementTask; import org.thingsboard.server.dao.nosql.TbResultSet; import org.thingsboard.server.dao.nosql.TbResultSetFuture; +import java.util.LinkedHashMap; import java.util.Map; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -75,10 +76,10 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.never; import static org.mockito.BDDMockito.spy; import static org.mockito.BDDMockito.then; import static org.mockito.BDDMockito.willAnswer; -import static org.mockito.BDDMockito.never; @ExtendWith(MockitoExtension.class) public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgradeTest { @@ -136,7 +137,9 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad var configuration = new TbNodeConfiguration(JacksonUtil.valueToTree(config)); assertThatThrownBy(() -> node.init(ctxMock, configuration)) .isInstanceOf(TbNodeException.class) - .hasMessage("Unable to connect to Cassandra database"); + .hasMessage("Unable to connect to Cassandra database") + .extracting(e -> ((TbNodeException) e).isUnrecoverable()) + .isEqualTo(false); } @Test @@ -238,15 +241,15 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad return Stream.of( Arguments.of(0, 0, "INSERT INTO cs_tb_readings(entityIdTableColumn) VALUES(?)", (Consumer) builder -> { - then(builder).should(never()).setInt(anyInt(), eq(0)); + then(builder).should(never()).setInt(anyInt(), anyInt()); }), Arguments.of(0, 5, "INSERT INTO cs_tb_readings(entityIdTableColumn) VALUES(?) USING TTL ?", (Consumer) builder -> { - then(builder).should().setInt(anyInt(), eq(432000)); + then(builder).should().setInt(1, 432000); }), Arguments.of(20, 1, "INSERT INTO cs_tb_readings(entityIdTableColumn) VALUES(?) USING TTL ?", (Consumer) builder -> { - then(builder).should().setInt(anyInt(), eq(20)); + then(builder).should().setInt(1, 20); }) ); } @@ -255,14 +258,14 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad public void givenValidMsgStructure_whenOnMsg_thenSaveToCustomCassandraTable() throws TbNodeException { config.setDefaultTTL(25L); config.setTableName("readings"); - config.setFieldsMapping(Map.of( - "$entityId", "entityIdTableColumn", - "doubleField", "doubleTableColumn", - "longField", "longTableColumn", - "booleanField", "booleanTableColumn", - "stringField", "stringTableColumn", - "jsonField", "jsonTableColumn" - )); + Map mappings = new LinkedHashMap<>(); + mappings.put("$entityId", "entityIdTableColumn"); + mappings.put("doubleField", "doubleTableColumn"); + mappings.put("longField", "longTableColumn"); + mappings.put("booleanField", "booleanTableColumn"); + mappings.put("stringField", "stringTableColumn"); + mappings.put("jsonField", "jsonTableColumn"); + config.setFieldsMapping(mappings); mockOnInit(); mockBoundStatementBuilder(); @@ -350,12 +353,12 @@ public class TbSaveToCustomCassandraTableNodeTest extends AbstractRuleNodeUpgrad } private void verifySettingStatementBuilder() { - then(boundStatementBuilderMock).should().setUuid(anyInt(), eq(DEVICE_ID.getId())); - then(boundStatementBuilderMock).should().setDouble(anyInt(), eq(22.5)); - then(boundStatementBuilderMock).should().setLong(anyInt(), eq(56L)); - then(boundStatementBuilderMock).should().setBoolean(anyInt(), eq(true)); - then(boundStatementBuilderMock).should().setString(anyInt(), eq("some string")); - then(boundStatementBuilderMock).should().setString(anyInt(), eq("{\"key\":\"value\"}")); + then(boundStatementBuilderMock).should().setUuid(0, DEVICE_ID.getId()); + then(boundStatementBuilderMock).should().setDouble(1, 22.5); + then(boundStatementBuilderMock).should().setLong(2, 56L); + then(boundStatementBuilderMock).should().setBoolean(3, true); + then(boundStatementBuilderMock).should().setString(4, "some string"); + then(boundStatementBuilderMock).should().setString(5, "{\"key\":\"value\"}"); then(boundStatementBuilderMock).should().setInt(anyInt(), eq(25)); }