Ejemplo n.º 1
0
    def test_trace_logged_with_debug_not_set():
        with mock.patch.dict(sys.modules, {'weeutil.logger': weeutil.logger}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                from user.MQTTSubscribe import Logger

                weewx.debug = 0
                mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access
                mode = random_string()
                message = random_string()

                SUT = Logger(mode)

                SUT.trace(message)

                SUT._logmsg.log.assert_called_once_with(
                    5, SUT.MSG_FORMAT, mode, message)  # pylint: disable=protected-access

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
Ejemplo n.º 2
0
    def test_error_logged():
        with mock.patch.dict(sys.modules, {'weeutil.logger': None}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                with mock.patch('user.MQTTSubscribe.syslog') as mock_syslog:
                    from user.MQTTSubscribe import Logger
                    log_level = random.randint(1, 99)
                    mode = random_string()
                    message = random_string()
                    mock_logging._checkLevel.return_value = random.randint(
                        1, 40)  # pylint: disable=protected-access
                    type(mock_syslog).LOG_ERR = mock.PropertyMock(
                        return_value=log_level)

                    SUT = Logger(mode)

                    SUT.error(message)

                    mock_syslog.syslog.assert_called_once_with(
                        log_level,
                        '(%s) user.MQTTSubscribe: %s' % (mode, message))

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
Ejemplo n.º 3
0
    def test_init_console_set():
        with mock.patch.dict(sys.modules, {'weeutil.logger': weeutil.logger}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                from user.MQTTSubscribe import Logger

                mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access
                mode = ''.join([
                    random.choice(string.ascii_letters + string.digits)
                    for n in range(32)
                ])  # pylint: disable=unused-variable

                SUT = Logger(mode, console=True)

                SUT._logmsg.addHandler.assert_called_once()  # pylint: disable=protected-access

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)
Ejemplo n.º 4
0
    def test_error_not_logged():
        with mock.patch.dict(sys.modules, {'weeutil.logger': None}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                with mock.patch('user.MQTTSubscribe.syslog') as mock_syslog:
                    from user.MQTTSubscribe import Logger

                    mode = random_string()
                    message = random_string()
                    mock_logging._checkLevel.return_value = random.randint(
                        41, 99)  # pylint: disable=protected-access

                    SUT = Logger(mode)

                    SUT.error(message)

                    mock_syslog.syslog.assert_not_called()

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
Ejemplo n.º 5
0
    def test_trace_logged_with_debug_set():
        with mock.patch.dict(sys.modules, {'weeutil.logger': weeutil.logger}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                from user.MQTTSubscribe import Logger

                weewx.debug = 2
                mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access
                mode = ''.join([
                    random.choice(string.ascii_letters + string.digits)
                    for n in range(32)
                ])  # pylint: disable=unused-variable
                message = ''.join([
                    random.choice(string.ascii_letters + string.digits)
                    for n in range(32)
                ])  # pylint: disable=unused-variable

                SUT = Logger(mode)

                SUT.trace(message)

                SUT._logmsg.debug.assert_called_once_with(
                    SUT.MSG_FORMAT, mode, message)  # pylint: disable=protected-access

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)
Ejemplo n.º 6
0
    def test_trace_not_logged():
        with mock.patch.dict(sys.modules, {'weeutil.logger': None}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                with mock.patch('user.MQTTSubscribe.syslog') as mock_syslog:
                    from user.MQTTSubscribe import Logger
                    weewx.debug = 0
                    mode = ''.join([
                        random.choice(string.ascii_letters + string.digits)
                        for n in range(32)
                    ])  # pylint: disable=unused-variable
                    message = ''.join([
                        random.choice(string.ascii_letters + string.digits)
                        for n in range(32)
                    ])  # pylint: disable=unused-variable
                    mock_logging._checkLevel.return_value = random.randint(
                        41, 99)  # pylint: disable=protected-access

                    SUT = Logger(mode)

                    SUT.trace(message)

                    mock_syslog.syslog.assert_not_called()

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)
Ejemplo n.º 7
0
    def test_init_filename_set():
        with mock.patch.dict(sys.modules, {'weeutil.logger': weeutil.logger}):
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                from user.MQTTSubscribe import Logger

                mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access

                mock_file_handler = mock.Mock()
                mock_logging.FileHandler.return_value = mock_file_handler
                mode = ''.join([
                    random.choice(string.ascii_letters + string.digits)
                    for n in range(32)
                ])  # pylint: disable=unused-variable
                filename = ''.join([
                    random.choice(string.ascii_letters + string.digits)
                    for n in range(32)
                ])  # pylint: disable=unused-variable

                SUT = Logger(mode, filename=filename)

                mock_logging.Formatter.assert_called_once()
                mock_logging.FileHandler.assert_called_once()
                mock_file_handler.setLevel.assert_called_once()
                mock_file_handler.setFormatter.assert_called_once()
                SUT._logmsg.addHandler.assert_called_once()  # pylint: disable=protected-access
Ejemplo n.º 8
0
    def test_init_filename(self):
        with mock.patch.dict(sys.modules, {'weeutil.logger': None}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                with mock.patch('user.MQTTSubscribe.open') as mock_open:
                    from user.MQTTSubscribe import Logger
                    mode = ''.join([
                        random.choice(string.ascii_letters + string.digits)
                        for n in range(32)
                    ])  # pylint: disable=unused-variable
                    filename = ''.join([
                        random.choice(string.ascii_letters + string.digits)
                        for n in range(32)
                    ])  # pylint: disable=unused-variable

                    mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access
                    Logger(mode, filename=filename)

                    self.assertEqual(mock_open.call_count, 1)
                    mock_open.assert_called_once_with(filename, 'w')

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)
    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(topics_dict, logger)

        unit_system_name = topics_dict.get('unit_system', 'US').strip().upper()
        if unit_system_name not in weewx.units.unit_constants:
            raise ValueError("MQTTSubscribe: Unknown unit system: %s" %
                             unit_system_name)
        unit_system = weewx.units.unit_constants[unit_system_name]

        on_message = utils.get_callback(payload, config_dict, manager, logger)
        for testrun in testruns:
            start_ts = time.time()
            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)

            end_ts = time.time()
            records = []
            for topic in sorted(
                    manager.subscribed_topics
            ):  # todo - dependent on topic names - not great
                data = manager.get_accumulated_data(topic, start_ts, end_ts,
                                                    unit_system)
                records.append(data)

            if check_results:
                results = testrun['results']
                result = {}
                found = False
                for result in results:
                    if 'accumulate' 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)
Ejemplo n.º 10
0
    def test_trace_logged_to_file():
        with mock.patch.dict(sys.modules, {'weeutil.logger': None}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                with mock.patch('user.MQTTSubscribe.open') as mock_open:
                    with mock.patch(
                            'user.MQTTSubscribe.syslog') as mock_syslog:
                        from user.MQTTSubscribe import Logger
                        mock_file = mock.Mock()
                        mock_open.return_value = mock_file
                        log_level = random.randint(1, 99)
                        mode = ''.join([
                            random.choice(string.ascii_letters + string.digits)
                            for n in range(32)
                        ])  # pylint: disable=unused-variable
                        message = ''.join([
                            random.choice(string.ascii_letters + string.digits)
                            for n in range(32)
                        ])  # pylint: disable=unused-variable
                        filename = ''.join([
                            random.choice(string.ascii_letters + string.digits)
                            for n in range(32)
                        ])  # pylint: disable=unused-variable
                        mock_logging._checkLevel.return_value = random.randint(
                            1, 10)  # pylint: disable=protected-access
                        type(mock_syslog).LOG_DEBUG = mock.PropertyMock(
                            return_value=log_level)

                        SUT = Logger(mode, filename=filename)

                        SUT.trace(message)

                        mock_syslog.syslog.assert_called_once_with(
                            log_level,
                            '(%s) user.MQTTSubscribe: %s' % (mode, message))
                        mock_file.write.assert_called_once_with(
                            'user.MQTTSubscribe: %s\n' % message)

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)
Ejemplo n.º 11
0
    def test_init_set_trace_log_level(self):
        log_level = 5

        with mock.patch.dict(sys.modules, {'weeutil.logger': weeutil.logger}):
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                from user.MQTTSubscribe import Logger

                mock_logging._checkLevel.return_value = log_level  # pylint: disable=protected-access
                mock_logging.getLevelName.return_value = 'Level %i' % log_level

                mock_grandparent_handler = mock.Mock()
                mock_grandparent_logger = mock.Mock()
                mock_grandparent_logger.handlers = [mock_grandparent_handler]
                mock_grandparent_logger.parent = None

                mock_parent_handler = mock.Mock()
                mock_parent_logger = mock.Mock()
                mock_parent_logger.handlers = [mock_parent_handler]
                mock_parent_logger.parent = mock_grandparent_logger

                mock_logger = mock.Mock()
                mock_logger.parent = mock_parent_logger
                mock_logging.getLogger.return_value = mock_logger

                SUT = Logger(''.join([
                    random.choice(string.ascii_letters + string.digits)
                    for n in range(32)
                ]),
                             level=''.join([
                                 random.choice(string.ascii_letters +
                                               string.digits)
                                 for n in range(32)
                             ]))

                mock_logging.addLevelName.assert_called_once_with(
                    log_level, 'TRACE')
                SUT._logmsg.setLevel.called_once_with(log_level)  # pylint: disable=protected-access

                mock_grandparent_handler.setLevel.called_once_with(log_level)
                mock_parent_handler.setLevel.called_once_with(log_level)

                self.assertEqual(SUT._logmsg.addHandler.call_count, 2)  # pylint: disable=protected-access
                SUT._logmsg.addHandler.called_once_with(
                    mock_grandparent_handler)  # pylint: disable=protected-access
                SUT._logmsg.addHandler.called_once_with(mock_parent_handler)  # pylint: disable=protected-access
Ejemplo n.º 12
0
    def test_init_filename_set():
        with mock.patch.dict(sys.modules, {'weeutil.logger': weeutil.logger}):
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                from user.MQTTSubscribe import Logger

                mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access

                mock_file_handler = mock.Mock()
                mock_logging.FileHandler.return_value = mock_file_handler
                mode = random_string()
                filename = random_string()

                SUT = Logger(mode, filename=filename)

                mock_logging.Formatter.assert_called_once()
                mock_logging.FileHandler.assert_called_once()
                mock_file_handler.setLevel.assert_called_once()
                mock_file_handler.setFormatter.assert_called_once()
                SUT._logmsg.addHandler.assert_called_once()  # pylint: disable=protected-access
Ejemplo n.º 13
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)
Ejemplo n.º 14
0
    def runit(self, payload, file_pointer):
        test_data = json.load(file_pointer, object_hook=utils.byteify)
        config_dict = configobj.ConfigObj(
            test_data['config'])['MQTTSubscribeService']
        testruns = test_data['testruns']

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

        on_message = utils.get_callback(payload, config_dict, manager, logger)
        for testrun in testruns:
            start_ts = time.time()
            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)

            end_ts = time.time()
            results = testrun['results']
            result = {}
            found = False
            for result in results:
                if 'accumulate' in result['test']:
                    if payload in result['payloads']:
                        found = True
                        break

            self.assertTrue(found, "No results for %s" % payload)

            records = []
            for topic in sorted(
                    manager.subscribed_topics
            ):  # todo - dependent on topic names - not great
                data = manager.get_accumulated_data(topic, start_ts, end_ts,
                                                    result['units'])
                records.append(data)

            utils.check(self, payload, records, result['records'])
Ejemplo n.º 15
0
    def test_init_console_set():
        with mock.patch.dict(sys.modules, {'weeutil.logger': weeutil.logger}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                from user.MQTTSubscribe import Logger

                mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access
                mode = random_string()

                SUT = Logger(mode, console=True)

                SUT._logmsg.addHandler.assert_called_once()  # pylint: disable=protected-access

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
Ejemplo n.º 16
0
    def test_init_filename(self):
        with mock.patch.dict(sys.modules, {'weeutil.logger': None}):
            import user.MQTTSubscribe
            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                import importlib
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member
            with mock.patch('user.MQTTSubscribe.logging') as mock_logging:
                with mock.patch('user.MQTTSubscribe.open') as mock_open:
                    from user.MQTTSubscribe import Logger
                    mode = random_string()
                    filename = random_string()

                    mock_logging._checkLevel.return_value = 0  # pylint: disable=protected-access
                    Logger(mode, filename=filename)

                    self.assertEqual(mock_open.call_count, 1)
                    mock_open.assert_called_once_with(filename, 'w')

            if PY2:
                reload(user.MQTTSubscribe)  # (only a python 3 error) pylint: disable=undefined-variable
            else:
                importlib.reload(user.MQTTSubscribe)  # (only a python 2 error) pylint: disable=no-member