Replace static mocks with consumers in DefaultRuleEngineDeviceStateManagerTest
This commit is contained in:
parent
8169236360
commit
8686a92944
@ -40,6 +40,8 @@ import org.thingsboard.server.queue.discovery.TbServiceInfoProvider;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@ -53,13 +55,13 @@ import static org.mockito.Mockito.never;
|
||||
public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
|
||||
@Mock
|
||||
private static DeviceStateService deviceStateServiceMock;
|
||||
private DeviceStateService deviceStateServiceMock;
|
||||
@Mock
|
||||
private static TbCallback tbCallbackMock;
|
||||
private TbCallback tbCallbackMock;
|
||||
@Mock
|
||||
private static TbClusterService clusterServiceMock;
|
||||
private TbClusterService clusterServiceMock;
|
||||
@Mock
|
||||
private static TbQueueMsgMetadata metadataMock;
|
||||
private TbQueueMsgMetadata metadataMock;
|
||||
|
||||
@Mock
|
||||
private TbServiceInfoProvider serviceInfoProviderMock;
|
||||
@ -67,9 +69,9 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
private PartitionService partitionServiceMock;
|
||||
|
||||
@Captor
|
||||
private static ArgumentCaptor<TbQueueCallback> queueCallbackCaptor;
|
||||
private ArgumentCaptor<TbQueueCallback> queueCallbackCaptor;
|
||||
|
||||
private static DefaultRuleEngineDeviceStateManager deviceStateManager;
|
||||
private DefaultRuleEngineDeviceStateManager deviceStateManager;
|
||||
|
||||
private static final TenantId TENANT_ID = TenantId.fromUUID(UUID.fromString("57ab2e6c-bc4c-11ee-a506-0242ac120002"));
|
||||
private static final DeviceId DEVICE_ID = DeviceId.fromString("74a9053e-bc4c-11ee-a506-0242ac120002");
|
||||
@ -87,15 +89,17 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
@DisplayName("Given event should be routed to local service and event processed has succeeded, " +
|
||||
"when onDeviceX() is called, then should route event to local service and call onSuccess() callback.")
|
||||
@MethodSource
|
||||
public void givenRoutedToLocalAndProcessingSuccess_whenOnDeviceAction_thenShouldCallLocalServiceAndSuccessCallback(Runnable onDeviceAction, Runnable actionVerification) {
|
||||
public void givenRoutedToLocalAndProcessingSuccess_whenOnDeviceAction_thenShouldCallLocalServiceAndSuccessCallback(
|
||||
BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback> onDeviceAction, Consumer<DeviceStateService> actionVerification
|
||||
) {
|
||||
// GIVEN
|
||||
given(serviceInfoProviderMock.isService(ServiceType.TB_CORE)).willReturn(true);
|
||||
given(partitionServiceMock.resolve(ServiceType.TB_CORE, TENANT_ID, DEVICE_ID)).willReturn(MY_TPI);
|
||||
|
||||
onDeviceAction.run();
|
||||
onDeviceAction.accept(deviceStateManager, tbCallbackMock);
|
||||
|
||||
// THEN
|
||||
actionVerification.run();
|
||||
actionVerification.accept(deviceStateServiceMock);
|
||||
|
||||
then(clusterServiceMock).shouldHaveNoInteractions();
|
||||
then(tbCallbackMock).should().onSuccess();
|
||||
@ -105,20 +109,20 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
private static Stream<Arguments> givenRoutedToLocalAndProcessingSuccess_whenOnDeviceAction_thenShouldCallLocalServiceAndSuccessCallback() {
|
||||
return Stream.of(
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -128,19 +132,19 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
"when onDeviceX() is called, then should route event to local service and call onFailure() callback.")
|
||||
@MethodSource
|
||||
public void givenRoutedToLocalAndProcessingFailure_whenOnDeviceAction_thenShouldCallLocalServiceAndFailureCallback(
|
||||
Runnable exceptionThrowSetup, Runnable onDeviceAction, Runnable actionVerification
|
||||
Consumer<DeviceStateService> exceptionThrowSetup, BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback> onDeviceAction, Consumer<DeviceStateService> actionVerification
|
||||
) {
|
||||
// GIVEN
|
||||
given(serviceInfoProviderMock.isService(ServiceType.TB_CORE)).willReturn(true);
|
||||
given(partitionServiceMock.resolve(ServiceType.TB_CORE, TENANT_ID, DEVICE_ID)).willReturn(MY_TPI);
|
||||
|
||||
exceptionThrowSetup.run();
|
||||
exceptionThrowSetup.accept(deviceStateServiceMock);
|
||||
|
||||
// WHEN
|
||||
onDeviceAction.run();
|
||||
onDeviceAction.accept(deviceStateManager, tbCallbackMock);
|
||||
|
||||
// THEN
|
||||
actionVerification.run();
|
||||
actionVerification.accept(deviceStateServiceMock);
|
||||
|
||||
then(clusterServiceMock).shouldHaveNoInteractions();
|
||||
then(tbCallbackMock).should(never()).onSuccess();
|
||||
@ -150,24 +154,24 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
private static Stream<Arguments> givenRoutedToLocalAndProcessingFailure_whenOnDeviceAction_thenShouldCallLocalServiceAndFailureCallback() {
|
||||
return Stream.of(
|
||||
Arguments.of(
|
||||
(Runnable) () -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(Runnable) () -> deviceStateManager.onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(Runnable) () -> deviceStateManager.onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(Runnable) () -> deviceStateManager.onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(Runnable) () -> deviceStateManager.onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> then(deviceStateServiceMock).should().onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> doThrow(RUNTIME_EXCEPTION).when(deviceStateServiceMock).onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS),
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Consumer<DeviceStateService>) deviceStateServiceMock -> then(deviceStateServiceMock).should().onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS)
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -176,16 +180,18 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
@DisplayName("Given event should be routed to external service, " +
|
||||
"when onDeviceX() is called, then should send correct queue message to external service with correct callback object.")
|
||||
@MethodSource
|
||||
public void givenRoutedToExternal_whenOnDeviceAction_thenShouldSendQueueMsgToExternalServiceWithCorrectCallback(Runnable onDeviceAction, Runnable actionVerification) {
|
||||
public void givenRoutedToExternal_whenOnDeviceAction_thenShouldSendQueueMsgToExternalServiceWithCorrectCallback(
|
||||
BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback> onDeviceAction, BiConsumer<TbClusterService, ArgumentCaptor<TbQueueCallback>> actionVerification
|
||||
) {
|
||||
// WHEN
|
||||
ReflectionTestUtils.setField(deviceStateManager, "deviceStateService", Optional.empty());
|
||||
given(serviceInfoProviderMock.isService(ServiceType.TB_CORE)).willReturn(false);
|
||||
given(partitionServiceMock.resolve(ServiceType.TB_CORE, TENANT_ID, DEVICE_ID)).willReturn(EXTERNAL_TPI);
|
||||
|
||||
onDeviceAction.run();
|
||||
onDeviceAction.accept(deviceStateManager, tbCallbackMock);
|
||||
|
||||
// THEN
|
||||
actionVerification.run();
|
||||
actionVerification.accept(clusterServiceMock, queueCallbackCaptor);
|
||||
|
||||
TbQueueCallback callback = queueCallbackCaptor.getValue();
|
||||
callback.onSuccess(metadataMock);
|
||||
@ -197,8 +203,8 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
private static Stream<Arguments> givenRoutedToExternal_whenOnDeviceAction_thenShouldSendQueueMsgToExternalServiceWithCorrectCallback() {
|
||||
return Stream.of(
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> {
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceConnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(BiConsumer<TbClusterService, ArgumentCaptor<TbQueueCallback>>) (clusterServiceMock, queueCallbackCaptor) -> {
|
||||
var deviceConnectMsg = TransportProtos.DeviceConnectProto.newBuilder()
|
||||
.setTenantIdMSB(TENANT_ID.getId().getMostSignificantBits())
|
||||
.setTenantIdLSB(TENANT_ID.getId().getLeastSignificantBits())
|
||||
@ -213,8 +219,8 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
}
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> {
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceActivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(BiConsumer<TbClusterService, ArgumentCaptor<TbQueueCallback>>) (clusterServiceMock, queueCallbackCaptor) -> {
|
||||
var deviceActivityMsg = TransportProtos.DeviceActivityProto.newBuilder()
|
||||
.setTenantIdMSB(TENANT_ID.getId().getMostSignificantBits())
|
||||
.setTenantIdLSB(TENANT_ID.getId().getLeastSignificantBits())
|
||||
@ -229,8 +235,8 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
}
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> {
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceDisconnect(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(BiConsumer<TbClusterService, ArgumentCaptor<TbQueueCallback>>) (clusterServiceMock, queueCallbackCaptor) -> {
|
||||
var deviceDisconnectMsg = TransportProtos.DeviceDisconnectProto.newBuilder()
|
||||
.setTenantIdMSB(TENANT_ID.getId().getMostSignificantBits())
|
||||
.setTenantIdLSB(TENANT_ID.getId().getLeastSignificantBits())
|
||||
@ -245,8 +251,8 @@ public class DefaultRuleEngineDeviceStateManagerTest {
|
||||
}
|
||||
),
|
||||
Arguments.of(
|
||||
(Runnable) () -> deviceStateManager.onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(Runnable) () -> {
|
||||
(BiConsumer<DefaultRuleEngineDeviceStateManager, TbCallback>) (deviceStateManager, tbCallbackMock) -> deviceStateManager.onDeviceInactivity(TENANT_ID, DEVICE_ID, EVENT_TS, tbCallbackMock),
|
||||
(BiConsumer<TbClusterService, ArgumentCaptor<TbQueueCallback>>) (clusterServiceMock, queueCallbackCaptor) -> {
|
||||
var deviceInactivityMsg = TransportProtos.DeviceInactivityProto.newBuilder()
|
||||
.setTenantIdMSB(TENANT_ID.getId().getMostSignificantBits())
|
||||
.setTenantIdLSB(TENANT_ID.getId().getLeastSignificantBits())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user