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'"))
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
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)
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)
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)