Example #1
0
 /// <summary>
 /// Use this constructor only for tests.
 /// </summary>
 internal MessageDispatcher(NetworkServerConfiguration configuration,
                            ILoRaDeviceRegistry deviceRegistry,
                            ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider)
     : this(configuration, deviceRegistry, frameCounterUpdateStrategyProvider,
            new JoinRequestMessageHandler(configuration, concentratorDeduplication, deviceRegistry, NullLogger <JoinRequestMessageHandler> .Instance, null),
            NullLoggerFactory.Instance,
            NullLogger <MessageDispatcher> .Instance,
            null)
 {
 }
 public DefaultClassCDevicesMessageSender(
     NetworkServerConfiguration configuration,
     ILoRaDeviceRegistry loRaDeviceRegistry,
     IPacketForwarder packetForwarder,
     ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider)
 {
     this.configuration      = configuration;
     this.loRaDeviceRegistry = loRaDeviceRegistry;
     this.packetForwarder    = packetForwarder;
     this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;
 }
 public DefaultClassCDevicesMessageSender(
     NetworkServerConfiguration configuration,
     ILoRaDeviceRegistry loRaDeviceRegistry,
     IDownstreamMessageSender downstreamMessageSender,
     ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider,
     ILogger <DefaultClassCDevicesMessageSender> logger,
     Meter meter)
 {
     this.configuration                      = configuration;
     this.loRaDeviceRegistry                 = loRaDeviceRegistry;
     this.downstreamMessageSender            = downstreamMessageSender;
     this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;
     this.logger            = logger;
     this.c2dMessageTooLong = meter?.CreateCounter <int>(MetricRegistry.C2DMessageTooLong);
 }
Example #4
0
        public MessageProcessor_End2End_NoDep_ClassC_CloudToDeviceMessage_SizeLimit_Tests()
        {
            this.serverConfiguration = new NetworkServerConfiguration()
            {
                GatewayID = ServerGatewayID,
            };

            this.loRaRegion                   = RegionManager.EU868;
            this.PacketForwarder              = new TestPacketForwarder();
            this.deviceApi                    = new Mock <LoRaDeviceAPIServiceBase>(MockBehavior.Strict);
            this.deviceClient                 = new Mock <ILoRaDeviceClient>(MockBehavior.Strict);
            this.loRaDeviceFactory            = new TestLoRaDeviceFactory(this.deviceClient.Object);
            this.loRaDeviceRegistry           = new LoRaDeviceRegistry(this.serverConfiguration, new MemoryCache(new MemoryCacheOptions()), this.deviceApi.Object, this.loRaDeviceFactory);
            this.frameCounterStrategyProvider = new LoRaDeviceFrameCounterUpdateStrategyProvider(this.serverConfiguration.GatewayID, this.deviceApi.Object);
        }
        public MessageDispatcher(
            NetworkServerConfiguration configuration,
            ILoRaDeviceRegistry deviceRegistry,
            ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider,
            JoinRequestMessageHandler joinRequestHandler = null)
        {
            this.configuration  = configuration;
            this.deviceRegistry = deviceRegistry;
            this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;

            // Register frame counter initializer
            // It will take care of seeding ABP devices created here for single gateway scenarios
            this.deviceRegistry.RegisterDeviceInitializer(new FrameCounterLoRaDeviceInitializer(configuration.GatewayID, frameCounterUpdateStrategyProvider));

            this.joinRequestHandler = joinRequestHandler ?? new JoinRequestMessageHandler(this.configuration, this.deviceRegistry);
        }
Example #6
0
        public DefaultClassCDevicesMessageSenderTest()
        {
            this.serverConfiguration = new NetworkServerConfiguration()
            {
                GatewayID = ServerGatewayID,
            };

            this.loRaRegion = RegionManager.EU868;

            this.packetForwarder              = new Mock <IPacketForwarder>(MockBehavior.Strict);
            this.deviceApi                    = new Mock <LoRaDeviceAPIServiceBase>(MockBehavior.Strict);
            this.deviceClient                 = new Mock <ILoRaDeviceClient>(MockBehavior.Strict);
            this.loRaDeviceFactory            = new TestLoRaDeviceFactory(this.deviceClient.Object);
            this.loRaDeviceRegistry           = new LoRaDeviceRegistry(this.serverConfiguration, new MemoryCache(new MemoryCacheOptions()), this.deviceApi.Object, this.loRaDeviceFactory);
            this.frameCounterStrategyProvider = new LoRaDeviceFrameCounterUpdateStrategyProvider(this.serverConfiguration.GatewayID, this.deviceApi.Object);
        }
 public DefaultLoRaDataRequestHandler(
     NetworkServerConfiguration configuration,
     ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider,
     ILoRaPayloadDecoder payloadDecoder,
     IDeduplicationStrategyFactory deduplicationFactory,
     ILoRaADRStrategyProvider loRaADRStrategyProvider,
     ILoRAADRManagerFactory loRaADRManagerFactory,
     IFunctionBundlerProvider functionBundlerProvider,
     IClassCDeviceMessageSender classCDeviceMessageSender = null)
 {
     this.configuration = configuration;
     this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;
     this.payloadDecoder            = payloadDecoder;
     this.deduplicationFactory      = deduplicationFactory;
     this.classCDeviceMessageSender = classCDeviceMessageSender;
     this.loRaADRStrategyProvider   = loRaADRStrategyProvider;
     this.loRaADRManagerFactory     = loRaADRManagerFactory;
     this.functionBundlerProvider   = functionBundlerProvider;
 }
 public TestLoRaDeviceFactory(
     NetworkServerConfiguration configuration,
     ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider,
     ILoRaDeviceClient loRaDeviceClient,
     IDeduplicationStrategyFactory deduplicationFactory,
     ILoRaADRStrategyProvider adrStrategyProvider,
     ILoRAADRManagerFactory adrManagerFactory,
     IFunctionBundlerProvider functionBundlerProvider,
     ILoRaDeviceClientConnectionManager connectionManager)
     : this(loRaDeviceClient)
 {
     this.configuration = configuration;
     this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;
     this.deduplicationFactory    = deduplicationFactory;
     this.adrStrategyProvider     = adrStrategyProvider;
     this.adrManagerFactory       = adrManagerFactory;
     this.functionBundlerProvider = functionBundlerProvider;
     this.connectionManager       = connectionManager;
 }
Example #9
0
        public DefaultClassCDevicesMessageSenderTest()
        {
            this.serverConfiguration = new NetworkServerConfiguration()
            {
                GatewayID = ServerGatewayID,
            };

            this.loRaRegion = RegionManager.EU868;

            this.downstreamMessageSender = new Mock <IDownstreamMessageSender>(MockBehavior.Strict);
            this.deviceApi    = new Mock <LoRaDeviceAPIServiceBase>(MockBehavior.Strict);
            this.deviceClient = new Mock <ILoRaDeviceClient>(MockBehavior.Loose);

            this.cache = new MemoryCache(new MemoryCacheOptions());
#pragma warning disable CA2000 // Dispose objects before losing scope
            this.loRaDeviceFactory = new TestLoRaDeviceFactory(this.deviceClient.Object, this.deviceCache, new LoRaDeviceClientConnectionManager(this.cache, NullLogger <LoRaDeviceClientConnectionManager> .Instance));
#pragma warning restore CA2000 // Dispose objects before losing scope
            this.loRaDeviceRegistry           = new LoRaDeviceRegistry(this.serverConfiguration, this.cache, this.deviceApi.Object, this.loRaDeviceFactory, this.deviceCache);
            this.frameCounterStrategyProvider = new LoRaDeviceFrameCounterUpdateStrategyProvider(this.serverConfiguration, this.deviceApi.Object);
        }
        public ClassCCloudToDeviceMessageSizeLimitTests(ITestOutputHelper testOutputHelper)
        {
            this.serverConfiguration = new NetworkServerConfiguration()
            {
                GatewayID = ServerGatewayID,
            };

            this.loRaRegion              = RegionManager.EU868;
            DownstreamMessageSender      = new TestDownstreamMessageSender();
            this.deviceApi               = new Mock <LoRaDeviceAPIServiceBase>(MockBehavior.Strict);
            this.deviceClient            = new Mock <ILoRaDeviceClient>(MockBehavior.Loose);
            this.testOutputLoggerFactory = new TestOutputLoggerFactory(testOutputHelper);

            this.cache             = new MemoryCache(new MemoryCacheOptions());
            this.connectionManager = new LoRaDeviceClientConnectionManager(this.cache, testOutputLoggerFactory.CreateLogger <LoRaDeviceClientConnectionManager>());
            this.loRaDeviceFactory = new TestLoRaDeviceFactory(this.deviceClient.Object, this.deviceCache, this.connectionManager);

            this.loRaDeviceRegistry           = new LoRaDeviceRegistry(this.serverConfiguration, this.cache, this.deviceApi.Object, this.loRaDeviceFactory, this.deviceCache);
            this.frameCounterStrategyProvider = new LoRaDeviceFrameCounterUpdateStrategyProvider(this.serverConfiguration, this.deviceApi.Object);
        }
Example #11
0
        public MessageDispatcher(
            NetworkServerConfiguration configuration,
            ILoRaDeviceRegistry deviceRegistry,
            ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider,
            IJoinRequestMessageHandler joinRequestHandler,
            ILoggerFactory loggerFactory,
            ILogger <MessageDispatcher> logger,
            Meter meter)
        {
            this.configuration  = configuration ?? throw new ArgumentNullException(nameof(configuration));
            this.deviceRegistry = deviceRegistry;
            this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;

            // Register frame counter initializer
            // It will take care of seeding ABP devices created here for single gateway scenarios
            this.deviceRegistry.RegisterDeviceInitializer(new FrameCounterLoRaDeviceInitializer(configuration.GatewayID, frameCounterUpdateStrategyProvider));

            this.joinRequestHandler = joinRequestHandler;
            this.loggerFactory      = loggerFactory;
            this.logger             = logger;
            this.d2cMessageDeliveryLatencyHistogram = meter?.CreateHistogram <double>(MetricRegistry.D2CMessageDeliveryLatency);
        }
 public TestDefaultLoRaRequestHandler(
     NetworkServerConfiguration configuration,
     ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider,
     IConcentratorDeduplication concentratorDeduplication,
     ILoRaPayloadDecoder payloadDecoder,
     IDeduplicationStrategyFactory deduplicationFactory,
     ILoRaADRStrategyProvider loRaADRStrategyProvider,
     ILoRAADRManagerFactory loRaADRManagerFactory,
     IFunctionBundlerProvider functionBundlerProvider,
     ITestOutputHelper testOutputHelper) : base(
         configuration,
         frameCounterUpdateStrategyProvider,
         concentratorDeduplication,
         payloadDecoder,
         deduplicationFactory,
         loRaADRStrategyProvider,
         loRaADRManagerFactory,
         functionBundlerProvider,
         new TestOutputLogger <DefaultLoRaDataRequestHandler>(testOutputHelper),
         TestMeter.Instance)
 {
     this.configuration = configuration;
 }
Example #13
0
 public FrameCounterLoRaDeviceInitializer(string gatewayID, ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider)
 {
     this.gatewayID = gatewayID;
     this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;
 }