freeipa/ipatests/ipa-run-tests
Petr Viktorin c47f3154be Make BeakerLib logging less verbose
Logs from Beaker jobs are normally very brief, with the standard
output/error containing detailed information. Make ipa-run-tests
with BeakerLib plugin follow this convention.

Only include INFO and higher level messages in the Beaker logs.
Downgrade several message levels to DEBUG.
Log to console using Python logging instead of showing the Beaker logs.

Since ipa-run-tests sets up its own logging, Nose's own log
handling just causes duplicate messages. Disable it with --nologcapture.
2013-07-15 15:49:14 +02:00

82 lines
2.4 KiB
Python
Executable File

#!/usr/bin/python
# Authors:
# Petr Viktorin <pviktori@redhat.com>
# Jason Gerard DeRose <jderose@redhat.com>
#
# Copyright (C) 2008-2013 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Nose wrapper for running an installed (not in-tree) IPA test suite
Any command-line arguments are passed directly to Nose.
Note that any relative paths given will be based on the ipatests module's path
"""
import sys
import os
from os import path
import logging
import nose
from ipapython.ipa_log_manager import log_mgr
import ipatests
from ipatests.beakerlib_plugin import BeakerLibPlugin
from ipatests.order_plugin import OrderTests
cmd = [
sys.argv[0],
'--with-doctest',
'--doctest-tests',
'--with-ordered-tests',
'--exclude=plugins',
'--nologcapture',
'--logging-filter=-paramiko',
'--where', os.path.dirname(ipatests.__file__),
]
cmd += sys.argv[1:]
# This must be set so ipalib.api gets initialized property for tests:
os.environ['IPA_UNIT_TEST_MODE'] = 'cli_test'
# Forward IPA logging to a normal Python logger. Nose's logcapture plugin
# can't work with IPA-managed loggers
class LogHandler(logging.Handler):
name = 'forwarding log handler'
logger = logging.getLogger('IPA')
def emit(self, record):
self.logger.log(record.levelno, self.format(record))
if 'console' in log_mgr.handlers:
log_mgr.remove_handler('console')
log_mgr.configure(
{
'default_level': 'DEBUG',
'handlers': [{'log_handler': LogHandler(),
'format': '[%(name)s] %(message)s',
'level': 'debug'},
{'level': 'debug',
'name': 'console',
'stream': sys.stderr}]},
configure_state='tests')
nose.main(argv=cmd, addplugins=[BeakerLibPlugin(), OrderTests()])