Ejemplo n.º 1
0
        // Tests_SRS_DEVICECLIENT_33_002: [** The OnReceiveEventMessageCalled shall invoke the specified delegate. **]**
        public async Task ModuleClient_OnReceiveEventMessageCalled_SpecifiedCallbackCalled()
        {
            ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(fakeConnectionString, TransportType.Mqtt_Tcp_Only);
            var          innerHandler = Substitute.For <IDelegatingHandler>();

            moduleClient.InnerHandler = innerHandler;

            bool isDefaultCallbackCalled = false;
            await moduleClient.SetMessageHandlerAsync((message, context) =>
            {
                isDefaultCallbackCalled = true;
                return(Task.FromResult(MessageResponse.Completed));
            }, "custom data");

            bool isSpecificCallbackCalled = false;
            await moduleClient.SetInputMessageHandlerAsync("endpoint2", (message, context) =>
            {
                isSpecificCallbackCalled = true;
                return(Task.FromResult(MessageResponse.Completed));
            }, "custom data");

            Message testMessage = new Message();

            testMessage.LockToken = "AnyLockToken";

            await moduleClient.InternalClient.OnReceiveEventMessageCalled("endpoint2", testMessage);

            Assert.IsFalse(isDefaultCallbackCalled);
            Assert.IsTrue(isSpecificCallbackCalled);
        }
Ejemplo n.º 2
0
        private async Task ReceiveC2DMessagesAsync(ModuleClient moduleClient, ModuleSettings settings, ILogger logger)
        {
            string logPrefix = "c2dmessages".BuildLogPrefix();

            await moduleClient.SetMessageHandlerAsync(C2DMessageHandler, null);

            logger.LogTrace($"{logPrefix}::{ModuleSettings.ArtifactId}::C2D MESSAGE reception handler registered.");
        }
Ejemplo n.º 3
0
        // Tests_SRS_DEVICECLIENT_33_004: [** It shall call DisableEventReceiveAsync when the last delegate has been removed. **]**
        public async Task ModuleClient_SetDefaultReceiveCallbackAsync_RemoveCallback()
        {
            ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(fakeConnectionString, TransportType.Mqtt_Tcp_Only);
            var          innerHandler = Substitute.For <IDelegatingHandler>();

            moduleClient.InnerHandler = innerHandler;

            await moduleClient.SetMessageHandlerAsync((message, context) => Task.FromResult(MessageResponse.Completed), "custom data");

            await innerHandler.Received(1).EnableEventReceiveAsync(Arg.Any <CancellationToken>());

            await innerHandler.DidNotReceiveWithAnyArgs().DisableEventReceiveAsync(Arg.Any <CancellationToken>());

            await moduleClient.SetMessageHandlerAsync(null, null);

            await innerHandler.Received(1).EnableEventReceiveAsync(Arg.Any <CancellationToken>());

            await innerHandler.Received(1).DisableEventReceiveAsync(Arg.Any <CancellationToken>());
        }
Ejemplo n.º 4
0
        public async Task ModuleClient_SetDefaultReceiveCallbackAsync_RemoveCallback_Amqp()
        {
            ModuleClient moduleClient = await CreateAmqpModuleClientAsync();

            IDelegatingHandler innerHandler = Substitute.For <IDelegatingHandler>();

            moduleClient.InnerHandler = innerHandler;

            await moduleClient.SetMessageHandlerAsync((message, context) => Task.FromResult(MessageResponse.Completed), "custom data").ConfigureAwait(false);

            await innerHandler.Received(1).EnableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false);

            await innerHandler.DidNotReceiveWithAnyArgs().EnableReceiveMessageAsync(Arg.Any <CancellationToken>()).ConfigureAwait(false);

            await innerHandler.DidNotReceiveWithAnyArgs().DisableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false);

            await moduleClient.SetMessageHandlerAsync(null, null).ConfigureAwait(false);

            await innerHandler.Received(1).EnableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false);

            await innerHandler.DidNotReceiveWithAnyArgs().EnableReceiveMessageAsync(Arg.Any <CancellationToken>()).ConfigureAwait(false);

            await innerHandler.Received(1).DisableEventReceiveAsync(true, Arg.Any <CancellationToken>()).ConfigureAwait(false);
        }
Ejemplo n.º 5
0
        private static void InitIoTHub()
        {
            try
            {
                // Find a way to get the connection string
                //IOTEDGE_GATEWAYHOSTNAME = rpimoscowgarden
                //IOTEDGE_WORKLOADURI = unix:///var/run/iotedge/workload.sock
                //HOSTNAME = 346d1c5b3ed1
                //PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                //IOTEDGE_IOTHUBHOSTNAME = EllerbachIOT.azure-devices.net
                //IOTEDGE_MODULEGENERATIONID = 636893565275753486
                //ASPNETCORE_ENVIRONMENT = Development
                //DOTNET_VERSION = 2.2.3
                //IOTEDGE_MODULEID = sprinkler
                //IOTEDGE_AUTHSCHEME = sasToken
                //IOTEDGE_APIVERSION = 2018-06-28
                //DOTNET_RUNNING_IN_CONTAINER = true
                //IOTEDGE_DEVICEID = MoscowGarden
                //HOME = /root
                //ASPNETCORE_URLS = http://+:80
                //RuntimeLogLevel = Information

                _strconn = Environment.GetEnvironmentVariable("IOTHUB_DEVICE_CONN_STRING");
                // Either IoT Edge  either IoT Hub
                if (_strconn == null)
                {
                    _deviceClient = ModuleClient.CreateFromEnvironmentAsync().GetAwaiter().GetResult();
                    _deviceClient.OpenAsync().Wait();
                    _deviceClient.SetMessageHandlerAsync(MessageHandlerIoT, _site);
                    _deviceId = Environment.GetEnvironmentVariable("IOTEDGE_DEVICEID");
                }
                else
                {
                    _deviceId = _strconn;
                    _deviceId = _deviceId.Substring(_deviceId.IndexOf("DeviceId=", StringComparison.CurrentCultureIgnoreCase) + 9);
                    _deviceId = _deviceId.Substring(0, _deviceId.IndexOf(';'));
                    ReceiveDataFromAzure();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Error initializing Azure Iot Hub connection string: {ex.Message}");
            }
        }