Browse Source

Merge remote-tracking branch 'upstream/master' into handle-null-values-in-proto

pull/5038/head
Volodymyr Babak 5 years ago
parent
commit
0ce509e8e6
  1. 8
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClientContextImpl.java
  2. 1
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/LwM2MClientOtaInfo.java
  3. 13
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbRedisLwM2MClientStore.java
  4. 30
      rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/profile/TbDeviceProfileNodeTest.java

8
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClientContextImpl.java

@ -166,7 +166,7 @@ public class LwM2mClientContextImpl implements LwM2mClientContext {
this.lwM2mClientsByRegistrationId.put(registration.getId(), client);
client.setState(LwM2MClientState.REGISTERED);
onUplink(client);
if(!compareAndSetSleepFlag(client, false)){
if (!compareAndSetSleepFlag(client, false)) {
clientStore.put(client);
}
} finally {
@ -316,7 +316,11 @@ public class LwM2mClientContextImpl implements LwM2mClientContext {
public void update(LwM2mClient client) {
client.lock();
try {
clientStore.put(client);
if (client.getState().equals(LwM2MClientState.REGISTERED)) {
clientStore.put(client);
} else {
log.error("[{}] Client is in invalid state: {}!", client.getEndpoint(), client.getState());
}
} finally {
client.unlock();
}

1
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/ota/LwM2MClientOtaInfo.java

@ -106,6 +106,7 @@ public abstract class LwM2MClientOtaInfo<Strategy, State, Result> {
public abstract OtaPackageType getType();
@JsonIgnore
public String getTargetPackageId() {
return getPackageId(targetName, targetVersion);
}

13
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbRedisLwM2MClientStore.java

@ -15,11 +15,13 @@
*/
package org.thingsboard.server.transport.lwm2m.server.store;
import lombok.extern.slf4j.Slf4j;
import org.nustaq.serialization.FSTConfiguration;
import org.springframework.data.redis.connection.RedisClusterConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.ScanOptions;
import org.thingsboard.server.transport.lwm2m.server.client.LwM2MClientState;
import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
import java.util.ArrayList;
@ -27,6 +29,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Slf4j
public class TbRedisLwM2MClientStore implements TbLwM2MClientStore {
private static final String CLIENT_EP = "CLIENT#EP#";
@ -76,9 +79,13 @@ public class TbRedisLwM2MClientStore implements TbLwM2MClientStore {
@Override
public void put(LwM2mClient client) {
byte[] clientSerialized = serializer.asByteArray(client);
try (var connection = connectionFactory.getConnection()) {
connection.getSet(getKey(client.getEndpoint()), clientSerialized);
if (client.getState().equals(LwM2MClientState.UNREGISTERED)) {
log.error("[{}] Client is in invalid state: {}!", client.getEndpoint(), client.getState(), new Exception());
} else {
byte[] clientSerialized = serializer.asByteArray(client);
try (var connection = connectionFactory.getConnection()) {
connection.getSet(getKey(client.getEndpoint()), clientSerialized);
}
}
}

30
rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/profile/TbDeviceProfileNodeTest.java

@ -196,7 +196,7 @@ public class TbDeviceProfileNodeTest {
TbMsgDataType.JSON, mapper.writeValueAsString(data), null, null);
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
TbMsg theMsg2 = TbMsg.newMsg("ALARM", deviceId, new TbMsgMetaData(), "2");
@ -207,7 +207,7 @@ public class TbDeviceProfileNodeTest {
TbMsgDataType.JSON, mapper.writeValueAsString(data), null, null);
node.onMsg(ctx, msg2);
verify(ctx).tellSuccess(msg2);
verify(ctx).tellNext(theMsg2, "Alarm Updated");
verify(ctx).enqueueForTellNext(theMsg2, "Alarm Updated");
}
@ -289,7 +289,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -376,7 +376,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -445,7 +445,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -554,7 +554,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg2);
verify(ctx).tellSuccess(msg2);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -678,7 +678,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg2);
verify(ctx).tellSuccess(msg2);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -781,7 +781,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg2);
verify(ctx).tellSuccess(msg2);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -897,7 +897,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg2);
verify(ctx).tellSuccess(msg2);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -999,7 +999,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg2);
verify(ctx).tellSuccess(msg2);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -1082,7 +1082,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -1163,7 +1163,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -1237,7 +1237,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -1321,7 +1321,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}
@ -1407,7 +1407,7 @@ public class TbDeviceProfileNodeTest {
node.onMsg(ctx, msg);
verify(ctx).tellSuccess(msg);
verify(ctx).tellNext(theMsg, "Alarm Created");
verify(ctx).enqueueForTellNext(theMsg, "Alarm Created");
verify(ctx, Mockito.never()).tellFailure(Mockito.any(), Mockito.any());
}

Loading…
Cancel
Save