added additional tests and moved currentTimeMillis to separate method to have control over time in tests
This commit is contained in:
parent
b4ba613c54
commit
a91caa3d09
@ -176,7 +176,7 @@ public class TbGetTelemetryNode implements TbNode {
|
|||||||
return getIntervalFromPatterns(msg);
|
return getIntervalFromPatterns(msg);
|
||||||
} else {
|
} else {
|
||||||
Interval interval = new Interval();
|
Interval interval = new Interval();
|
||||||
long ts = System.currentTimeMillis();
|
long ts = getCurrentTimeMillis();
|
||||||
interval.setStartTs(ts - TimeUnit.valueOf(config.getStartIntervalTimeUnit()).toMillis(config.getStartInterval()));
|
interval.setStartTs(ts - TimeUnit.valueOf(config.getStartIntervalTimeUnit()).toMillis(config.getStartInterval()));
|
||||||
interval.setEndTs(ts - TimeUnit.valueOf(config.getEndIntervalTimeUnit()).toMillis(config.getEndInterval()));
|
interval.setEndTs(ts - TimeUnit.valueOf(config.getEndIntervalTimeUnit()).toMillis(config.getEndInterval()));
|
||||||
return interval;
|
return interval;
|
||||||
@ -220,6 +220,10 @@ public class TbGetTelemetryNode implements TbNode {
|
|||||||
return limit;
|
return limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long getCurrentTimeMillis() {
|
||||||
|
return System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
private static class Interval {
|
private static class Interval {
|
||||||
|
|||||||
@ -32,7 +32,6 @@ import org.thingsboard.rule.engine.TestDbCallbackExecutor;
|
|||||||
import org.thingsboard.rule.engine.api.TbContext;
|
import org.thingsboard.rule.engine.api.TbContext;
|
||||||
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
|
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
|
||||||
import org.thingsboard.rule.engine.api.TbNodeException;
|
import org.thingsboard.rule.engine.api.TbNodeException;
|
||||||
import org.thingsboard.rule.engine.api.util.TbNodeUtils;
|
|
||||||
import org.thingsboard.server.common.data.id.DeviceId;
|
import org.thingsboard.server.common.data.id.DeviceId;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
@ -60,7 +59,9 @@ import static org.mockito.ArgumentMatchers.any;
|
|||||||
import static org.mockito.ArgumentMatchers.anyList;
|
import static org.mockito.ArgumentMatchers.anyList;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.BDDMockito.given;
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.BDDMockito.spy;
|
||||||
import static org.mockito.BDDMockito.then;
|
import static org.mockito.BDDMockito.then;
|
||||||
|
import static org.mockito.BDDMockito.willReturn;
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
public class TbGetTelemetryNodeTest {
|
public class TbGetTelemetryNodeTest {
|
||||||
@ -80,7 +81,7 @@ public class TbGetTelemetryNodeTest {
|
|||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
node = new TbGetTelemetryNode();
|
node = spy(new TbGetTelemetryNode());
|
||||||
config = new TbGetTelemetryNodeConfiguration().defaultConfiguration();
|
config = new TbGetTelemetryNodeConfiguration().defaultConfiguration();
|
||||||
config.setLatestTsKeyNames(List.of("temperature"));
|
config.setLatestTsKeyNames(List.of("temperature"));
|
||||||
}
|
}
|
||||||
@ -222,6 +223,8 @@ public class TbGetTelemetryNodeTest {
|
|||||||
// GIVEN
|
// GIVEN
|
||||||
node.init(ctxMock, new TbNodeConfiguration(JacksonUtil.valueToTree(config)));
|
node.init(ctxMock, new TbNodeConfiguration(JacksonUtil.valueToTree(config)));
|
||||||
|
|
||||||
|
long ts = System.currentTimeMillis();
|
||||||
|
willReturn(ts).given(node).getCurrentTimeMillis();
|
||||||
mockTimeseriesService();
|
mockTimeseriesService();
|
||||||
given(timeseriesServiceMock.findAll(any(TenantId.class), any(EntityId.class), anyList())).willReturn(Futures.immediateFuture(Collections.emptyList()));
|
given(timeseriesServiceMock.findAll(any(TenantId.class), any(EntityId.class), anyList())).willReturn(Futures.immediateFuture(Collections.emptyList()));
|
||||||
|
|
||||||
@ -233,8 +236,8 @@ public class TbGetTelemetryNodeTest {
|
|||||||
ArgumentCaptor<List<ReadTsKvQuery>> actualReadTsKvQueryList = ArgumentCaptor.forClass(List.class);
|
ArgumentCaptor<List<ReadTsKvQuery>> actualReadTsKvQueryList = ArgumentCaptor.forClass(List.class);
|
||||||
then(timeseriesServiceMock).should().findAll(eq(TENANT_ID), eq(DEVICE_ID), actualReadTsKvQueryList.capture());
|
then(timeseriesServiceMock).should().findAll(eq(TENANT_ID), eq(DEVICE_ID), actualReadTsKvQueryList.capture());
|
||||||
ReadTsKvQuery actualReadTsKvQuery = actualReadTsKvQueryList.getValue().get(0);
|
ReadTsKvQuery actualReadTsKvQuery = actualReadTsKvQueryList.getValue().get(0);
|
||||||
assertThat(actualReadTsKvQuery.getStartTs()).isLessThan(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(config.getStartInterval()));
|
assertThat(actualReadTsKvQuery.getStartTs()).isEqualTo(ts - TimeUnit.MINUTES.toMillis(config.getStartInterval()));
|
||||||
assertThat(actualReadTsKvQuery.getEndTs()).isLessThan(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(config.getEndInterval()));
|
assertThat(actualReadTsKvQuery.getEndTs()).isEqualTo(ts - TimeUnit.MINUTES.toMillis(config.getEndInterval()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -257,8 +260,7 @@ public class TbGetTelemetryNodeTest {
|
|||||||
ArgumentCaptor<List<ReadTsKvQuery>> actualReadTsKvQueryList = ArgumentCaptor.forClass(List.class);
|
ArgumentCaptor<List<ReadTsKvQuery>> actualReadTsKvQueryList = ArgumentCaptor.forClass(List.class);
|
||||||
then(timeseriesServiceMock).should().findAll(eq(TENANT_ID), eq(DEVICE_ID), actualReadTsKvQueryList.capture());
|
then(timeseriesServiceMock).should().findAll(eq(TENANT_ID), eq(DEVICE_ID), actualReadTsKvQueryList.capture());
|
||||||
List<String> actualKeys = actualReadTsKvQueryList.getValue().stream().map(TsKvQuery::getKey).toList();
|
List<String> actualKeys = actualReadTsKvQueryList.getValue().stream().map(TsKvQuery::getKey).toList();
|
||||||
List<String> expectedTsKeyNames = config.getLatestTsKeyNames().stream().map(tsKeyName -> TbNodeUtils.processPattern(tsKeyName, msg)).toList();
|
assertThat(actualKeys).containsAll(List.of("temperature", "humidity", "pressure"));
|
||||||
assertThat(actualKeys).containsAll(expectedTsKeyNames);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ParameterizedTest
|
@ParameterizedTest
|
||||||
@ -325,6 +327,10 @@ public class TbGetTelemetryNodeTest {
|
|||||||
Arguments.of(
|
Arguments.of(
|
||||||
TbGetTelemetryNodeConfiguration.FETCH_MODE_FIRST,
|
TbGetTelemetryNodeConfiguration.FETCH_MODE_FIRST,
|
||||||
TbGetTelemetryNodeConfiguration.MAX_FETCH_SIZE,
|
TbGetTelemetryNodeConfiguration.MAX_FETCH_SIZE,
|
||||||
|
(Consumer<ReadTsKvQuery>) query -> assertThat(query.getLimit()).isEqualTo(1)),
|
||||||
|
Arguments.of(
|
||||||
|
TbGetTelemetryNodeConfiguration.FETCH_MODE_LAST,
|
||||||
|
10,
|
||||||
(Consumer<ReadTsKvQuery>) query -> assertThat(query.getLimit()).isEqualTo(1))
|
(Consumer<ReadTsKvQuery>) query -> assertThat(query.getLimit()).isEqualTo(1))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -424,9 +430,11 @@ public class TbGetTelemetryNodeTest {
|
|||||||
assertThat(actualMsg.getValue()).usingRecursiveComparison().ignoringFields("ctx").isEqualTo(expectedMsg);
|
assertThat(actualMsg.getValue()).usingRecursiveComparison().ignoringFields("ctx").isEqualTo(expectedMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@ParameterizedTest
|
||||||
public void givenFetchModeIsFirst_whenOnMsg_thenTellSuccessAndVerifyMsg() throws TbNodeException {
|
@ValueSource(strings = {"FIRST", "LAST"})
|
||||||
|
public void givenFetchMode_whenOnMsg_thenTellSuccessAndVerifyMsg(String fetchMode) throws TbNodeException {
|
||||||
// GIVEN
|
// GIVEN
|
||||||
|
config.setFetchMode(fetchMode);
|
||||||
config.setLatestTsKeyNames(List.of("temperature", "humidity"));
|
config.setLatestTsKeyNames(List.of("temperature", "humidity"));
|
||||||
|
|
||||||
node.init(ctxMock, new TbNodeConfiguration(JacksonUtil.valueToTree(config)));
|
node.init(ctxMock, new TbNodeConfiguration(JacksonUtil.valueToTree(config)));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user