cfme.utils.log_validator module¶
-
exception
cfme.utils.log_validator.
FailPatternMatchError
(pattern, message, line)[source]¶ Bases:
Exception
Custom exception for LogValidator
-
class
cfme.utils.log_validator.
LogValidator
(remote_filename, **kwargs)[source]¶ Bases:
object
Log content validator class provides methods to monitor the log content before test is started, and validate the content of log during test execution, according to predefined patterns. Predefined patterns are:
Logs which should be skipped. Skip further checks on particular line if matched
Logs which should cause failure of test.
Logs which are expected to be matched, otherwise fail.
The priority of patterns to be checked are defined in above order. Skipping patterns have priority over other ones, to be possible to skip particular ERROR log, but fail for wider range of other ERRORs.
Note: If failures pattern matched in log; It will raise FailPatternMatchError
- Parameters
remote_filename – path to the remote log file
skip_patterns – array of skip regex patterns
failure_patterns – array of failure regex patterns
matched_patterns – array of expected regex patterns to be matched
Usage:
.. code-block:: python evm_tail = LogValidator('/var/www/miq/vmdb/log/evm.log', skip_patterns=['PARTICULAR_ERROR'], failure_patterns=['.*ERROR.*'], matched_patterns=['PARTICULAR_INFO']) evm_tail.start_monitoring() evm_tail.validate() # evm_tail.validate(wait="30s")
-
property
matches
¶ Collect match count in log
Returns (dict): Pattern match count dictionary
-
validate
(wait=None, message='waiting for log validation', **kwargs)[source]¶ Validate log pattern
- Parameters
wait – Wait for log validation (timeout)
message – Specific message.
Returns (bool): True if expected pattern matched in log else False Raise:
TimedOutError: If failed to match pattern in respective timeout FailPatternMatchError: If failure pattern matched
-
cfme.utils.log_validator.
wait_for
(func, func_args=[], func_kwargs={}, *, logger=<TraceLogger cfme (INFO)>, **kwargs)¶ Waits for a certain amount of time for an action to complete Designed to wait for a certain length of time, either linearly in 1 second steps, or exponentially, up to a maximum. Returns the output from the function once it completes successfully, along with the time taken to complete the command.
It tries to use
time.monotonic()
, if it is not present, falls back totime.time()
, but it then is not resistant against system time changes.- Note: If using the expo keyword, the returned elapsed time will be inaccurate
as wait_for does not know the exact time that the function returned correctly, only that it returned correctly at last check.
- Parameters
func – A function to be run
func_args – A list of function arguments to be passed to func
func_kwargs – A dict of function keyword arguments to be passed to func
num_sec – An int describing the number of seconds to wait before timing out.
timeout – Either an int describing the number of seconds to wait before timing out. Or a
timedelta
object. Or a string formatted like1h 10m 5s
. This then sets thenum_sec
variable.expo – A boolean flag toggling exponential delay growth.
message – A string containing a description of func’s operation. If None, defaults to the function’s name.
fail_condition – An object describing the failure condition that should be tested against the output of func. If func() == fail_condition, wait_for continues to wait. Can be a callable which takes the result and returns boolean whether to fail. You can also specify it as a set, that way it checks whether it is present in the iterable.
handle_exception – A boolean controlling the handling of excepetions during func() invocation. If set to True, in cases where func() results in an exception, clobber the exception and treat it as a fail_condition.
delay – An integer describing the number of seconds to delay before trying func() again.
fail_func – A function to be run after every unsuccessful attempt to run func()
quiet – Do not write time report to the log (default False)
very_quiet – Do not log unless there was an error (default False). Implies quiet.
silent_failure – Even if the entire attempt times out, don’t throw a exception.
log_on_loop – Fire off a log.info message indicating we’re still waiting at each iteration of the wait loop
- Returns
A tuple containing the output from func() and a float detailing the total wait time.
- Raises
TimedOutError – If num_sec is exceeded after an unsuccessful func() invocation.