/// <summary>
        /// Ctor
        /// </summary>
        public IoTHubTwinConfigurationProvider()
        {
            AgentConfiguration.AgentConfigurationChanged += UpdateReportedProperties;

            _moduleClient = ModuleClientProvider.GetClient();
            _moduleClient.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyUpdateCallback, null);
        }
Ejemplo n.º 2
0
        public async Task CreateFromEnvironmentTest(
            Option <UpstreamProtocol> upstreamProtocol,
            Option <IWebProxy> webProxy,
            string productInfo)
        {
            // Arrange
            ITransportSettings receivedTransportSettings = null;

            var sdkModuleClient = new Mock <ISdkModuleClient>();

            var sdkModuleClientProvider = new Mock <ISdkModuleClientProvider>();

            sdkModuleClientProvider.Setup(s => s.GetSdkModuleClient(It.IsAny <ITransportSettings>()))
            .Callback <ITransportSettings>(t => receivedTransportSettings = t)
            .ReturnsAsync(sdkModuleClient.Object);

            bool     closeOnIdleTimeout            = false;
            TimeSpan idleTimeout                   = TimeSpan.FromMinutes(5);
            ConnectionStatusChangesHandler handler = (status, reason) => { };

            // Act
            var moduleClientProvider = new ModuleClientProvider(
                sdkModuleClientProvider.Object,
                upstreamProtocol,
                webProxy,
                productInfo,
                closeOnIdleTimeout,
                idleTimeout,
                false);
            IModuleClient moduleClient = await moduleClientProvider.Create(handler);

            // Assert
            Assert.NotNull(moduleClient);
            sdkModuleClientProvider.Verify(s => s.GetSdkModuleClient(It.IsAny <ITransportSettings>()), Times.Once);

            sdkModuleClient.Verify(s => s.SetProductInfo(productInfo), Times.Once);

            Assert.NotNull(receivedTransportSettings);
            UpstreamProtocol up = upstreamProtocol.GetOrElse(UpstreamProtocol.Amqp);

            Assert.Equal(up, moduleClient.UpstreamProtocol);
            switch (up)
            {
            case UpstreamProtocol.Amqp:
            case UpstreamProtocol.AmqpWs:
                var amqpTransportSettings = receivedTransportSettings as AmqpTransportSettings;
                Assert.NotNull(amqpTransportSettings);
                webProxy.ForEach(w => Assert.Equal(w, amqpTransportSettings.Proxy));
                break;

            case UpstreamProtocol.Mqtt:
            case UpstreamProtocol.MqttWs:
                var mqttTransportSettings = receivedTransportSettings as MqttTransportSettings;
                Assert.NotNull(mqttTransportSettings);
                webProxy.ForEach(w => Assert.Equal(w, mqttTransportSettings.Proxy));
                break;
            }

            sdkModuleClient.Verify(s => s.OpenAsync(), Times.Once);
        }
Ejemplo n.º 3
0
        public async Task CreateFromEnvironment_NoRuntimeInfoProvider(
            Option <UpstreamProtocol> upstreamProtocol,
            Option <IWebProxy> webProxy,
            string productInfo)
        {
            // Arrange
            ITransportSettings receivedTransportSettings = null;

            var sdkModuleClient = new Mock <ISdkModuleClient>();

            var sdkModuleClientProvider = new Mock <ISdkModuleClientProvider>();

            sdkModuleClientProvider.Setup(s => s.GetSdkModuleClient(It.IsAny <ITransportSettings>()))
            .Callback <ITransportSettings>(t => receivedTransportSettings = t)
            .ReturnsAsync(sdkModuleClient.Object);

            bool     closeOnIdleTimeout            = false;
            TimeSpan idleTimeout                   = TimeSpan.FromMinutes(5);
            ConnectionStatusChangesHandler handler = (status, reason) => { };

            // Act
            var moduleClientProvider = new ModuleClientProvider(
                sdkModuleClientProvider.Object,
                Option.None <Task <IRuntimeInfoProvider> >(),
                upstreamProtocol,
                webProxy,
                productInfo,
                closeOnIdleTimeout,
                idleTimeout,
                false);
            IModuleClient moduleClient = await moduleClientProvider.Create(handler);

            // Write product info explicitly
            sdkModuleClient.Verify(s => s.SetProductInfo(productInfo), Times.Once);
        }
        /// <summary>
        /// Ctor
        /// </summary>
        public IoTHubTwinConfigurationProvider()
        {
            AgentConfiguration.AgentConfigurationChanged += UpdateReportedProperties;

            _moduleClient = ModuleClientProvider.GetClient();
            _moduleClient.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyUpdateCallback, null);
            ConfigSectionName = LocalIoTHubConfiguration.IotInterface.RemoteConfigurationObject;
        }
Ejemplo n.º 5
0
        public virtual void Init()
        {
            //Reset all fake event generators to produce empty events
            FakeOperationalEventGenerator.SetEvents(new List <FakeOperationalEvent>());
            FakeSnapshotEventGenerator.SetEvents(new List <FakePeriodicEvent>());
            FakeTriggeredEventGenerator.SetEvents(new List <FakeTriggeredEvent>());

            //Create a new twin and iot hub client
            FakesEventsFactory = new FakeEventsFactory();
            ClientMock         = (ModuleClientMock)ModuleClientProvider.GetClient();
            Twin = new FakeTwinHelper(ClientMock);
        }
Ejemplo n.º 6
0
        public async Task CreateFromEnvironmentTest(
            Option <UpstreamProtocol> upstreamProtocol,
            Option <IWebProxy> webProxy,
            string productInfo)
        {
            // Arrange
            ITransportSettings receivedTransportSettings = null;

            var sdkModuleClient     = new Mock <ISdkModuleClient>();
            var runtimeInfoProvider = new Mock <IRuntimeInfoProvider>();
            var systemInfo          = new SystemInfo("foo", "bar", "baz");

            runtimeInfoProvider.Setup(p => p.GetSystemInfo(CancellationToken.None))
            .ReturnsAsync(systemInfo);

            var sdkModuleClientProvider = new Mock <ISdkModuleClientProvider>();

            sdkModuleClientProvider.Setup(s => s.GetSdkModuleClient(It.IsAny <ITransportSettings>()))
            .Callback <ITransportSettings>(t => receivedTransportSettings = t)
            .ReturnsAsync(sdkModuleClient.Object);

            bool     closeOnIdleTimeout            = false;
            TimeSpan idleTimeout                   = TimeSpan.FromMinutes(5);
            ConnectionStatusChangesHandler handler = (status, reason) => { };

            // Act
            var moduleClientProvider = new ModuleClientProvider(
                sdkModuleClientProvider.Object,
                Option.Some(Task.FromResult(runtimeInfoProvider.Object)),
                upstreamProtocol,
                webProxy,
                productInfo,
                closeOnIdleTimeout,
                idleTimeout,
                false);
            IModuleClient moduleClient = await moduleClientProvider.Create(handler);

            // Assert
            Assert.NotNull(moduleClient);
            sdkModuleClientProvider.Verify(s => s.GetSdkModuleClient(It.IsAny <ITransportSettings>()), Times.Once);

            // Write product info explicitly
            sdkModuleClient.Verify(s => s.SetProductInfo($"{productInfo} (kernel_name=foo;cpu_architecture=bar;)"), Times.Once);

            Assert.NotNull(receivedTransportSettings);
            UpstreamProtocol up = upstreamProtocol.GetOrElse(UpstreamProtocol.Amqp);

            Assert.Equal(up, moduleClient.UpstreamProtocol);
            switch (up)
            {
            case UpstreamProtocol.Amqp:
            case UpstreamProtocol.AmqpWs:
                var amqpTransportSettings = receivedTransportSettings as AmqpTransportSettings;
                Assert.NotNull(amqpTransportSettings);

                if (up == UpstreamProtocol.AmqpWs)
                {
                    webProxy.ForEach(w => Assert.Equal(w, amqpTransportSettings.Proxy));
                }

                break;

            case UpstreamProtocol.Mqtt:
            case UpstreamProtocol.MqttWs:
                var mqttTransportSettings = receivedTransportSettings as MqttTransportSettings;
                Assert.NotNull(mqttTransportSettings);

                if (up == UpstreamProtocol.MqttWs)
                {
                    webProxy.ForEach(w => Assert.Equal(w, mqttTransportSettings.Proxy));
                }

                break;
            }

            sdkModuleClient.Verify(s => s.OpenAsync(), Times.Once);
        }
Ejemplo n.º 7
0
        public virtual void Init()
        {
            var clientMock = (ModuleClientMock)ModuleClientProvider.GetClient();

            Twin = new FakeTwinHelper(clientMock);
        }