Ejemplo n.º 1
0
    def test_log_output(self, lc):
        test_input = 'all=file'

        configure_loggers_from_string(test_input,
                                      TEST_OUTPUT_LOG,
                                      propagate=True)

        my_logger = logging.getLogger(LOGGER_API_CALLS_NAME)

        self.assertNotEqual(
            my_logger, None,
            'Valid named logger %s expected.' % LOGGER_API_CALLS_NAME)

        max_size = 1000
        result = 'This is fake return data'
        return_name = 'Return'
        if max_size and len(repr(result)) > max_size:
            result = '{:.{sz}s}...' \
                .format(repr(result), sz=max_size)
        else:
            result = '%s' % repr(result)

        my_logger.debug('%s: %s: %s', return_name, 'FakeMethodName', result)

        lc.check(('pywbem.api', 'DEBUG',
                  "Return: FakeMethodName: 'This is fake return data'"))
Ejemplo n.º 2
0
 def setup_method(self):
     """Setup that is run before each test method."""
     # pylint: disable=protected-access
     WBEMConnection._reset_logging_config()
     configure_loggers_from_string('all=file',
                                   TEST_OUTPUT_LOG,
                                   propagate=True,
                                   connection=True)
     # pylint: disable=attribute-defined-outside-init
     self.logger = logging.getLogger(LOGGER_API_CALLS_NAME)
     assert self.logger is not None
Ejemplo n.º 3
0
def test_loggers_from_string(testcase, param, expected_result, log_file,
                             connection_defined):
    """ Test of logging configuration from String input"""
    # pylint: disable=protected-access

    # Logging handlers are static.  We must clear them between tests
    # Remove any handlers from loggers for this test
    WBEMConnection._reset_logging_config()  # pylint: disable=protected-access
    api_logger = logging.getLogger(LOGGER_API_CALLS_NAME)
    api_logger.handlers = []
    http_logger = logging.getLogger(LOGGER_HTTP_NAME)
    http_logger.handlers = []

    if connection_defined:
        assert 'TODO: Test with connections not yet implemented'
        conn = WBEMConnection('http:/blah')
    else:
        conn = True  # for all future connections

    configure_loggers_from_string(param, log_filename=log_file,
                                  connection=conn, propagate=True)

    # Ensure that exceptions raised in the remainder of this function
    # are not mistaken as expected exceptions
    assert testcase.exp_exc_types is None

    api_logger = logging.getLogger(LOGGER_API_CALLS_NAME)
    http_logger = logging.getLogger(LOGGER_HTTP_NAME)

    if 'level' in expected_result:
        level = expected_result['level']
        if level[0]:
            compare(api_logger.level, level[0])
        if level[1]:
            compare(http_logger.level, level[1])

    if 'handler' in expected_result:
        handler = expected_result['handler']
        if handler[0]:
            assert len(api_logger.handlers) == 1
            assert isinstance(api_logger.handlers[0], handler[0])
        if handler[1]:
            assert len(http_logger.handlers) == 1
            assert isinstance(http_logger.handlers[0], handler[1])

    if 'detail' in expected_result:
        exp_detail_levels = expected_result['detail']
        if connection_defined:
            # TODO add test for when connection param exists
            # need to get to recorder and test detail level
            assert'TODO: Test with connections not yet implemented'
        else:
            detail_levels = WBEMConnection._log_detail_levels
            assert detail_levels['api'], exp_detail_levels[0] is True
            assert detail_levels['http'], exp_detail_levels[1]

    # remove handlers from our loggers.
    for h in api_logger.handlers:
        api_logger.removeHandler(h)
        h.flush()
        h.close()
    for h in http_logger.handlers:
        http_logger.removeHandler(h)
        h.flush()
        h.close()

    # Close log file
    if log_file:
        if os.path.exists(log_file):
            os.remove(log_file)
Ejemplo n.º 4
0
 def teardown_method(self):
     LogCapture.uninstall_all()
     configure_loggers_from_string('all=off', connection=True)
     if os.path.isfile(TEST_OUTPUT_LOG):
         os.remove(TEST_OUTPUT_LOG)
Ejemplo n.º 5
0
    def loggers_from_string_test(self,
                                 param,
                                 expected_result,
                                 log_file=None,
                                 connection_defined=False):
        """ Common test for successful parsing"""
        # pylint: disable=protected-access

        # logging handlers are static.  We must clear them between tests
        # Remove any handlers from loggers for this test
        api_logger = logging.getLogger(LOGGER_API_CALLS_NAME)
        api_logger.handlers = []
        http_logger = logging.getLogger(LOGGER_HTTP_NAME)
        http_logger.handlers = []

        if connection_defined:
            self.fail('TODO: Test with connections not yet implemented')
            conn = WBEMConnection('http:/blah')
        else:
            conn = True  # for all future connections

        if expected_result == 'error':
            try:
                configure_loggers_from_string(param,
                                              log_filename=log_file,
                                              connection=conn,
                                              propagate=True)
                self.fail('Exception expected')
            except ValueError:
                pass
        else:
            configure_loggers_from_string(param,
                                          log_filename=log_file,
                                          connection=conn,
                                          propagate=True)

            api_logger = logging.getLogger(LOGGER_API_CALLS_NAME)
            http_logger = logging.getLogger(LOGGER_HTTP_NAME)

            if 'level' in expected_result:
                level = expected_result['level']
                if level[0]:
                    compare(api_logger.level, level[0])
                if level[1]:
                    compare(http_logger.level, level[1])

            if 'handler' in expected_result:
                handler = expected_result['handler']
                if handler[0]:
                    self.assertEqual(len(api_logger.handlers), 1)
                    self.assertTrue(
                        isinstance(api_logger.handlers[0], handler[0]))
                if handler[1]:
                    self.assertEqual(len(http_logger.handlers), 1)
                    self.assertTrue(
                        isinstance(http_logger.handlers[0], handler[1]))

            if 'detail' in expected_result:
                exp_detail_levels = expected_result['detail']
                if connection_defined:
                    # TODO add test for when connection param exists
                    # need to get to recorder and test detail level
                    self.fail(
                        'TODO: Test with connections not yet implemented')
                else:
                    detail_levels = WBEMConnection._log_detail_levels
                    self.assertTrue(detail_levels['api'], exp_detail_levels[0])
                    self.assertTrue(detail_levels['http'],
                                    exp_detail_levels[1])

        # remove handlers from our loggers.
        for h in api_logger.handlers:
            api_logger.removeHandler(h)
            h.flush()
            h.close()
        for h in http_logger.handlers:
            http_logger.removeHandler(h)
            h.flush()
            h.close()

        # Close log file
        if log_file:
            if os.path.exists(log_file):
                os.remove(log_file)