Browse Source

Updated due to comments

pull/10497/head
imbeacon 2 years ago
parent
commit
be045bcf42
  1. 2
      common/data/src/main/java/org/thingsboard/server/common/data/DataConstants.java
  2. 6
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/AbstractGatewaySessionHandler.java
  3. 19
      common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/session/GatewaySessionHandlerTest.java
  4. 8
      common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java

2
common/data/src/main/java/org/thingsboard/server/common/data/DataConstants.java

@ -44,6 +44,8 @@ public class DataConstants {
public static final String EDGE_ID = "edgeId";
public static final String DEVICE_ID = "deviceId";
public static final String GATEWAY_PARAMETER = "gateway";
public static final String OVERWRITE_ACTIVITY_TIME_PARAMETER = "overwriteActivityTime";
public static final String COAP_TRANSPORT_NAME = "COAP";
public static final String LWM2M_TRANSPORT_NAME = "LWM2M";
public static final String MQTT_TRANSPORT_NAME = "MQTT";

6
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/AbstractGatewaySessionHandler.java

@ -95,8 +95,6 @@ public abstract class AbstractGatewaySessionHandler<T extends AbstractGatewayDev
private static final String CAN_T_PARSE_VALUE = "Can't parse value: ";
private static final String DEVICE_PROPERTY = "device";
private static final String GATEWAY_PROPERTY = "gateway";
public static final String OVERWRITE_ACTIVITY_TIME = "overwriteActivityTime";
protected final MqttTransportContext context;
protected final TransportService transportService;
@ -243,8 +241,8 @@ public abstract class AbstractGatewaySessionHandler<T extends AbstractGatewayDev
public void onDeviceUpdate(TransportProtos.SessionInfoProto sessionInfo, Device device, Optional<DeviceProfile> deviceProfileOpt) {
log.trace("[{}][{}] onDeviceUpdate: [{}]", gateway.getTenantId(), gateway.getDeviceId(), device);
JsonNode deviceAdditionalInfo = device.getAdditionalInfo();
if (deviceAdditionalInfo.has(GATEWAY_PROPERTY) && deviceAdditionalInfo.has(OVERWRITE_ACTIVITY_TIME)) {
overwriteDevicesActivity = deviceAdditionalInfo.get(OVERWRITE_ACTIVITY_TIME).asBoolean();
if (deviceAdditionalInfo.has(DataConstants.GATEWAY_PARAMETER) && deviceAdditionalInfo.has(DataConstants.OVERWRITE_ACTIVITY_TIME_PARAMETER)) {
overwriteDevicesActivity = deviceAdditionalInfo.get(DataConstants.OVERWRITE_ACTIVITY_TIME_PARAMETER).asBoolean();
}
}

19
common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/session/GatewaySessionHandlerTest.java

@ -17,8 +17,10 @@ package org.thingsboard.server.transport.mqtt.session;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.util.ConcurrentReferenceHashMap;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
@ -34,6 +36,7 @@ import java.util.concurrent.ConcurrentHashMap;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.willCallRealMethod;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ -41,6 +44,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doNothing;
@ExtendWith(MockitoExtension.class)
public class GatewaySessionHandlerTest {
@Mock
@ -56,13 +60,12 @@ public class GatewaySessionHandlerTest {
@BeforeEach
public void setup() {
MockitoAnnotations.openMocks(this);
when(deviceSessionCtx.getSessionId()).thenReturn(UUID.randomUUID());
doNothing().when(transportService).recordActivity(any());
when(transportContext.getTransportService()).thenReturn(transportService);
when(deviceSessionCtx.getContext()).thenReturn(transportContext);
lenient().when(deviceSessionCtx.getSessionId()).thenReturn(UUID.randomUUID());
lenient().doNothing().when(transportService).recordActivity(any());
lenient().when(transportContext.getTransportService()).thenReturn(transportService);
lenient().when(deviceSessionCtx.getContext()).thenReturn(transportContext);
handler = new GatewaySessionHandler(deviceSessionCtx, UUID.randomUUID(), true);
when(handler.getNodeId()).thenReturn("nodeId");
lenient().when(handler.getNodeId()).thenReturn("nodeId");
}
@Test
@ -77,10 +80,10 @@ public class GatewaySessionHandlerTest {
deviceInfo.setDeviceType("default");
deviceInfo.setDeviceProfileId(new DeviceProfileId(UUID.randomUUID()));
deviceInfo.setAdditionalInfo("{\"gateway\": true, \"overwriteDeviceActivity\": true}");
when(deviceSessionCtx.getDeviceInfo()).thenReturn(deviceInfo);
lenient().when(deviceSessionCtx.getDeviceInfo()).thenReturn(deviceInfo);
GatewayDeviceSessionContext gatewayDeviceSessionContext = new GatewayDeviceSessionContext(handler, deviceInfo, null, null, transportService);
devices.put("device1", gatewayDeviceSessionContext);
when(handler.getNodeId()).thenReturn("nodeId");
lenient().when(handler.getNodeId()).thenReturn("nodeId");
Field devicesField = AbstractGatewaySessionHandler.class.getDeclaredField("devices");
devicesField.setAccessible(true);
devicesField.set(handler, devices);

8
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/service/DefaultTransportService.java

@ -133,7 +133,6 @@ import java.util.stream.Collectors;
@TbTransportComponent
public class DefaultTransportService extends TransportActivityManager implements TransportService {
public static final String OVERWRITE_ACTIVITY_TIME = "overwriteActivityTime";
public static final TransportProtos.SessionEventMsg SESSION_EVENT_MSG_OPEN = TransportProtos.SessionEventMsg.newBuilder()
.setSessionType(TransportProtos.SessionType.ASYNC)
.setEvent(TransportProtos.SessionEvent.OPEN).build();
@ -1049,8 +1048,11 @@ public class DefaultTransportService extends TransportActivityManager implements
.setDeviceName(device.getName())
.setDeviceType(device.getType()).build();
JsonNode deviceAdditionalInfo = device.getAdditionalInfo();
if (deviceAdditionalInfo.has("gateway") && deviceAdditionalInfo.has(OVERWRITE_ACTIVITY_TIME)) {
md.setOverwriteActivityTime(deviceAdditionalInfo.get(OVERWRITE_ACTIVITY_TIME).asBoolean());
if (deviceAdditionalInfo.has(DataConstants.GATEWAY_PARAMETER)
&& deviceAdditionalInfo.get(DataConstants.GATEWAY_PARAMETER).asBoolean()
&& deviceAdditionalInfo.has(DataConstants.OVERWRITE_ACTIVITY_TIME_PARAMETER)
&& deviceAdditionalInfo.get(DataConstants.OVERWRITE_ACTIVITY_TIME_PARAMETER).isBoolean()) {
md.setOverwriteActivityTime(deviceAdditionalInfo.get(DataConstants.OVERWRITE_ACTIVITY_TIME_PARAMETER).asBoolean());
}
md.setSessionInfo(newSessionInfo);
transportCallbackExecutor.submit(() -> md.getListener().onDeviceUpdate(newSessionInfo, device, Optional.ofNullable(newDeviceProfile)));

Loading…
Cancel
Save