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)
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)
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()
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)
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)
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)