Merge "Make console logging optional"
This commit is contained in:
commit
75886594b0
@ -33,30 +33,6 @@ import tempfile
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def configure_logging(service):
|
|
||||||
"""Configure a stream and file log for a given service
|
|
||||||
|
|
||||||
:param: service - name of service for log file.
|
|
||||||
generates `/var/log/{service_name}_query.log`
|
|
||||||
"""
|
|
||||||
logger.setLevel(logging.INFO)
|
|
||||||
console = logging.StreamHandler()
|
|
||||||
logfile = logging.FileHandler('/var/log/keystone_query.log', 'a')
|
|
||||||
|
|
||||||
console.setLevel(logging.INFO)
|
|
||||||
logfile.setLevel(logging.INFO)
|
|
||||||
|
|
||||||
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
|
|
||||||
# Make sure we're using UTC for everything.
|
|
||||||
formatter.converter = time.gmtime
|
|
||||||
|
|
||||||
console.setFormatter(formatter)
|
|
||||||
logfile.setFormatter(formatter)
|
|
||||||
|
|
||||||
logger.addHandler(console)
|
|
||||||
logger.addHandler(logfile)
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceTest(object):
|
class ServiceTest(object):
|
||||||
def pre_test(self, *args, **kwargs):
|
def pre_test(self, *args, **kwargs):
|
||||||
"""Any actions that need to be taken before starting the timer
|
"""Any actions that need to be taken before starting the timer
|
||||||
@ -81,7 +57,7 @@ class ServiceTest(object):
|
|||||||
"""Any post-test clean up work that needs to be done and not timed."""
|
"""Any post-test clean up work that needs to be done and not timed."""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def configure_logger(self, logger):
|
def configure_logger(self, logger, console_logging=False):
|
||||||
"""Configure a stream and file log for a given service
|
"""Configure a stream and file log for a given service
|
||||||
|
|
||||||
:param: service - name of service for log file.
|
:param: service - name of service for log file.
|
||||||
@ -89,13 +65,13 @@ class ServiceTest(object):
|
|||||||
:param: logger - logger to be configure for the test.
|
:param: logger - logger to be configure for the test.
|
||||||
Filename will be based on the test's `service_name`
|
Filename will be based on the test's `service_name`
|
||||||
property
|
property
|
||||||
|
:param: console_logging - flag controlling whether or not a console
|
||||||
|
logger is used
|
||||||
"""
|
"""
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
console = logging.StreamHandler()
|
|
||||||
filename = '/var/log/{}_rolling.log'.format(self.service_name)
|
filename = '/var/log/{}_rolling.log'.format(self.service_name)
|
||||||
logfile = logging.FileHandler(filename, 'a')
|
logfile = logging.FileHandler(filename, 'a')
|
||||||
|
|
||||||
console.setLevel(logging.INFO)
|
|
||||||
logfile.setLevel(logging.INFO)
|
logfile.setLevel(logging.INFO)
|
||||||
|
|
||||||
formatter = logging.Formatter(
|
formatter = logging.Formatter(
|
||||||
@ -103,12 +79,16 @@ class ServiceTest(object):
|
|||||||
# Make sure we're using UTC for everything.
|
# Make sure we're using UTC for everything.
|
||||||
formatter.converter = time.gmtime
|
formatter.converter = time.gmtime
|
||||||
|
|
||||||
console.setFormatter(formatter)
|
|
||||||
logfile.setFormatter(formatter)
|
logfile.setFormatter(formatter)
|
||||||
|
|
||||||
logger.addHandler(console)
|
|
||||||
logger.addHandler(logfile)
|
logger.addHandler(logfile)
|
||||||
|
|
||||||
|
if console_logging:
|
||||||
|
console = logging.StreamHandler()
|
||||||
|
console.setLevel(logging.INFO)
|
||||||
|
console.setFormatter(formatter)
|
||||||
|
logger.addHandler(console)
|
||||||
|
|
||||||
# This is useful to a lot of tests, so implement it here for re-use
|
# This is useful to a lot of tests, so implement it here for re-use
|
||||||
def get_session(self):
|
def get_session(self):
|
||||||
auth_url = os.environ['OS_AUTH_URL']
|
auth_url = os.environ['OS_AUTH_URL']
|
||||||
@ -201,7 +181,12 @@ class TestRunner(object):
|
|||||||
def write_summary(self):
|
def write_summary(self):
|
||||||
percentage = (self.failures / self.attempts) * 100
|
percentage = (self.failures / self.attempts) * 100
|
||||||
# Display minimum of 2 digits, but don't use decimals.
|
# Display minimum of 2 digits, but don't use decimals.
|
||||||
logger.info("%2.0f%% failure rate", percentage)
|
percent_str = "%2.0f" % percentage
|
||||||
|
|
||||||
|
logger.info("%s%% failure rate", percent_str)
|
||||||
|
|
||||||
|
# Output to stdout for use by other programs
|
||||||
|
print(percent_str)
|
||||||
|
|
||||||
def test_loop(self, test):
|
def test_loop(self, test):
|
||||||
"""Main loop to execute tests
|
"""Main loop to execute tests
|
||||||
@ -276,7 +261,8 @@ def args(arg_list):
|
|||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
usage='%(prog)s',
|
usage='%(prog)s',
|
||||||
description='OpenStack activity simulators',
|
description=('OpenStack activity simulators. Returns percentage of '
|
||||||
|
'failed attempts at creating/deleting resources.'),
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@ -284,6 +270,14 @@ def args(arg_list):
|
|||||||
help=("Name of test to execute, 'list' for a list of available"
|
help=("Name of test to execute, 'list' for a list of available"
|
||||||
" tests")
|
" tests")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
'-c',
|
||||||
|
'--console',
|
||||||
|
help=("Log output to the console for interactive viewing"),
|
||||||
|
action='store_true',
|
||||||
|
)
|
||||||
|
|
||||||
return parser.parse_args(arg_list)
|
return parser.parse_args(arg_list)
|
||||||
|
|
||||||
|
|
||||||
@ -305,7 +299,7 @@ if __name__ == "__main__":
|
|||||||
target_test_class = find_test(all_args.test)
|
target_test_class = find_test(all_args.test)
|
||||||
|
|
||||||
target_test = target_test_class()
|
target_test = target_test_class()
|
||||||
target_test.configure_logger(logger)
|
target_test.configure_logger(logger, console_logging=all_args.console)
|
||||||
|
|
||||||
runner = TestRunner()
|
runner = TestRunner()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user