Esempio n. 1
0
        public void TesTDeviceTwinConfigurationIsChangedIfTwinIsChanged()
        {
            NameValueCollection generalConfig = (NameValueCollection)ConfigurationManager.GetSection("General");

            var generatorUnderTest = new FakeOperationalEventGenerator();

            Assert.AreEqual(EventPriority.Off, generatorUnderTest.Priority);

            Twin.ChangeEventPriority(typeof(FakeOperationalEvent).Name, EventPriority.High);


            Assert.AreEqual(EventPriority.High, generatorUnderTest.Priority);
        }
        public void TestEventAreFiredCorrectlyFromMultipleGenerators()
        {
            Twin.ChangeEventPriority(typeof(FakeOperationalEvent).Name, EventPriority.High)
            .ChangeEventPriority(typeof(FakePeriodicEvent).Name, EventPriority.High)
            .ChangeEventPriority(typeof(FakeTriggeredEvent).Name, EventPriority.Low)
            .UpdateAgentTwinConfiguration();

            var expectedOperationalEvent = FakesEventsFactory.CreateFakeOperationalEvent();
            var expectedPeriodicEvent    = FakesEventsFactory.CreateFakePeriodicEvent(EventPriority.High);
            var expectedTriggeredEvent   = FakesEventsFactory.CreateFakeTriggeredEvent(EventPriority.Low);

            FakeOperationalEventGenerator.SetEvents(new [] { expectedOperationalEvent });
            FakeSnapshotEventGenerator.SetEvents(new [] { expectedPeriodicEvent });
            FakeTriggeredEventGenerator.SetEvents(new [] { expectedTriggeredEvent });

            _eventProducer.ExecuteTask();
            _eventProducer.ExecuteTask();

            _messageBuilderConsumer.ExecuteTask();

            var sentMessages = ClientMock.GetMessages();

            Assert.AreEqual(2, sentMessages.Count);

            var sentEvents = new List <Event>();

            foreach (var msg in sentMessages)
            {
                byte[] msgBytes = msg.GetBytes();
                MessageHelper.VerifyMessageHeader(msgBytes);
                sentEvents.AddRange(MessageHelper.GetEventsFromMsg(msgBytes));
            }

            foreach (var ev in sentEvents)
            {
                if (ev.Name == typeof(FakePeriodicEvent).Name)
                {
                    MessageHelper.ValidateEventsAreEqual(ev, expectedPeriodicEvent);
                }
                else if (ev.Name == typeof(FakeTriggeredEvent).Name)
                {
                    MessageHelper.ValidateEventsAreEqual(ev, expectedTriggeredEvent);
                }
                else if (ev.Name == typeof(FakeOperationalEvent).Name)
                {
                    MessageHelper.ValidateEventsAreEqual(ev, expectedOperationalEvent);
                }
            }
        }
        public void TestEventNotFiredIfEventIsTooBig()
        {
            var maxMessageSize = Int32.Parse(Twin.GetConfiguration("maxMessageSizeInBytes"));

            Twin.ChangeEventPriority(typeof(FakeOperationalEvent).Name, EventPriority.High)
            .UpdateAgentTwinConfiguration();
            Assert.AreEqual((uint)maxMessageSize, AgentConfiguration.RemoteConfiguration.MaxMessageSize);

            var expectedEvent = FakesEventsFactory.CreateFakeOperationalEvent(GenerateBigFakePayload(maxMessageSize));

            FakeOperationalEventGenerator.SetEvents(new[] { expectedEvent });

            RepeatAction(_eventProducer, 100);

            _messageBuilderConsumer.ExecuteTask();
            var sentMessages = ClientMock.GetMessages();

            Assert.AreEqual(0, sentMessages.Count);
        }
        public void TestOperationalEventIsNotFiredIfAMessageIsNotFired()
        {
            Twin.ChangeEventPriority(typeof(FakeOperationalEvent).Name, EventPriority.Operational)
            .ChangeEventPriority(typeof(FakePeriodicEvent).Name, EventPriority.Off)
            .ChangeEventPriority(typeof(FakeTriggeredEvent).Name, EventPriority.Off)
            .UpdateAgentTwinConfiguration();

            var expectedOperationalEvent = FakesEventsFactory.CreateFakeOperationalEvent();
            var expectedPeriodicEvent    = FakesEventsFactory.CreateFakePeriodicEvent(EventPriority.High);
            var expectedTriggeredEvent   = FakesEventsFactory.CreateFakeTriggeredEvent(EventPriority.Low);

            FakeOperationalEventGenerator.SetEvents(new[] { expectedOperationalEvent });
            FakeSnapshotEventGenerator.SetEvents(new[] { expectedPeriodicEvent });
            FakeTriggeredEventGenerator.SetEvents(new[] { expectedTriggeredEvent });

            _eventProducer.ExecuteTask();
            _eventProducer.ExecuteTask();

            _messageBuilderConsumer.ExecuteTask();

            var sentMessages = ClientMock.GetMessages();

            Assert.AreEqual(0, sentMessages.Count);
        }