Exemple #1
0
    def test_wind_queue_good(self):
        mock_logger = mock.Mock(spec=Logger)

        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            type(mock_CollectData.return_value).add_data = mock.Mock(
                return_value={})
            type(mock_CollectData.return_value).get_data = mock.Mock(
                return_value={})

            SUT = TopicManager(None, self.config, mock_logger)

            collector_topic = ""
            for topic in SUT.subscribed_topics:
                if SUT.subscribed_topics[topic]['queue'][
                        'type'] == 'collector':
                    collector_topic = topic
                    break

            fieldname = 'windSpeed'
            data = {
                fieldname: random.uniform(1, 100),
                'usUnits': 1,
                'dateTime': time.time()
            }

            SUT.append_data(collector_topic, data, fieldname)

            elements = []
            for data in SUT.get_data(
                    SUT.subscribed_topics[collector_topic]['queue']):
                elements.append(data)

            self.assertEqual(len(elements), 0)
Exemple #2
0
    def test_queue_datetime_in_future(self):
        mock_logger = mock.Mock(spec=Logger)

        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            type(mock_CollectData.return_value).get_data = mock.Mock(
                return_value={})
            SUT = TopicManager(None, self.config, mock_logger)
            SUT.append_data(self.topic, self.create_queue_data())
            gen = SUT.get_data(SUT.subscribed_topics[self.topic]['queue'], 0)
            data = next(gen, None)

            self.assertIsNone(data)
    def test_queue_empty(self):
        mock_logger = mock.Mock(spec=Logger)

        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            type(mock_CollectData.return_value).get_data = mock.Mock(
                return_value={})
            SUT = TopicManager(self.config, mock_logger)

            gen = SUT.get_data(self.topic)
            data = next(gen, None)

            self.assertIsNone(data)
Exemple #4
0
    def test_get_from_collector_not_called():
        mock_logger = mock.Mock(spec=Logger)

        topic = random_string()
        config_dict = {}
        config_dict[topic] = {}
        config = configobj.ConfigObj(config_dict)

        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            SUT = TopicManager(None, config, mock_logger)

            gen = SUT.get_data(SUT.subscribed_topics[topic]['queue'], 0)
            next(gen, None)

            mock_CollectData.get_data.assert_not_called()
Exemple #5
0
    def test_get_from_collector_returns_data(self):
        mock_logger = mock.Mock(spec=Logger)

        collected_data = self.create_queue_data()
        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            type(mock_CollectData.return_value).get_data = mock.Mock(
                return_value=collected_data)
            SUT = TopicManager(None, self.config, mock_logger)

            gen = SUT.get_data(SUT.subscribed_topics[self.topic]['queue'], 0)
            data = next(gen, None)

            self.assertEqual(data, collected_data)

            data = next(gen, None)
            self.assertIsNone(data)
    def test_get_from_collector_not_called():
        mock_logger = mock.Mock(spec=Logger)

        topic = ''.join([
            random.choice(string.ascii_letters + string.digits)
            for n in range(32)
        ])
        config_dict = {}
        config_dict[topic] = {}
        config = configobj.ConfigObj(config_dict)

        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            SUT = TopicManager(None, config, mock_logger)

            gen = SUT.get_data(SUT.subscribed_topics[topic]['queue'], 0)
            next(gen, None)

            mock_CollectData.get_data.assert_not_called()
    def test_get_from_collector_returns_data(self):
        mock_logger = mock.Mock(spec=Logger)

        collected_data = self.create_queue_data()
        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            type(mock_CollectData.return_value).get_data = mock.Mock(
                return_value=collected_data)
            type(mock_CollectData.return_value).add_data = mock.Mock(
                return_value={})
            SUT = TopicManager(self.config, mock_logger)
            SUT.append_data(self.topic,
                            self.create_queue_data(),
                            fieldname=self.fieldname)
            gen = SUT.get_data(self.topic)
            data = next(gen, None)

            self.assertEqual(data, collected_data)

            data = next(gen, None)
            self.assertIsNone(data)
Exemple #8
0
    def runit(self, payload, file_pointer, check_results=True):
        test_data = json.load(file_pointer, object_hook=utils.byteify)
        config_dict = configobj.ConfigObj(test_data['config'])['MQTTSubscribeService']
        testruns = test_data['testruns']

        logger = Logger('IntegTest')
        topics_dict = config_dict.get('topics', {})
        manager = TopicManager(None, topics_dict, logger)

        on_message = utils.get_callback(payload, config_dict, manager, logger)

        for testrun in testruns:
            for topics in testrun['messages']:
                for topic in topics:
                    topic_info = topics[topic]
                    utils.send_msg(utils.send_direct_msg, payload, on_message, topic, topic_info)

            records = []
            for queue in manager.queues:
                for data in manager.get_data(queue):
                    if data:
                        records.append(data)
                    else:
                        break

            if check_results:
                results = testrun['results']
                result = {}
                found = False
                for result in results:
                    if 'single' in result['test']:
                        if payload in result['payloads']:
                            found = True
                            break
                self.assertTrue(found, "No results for %s" %payload)

                utils.check(self, payload, records, result['records'])
            else:
                for record in records:
                    print(record)
    def test_queue_good(self):
        mock_logger = mock.Mock(spec=Logger)

        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            type(mock_CollectData.return_value).get_data = mock.Mock(
                return_value={})
            SUT = TopicManager(self.config, mock_logger)
            elem_one = self.create_queue_data()
            elem_two = self.create_queue_data()
            elem_three = self.create_queue_data()
            SUT.append_data(self.topic, elem_one)
            SUT.append_data(self.topic, elem_two)
            SUT.append_data(self.topic, elem_three)

            elements = []
            for data in SUT.get_data(self.topic):
                elements.append(data)

            self.assertEqual(len(elements), 3)
            self.assertDictEqual(elements[0], elem_one)
            self.assertDictEqual(elements[1], elem_two)
            self.assertDictEqual(elements[2], elem_three)
Exemple #10
0
    def test_add_to_collector_returns_data(self):
        mock_logger = mock.Mock(spec=Logger)

        collected_data = self.create_queue_data()
        with mock.patch('user.MQTTSubscribe.CollectData') as mock_CollectData:
            type(mock_CollectData.return_value).get_data = mock.Mock(
                return_value={})
            type(mock_CollectData.return_value).add_data = mock.Mock(
                return_value=collected_data)
            SUT = TopicManager(self.config, mock_logger)
            SUT.append_data(self.topic,
                            self.create_queue_data(),
                            fieldname=self.fieldname)
            # ToDo - need to get the topic a better way
            # perhaps find it by searching on subscribed topic 'type'
            gen = SUT.get_data(SUT.collected_topic)
            data = next(gen, None)

            self.assertEqual(data, collected_data)

            data = next(gen, None)
            self.assertIsNone(data)