@ -17,10 +17,7 @@ package org.thingsboard.server.transport.lwm2m.client;
import lombok.Data ;
import lombok.Data ;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
import org.eclipse.californium.core.network.CoapEndpoint ;
import org.eclipse.californium.elements.config.Configuration ;
import org.eclipse.californium.core.network.config.NetworkConfig ;
import org.eclipse.californium.core.observe.ObservationStore ;
import org.eclipse.californium.scandium.DTLSConnector ;
import org.eclipse.californium.scandium.config.DtlsConnectorConfig ;
import org.eclipse.californium.scandium.config.DtlsConnectorConfig ;
import org.eclipse.leshan.client.californium.LeshanClient ;
import org.eclipse.leshan.client.californium.LeshanClient ;
import org.eclipse.leshan.client.californium.LeshanClientBuilder ;
import org.eclipse.leshan.client.californium.LeshanClientBuilder ;
@ -32,7 +29,6 @@ import org.eclipse.leshan.client.resource.DummyInstanceEnabler;
import org.eclipse.leshan.client.resource.ObjectsInitializer ;
import org.eclipse.leshan.client.resource.ObjectsInitializer ;
import org.eclipse.leshan.client.servers.ServerIdentity ;
import org.eclipse.leshan.client.servers.ServerIdentity ;
import org.eclipse.leshan.core.ResponseCode ;
import org.eclipse.leshan.core.ResponseCode ;
import org.eclipse.leshan.core.californium.EndpointFactory ;
import org.eclipse.leshan.core.model.InvalidDDFFileException ;
import org.eclipse.leshan.core.model.InvalidDDFFileException ;
import org.eclipse.leshan.core.model.LwM2mModel ;
import org.eclipse.leshan.core.model.LwM2mModel ;
import org.eclipse.leshan.core.model.ObjectLoader ;
import org.eclipse.leshan.core.model.ObjectLoader ;
@ -44,15 +40,15 @@ import org.eclipse.leshan.core.request.BootstrapRequest;
import org.eclipse.leshan.core.request.DeregisterRequest ;
import org.eclipse.leshan.core.request.DeregisterRequest ;
import org.eclipse.leshan.core.request.RegisterRequest ;
import org.eclipse.leshan.core.request.RegisterRequest ;
import org.eclipse.leshan.core.request.UpdateRequest ;
import org.eclipse.leshan.core.request.UpdateRequest ;
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl ;
import org.junit.Assert ;
import org.junit.Assert ;
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl ;
import java.io.IOException ;
import java.io.IOException ;
import java.net.InetSocketAddress ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.List ;
import java.util.concurrent.ScheduledExecutorService ;
import java.util.concurrent.ScheduledExecutorService ;
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CIPHER_SUITES_ONLY ;
import static org.eclipse.leshan.core.LwM2mId.ACCESS_CONTROL ;
import static org.eclipse.leshan.core.LwM2mId.ACCESS_CONTROL ;
import static org.eclipse.leshan.core.LwM2mId.DEVICE ;
import static org.eclipse.leshan.core.LwM2mId.DEVICE ;
import static org.eclipse.leshan.core.LwM2mId.FIRMWARE ;
import static org.eclipse.leshan.core.LwM2mId.FIRMWARE ;
@ -61,10 +57,10 @@ import static org.eclipse.leshan.core.LwM2mId.SECURITY;
import static org.eclipse.leshan.core.LwM2mId.SERVER ;
import static org.eclipse.leshan.core.LwM2mId.SERVER ;
import static org.eclipse.leshan.core.LwM2mId.SOFTWARE_MANAGEMENT ;
import static org.eclipse.leshan.core.LwM2mId.SOFTWARE_MANAGEMENT ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.BINARY_APP_DATA_CONTAINER ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.BINARY_APP_DATA_CONTAINER ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.TEMPERATURE_SENSOR ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.OBJECT_INSTANCE_ID_0 ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.OBJECT_INSTANCE_ID_0 ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.OBJECT_INSTANCE_ID_1 ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.OBJECT_INSTANCE_ID_1 ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.OBJECT_INSTANCE_ID_12 ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.OBJECT_INSTANCE_ID_12 ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.TEMPERATURE_SENSOR ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.resources ;
import static org.thingsboard.server.transport.lwm2m.Lwm2mTestHelper.resources ;
@ -84,7 +80,7 @@ public class LwM2MTestClient {
private LwM2MLocationParams locationParams ;
private LwM2MLocationParams locationParams ;
private LwM2mTemperatureSensor lwM2MTemperatureSensor ;
private LwM2mTemperatureSensor lwM2MTemperatureSensor ;
public void init ( Security security , Network Config coapConfig , int port , boolean isRpc ) throws InvalidDDFFileException , IOException {
public void init ( Security security , Configuration coapConfig , int port , boolean isRpc ) throws InvalidDDFFileException , IOException {
Assert . assertNull ( "client already initialized" , client ) ;
Assert . assertNull ( "client already initialized" , client ) ;
List < ObjectModel > models = new ArrayList < > ( ) ;
List < ObjectModel > models = new ArrayList < > ( ) ;
for ( String resourceName : resources ) {
for ( String resourceName : resources ) {
@ -106,44 +102,19 @@ public class LwM2MTestClient {
initializer . setInstancesForObject ( LOCATION , new LwM2mLocation ( locationParams . getLatitude ( ) , locationParams . getLongitude ( ) , locationParams . getScaleFactor ( ) , executor , OBJECT_INSTANCE_ID_0 ) ) ;
initializer . setInstancesForObject ( LOCATION , new LwM2mLocation ( locationParams . getLatitude ( ) , locationParams . getLongitude ( ) , locationParams . getScaleFactor ( ) , executor , OBJECT_INSTANCE_ID_0 ) ) ;
initializer . setInstancesForObject ( TEMPERATURE_SENSOR , lwM2MTemperatureSensor = new LwM2mTemperatureSensor ( executor , OBJECT_INSTANCE_ID_0 ) , new LwM2mTemperatureSensor ( executor , OBJECT_INSTANCE_ID_12 ) ) ;
initializer . setInstancesForObject ( TEMPERATURE_SENSOR , lwM2MTemperatureSensor = new LwM2mTemperatureSensor ( executor , OBJECT_INSTANCE_ID_0 ) , new LwM2mTemperatureSensor ( executor , OBJECT_INSTANCE_ID_12 ) ) ;
DtlsConnectorConfig . Builder dtlsConfig = new DtlsConnectorConfig . Builder ( ) ;
DtlsConnectorConfig . Builder dtlsConfig = new DtlsConnectorConfig . Builder ( coapConfig ) ;
dtlsConfig . setRecommendedCipherSuitesOnly ( true ) ;
dtlsConfig . set ( DTLS_RECOMMENDED_CIPHER_SUITES_ONLY , true ) ;
dtlsConfig . setClientOnly ( ) ;
DefaultRegistrationEngineFactory engineFactory = new DefaultRegistrationEngineFactory ( ) ;
DefaultRegistrationEngineFactory engineFactory = new DefaultRegistrationEngineFactory ( ) ;
engineFactory . setReconnectOnUpdate ( false ) ;
engineFactory . setReconnectOnUpdate ( false ) ;
engineFactory . setResumeOnConnect ( true ) ;
engineFactory . setResumeOnConnect ( true ) ;
EndpointFactory endpointFactory = new EndpointFactory ( ) {
@Override
public CoapEndpoint createUnsecuredEndpoint ( InetSocketAddress address , NetworkConfig coapConfig ,
ObservationStore store ) {
CoapEndpoint . Builder builder = new CoapEndpoint . Builder ( ) ;
builder . setInetSocketAddress ( address ) ;
builder . setNetworkConfig ( coapConfig ) ;
return builder . build ( ) ;
}
@Override
public CoapEndpoint createSecuredEndpoint ( DtlsConnectorConfig dtlsConfig , NetworkConfig coapConfig ,
ObservationStore store ) {
CoapEndpoint . Builder builder = new CoapEndpoint . Builder ( ) ;
DtlsConnectorConfig . Builder dtlsConfigBuilder = new DtlsConnectorConfig . Builder ( dtlsConfig ) ;
builder . setConnector ( new DTLSConnector ( dtlsConfigBuilder . build ( ) ) ) ;
builder . setNetworkConfig ( coapConfig ) ;
return builder . build ( ) ;
}
} ;
LeshanClientBuilder builder = new LeshanClientBuilder ( endpoint ) ;
LeshanClientBuilder builder = new LeshanClientBuilder ( endpoint ) ;
builder . setLocalAddress ( "0.0.0.0" , port ) ;
builder . setLocalAddress ( "0.0.0.0" , port ) ;
builder . setObjects ( initializer . createAll ( ) ) ;
builder . setObjects ( initializer . createAll ( ) ) ;
builder . setCoapConfig ( coapConfig ) ;
builder . setCoapConfig ( coapConfig ) ;
builder . setDtlsConfig ( dtlsConfig ) ;
builder . setDtlsConfig ( dtlsConfig ) ;
builder . setRegistrationEngineFactory ( engineFactory ) ;
builder . setRegistrationEngineFactory ( engineFactory ) ;
builder . setEndpointFactory ( endpointFactory ) ;
builder . setSharedExecutor ( executor ) ;
builder . setSharedExecutor ( executor ) ;
builder . setDecoder ( new DefaultLwM2mDecoder ( false ) ) ;
builder . setDecoder ( new DefaultLwM2mDecoder ( false ) ) ;