-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
better logging of fam failures #16967
Conversation
|
PRT Result
|
ad2bd00
to
67efb89
Compare
|
PRT Result
|
|
PRT Result
|
|
PRT Result
|
|
PRT Result
|
4221c48
to
7c562af
Compare
|
PRT Result
|
tests/foreman/sys/test_fam.py
Outdated
module_target_sat.get('/tmp/pytest.stdout', 'pytest.stdout') | ||
module_target_sat.get('/tmp/pytest.stderr', 'pytest.stderr') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this can't be the right approach :(
7c562af
to
8059901
Compare
|
PRT Result
|
|
PRT Result
|
8059901
to
9d792a5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't be easier :)
trigger: test-robottelo |
trigger: test-robottelo |
PRT Result
|
PRT Result
|
(cherry picked from commit 04976cc)
better logging of fam failures (#16967) (cherry picked from commit 04976cc) Co-authored-by: Evgeni Golov <[email protected]>
(cherry picked from commit 04976cc)
(cherry picked from commit 04976cc)
(cherry picked from commit 04976cc)
(cherry picked from commit 04976cc)
* disable pytest plugin autoloading when running FAM tests (#16975) pytest by default tries to load all plugins it finds on a system. pulpcore ships with own pytest plugins, but we do not install their dependencies (as we don't want to run pulpcore tests), which leads to pytest failing to load those plugins and breaking overall execution: Traceback (most recent call last): File "/usr/bin/pytest-3.11", line 33, in <module> sys.exit(load_entry_point('pytest==7.2.0', 'console_scripts', 'pytest')()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 190, in console_main code = main() ^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 148, in main config = _prepareconfig(args, plugins) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 329, in _prepareconfig config = pluginmanager.hook.pytest_cmdline_parse( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_hooks.py", line 265, in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 80, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 55, in _multicall gen.send(outcome) File "/usr/lib/python3.11/site-packages/_pytest/helpconfig.py", line 103, in pytest_cmdline_parse config: Config = outcome.get_result() ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_result.py", line 60, in get_result raise ex[1].with_traceback(ex[2]) File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 39, in _multicall res = hook_impl.function(*args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1058, in pytest_cmdline_parse self.parse(args) File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1346, in parse self._preparse(args, addopts=addopts) File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1229, in _preparse self.pluginmanager.load_setuptools_entrypoints("pytest11") File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 287, in load_setuptools_entrypoints plugin = ep.load() ^^^^^^^^^ File "/usr/lib64/python3.11/importlib/metadata/__init__.py", line 202, in load module = import_module(match.group('module')) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1204, in _gcd_import File "<frozen importlib._bootstrap>", line 1176, in _find_and_load File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "/usr/lib/python3.11/site-packages/_pytest/assertion/rewrite.py", line 168, in exec_module exec(co, module.__dict__) File "/usr/lib/python3.11/site-packages/pulp_ansible/pytest_plugin.py", line 3, in <module> import numpy as np ModuleNotFoundError: No module named 'numpy' Disable the autoloading by setting the PYTEST_DISABLE_PLUGIN_AUTOLOAD environment variable. (cherry picked from commit 6a91dd9) * simplify FAM test command (#16980) - we don't need to export vars, setting them should be sufficient - make can change directories for us, no need to cd (cherry picked from commit fefe1ea) * create a fake ntp module for FAM tests (#16997) * use sat.put() instead of sat.execute(echo) to place puppet files * allow passing in custom module code * create a fake ntp module the one in the repo is too old (cherry picked from commit 39769a5) * better logging of fam failures (#16967) (cherry picked from commit 04976cc)
* Create fake galaxy.yml to make the FAM Makefile happy (#16936) The data in the file is unused, but not being able to load it produces errors in the logs and is confusing when searching for an actual problem during testing. (cherry picked from commit c45e681) * disable pytest plugin autoloading when running FAM tests (#16975) pytest by default tries to load all plugins it finds on a system. pulpcore ships with own pytest plugins, but we do not install their dependencies (as we don't want to run pulpcore tests), which leads to pytest failing to load those plugins and breaking overall execution: Traceback (most recent call last): File "/usr/bin/pytest-3.11", line 33, in <module> sys.exit(load_entry_point('pytest==7.2.0', 'console_scripts', 'pytest')()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 190, in console_main code = main() ^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 148, in main config = _prepareconfig(args, plugins) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 329, in _prepareconfig config = pluginmanager.hook.pytest_cmdline_parse( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_hooks.py", line 265, in __call__ return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 80, in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 55, in _multicall gen.send(outcome) File "/usr/lib/python3.11/site-packages/_pytest/helpconfig.py", line 103, in pytest_cmdline_parse config: Config = outcome.get_result() ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pluggy/_result.py", line 60, in get_result raise ex[1].with_traceback(ex[2]) File "/usr/lib/python3.11/site-packages/pluggy/_callers.py", line 39, in _multicall res = hook_impl.function(*args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1058, in pytest_cmdline_parse self.parse(args) File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1346, in parse self._preparse(args, addopts=addopts) File "/usr/lib/python3.11/site-packages/_pytest/config/__init__.py", line 1229, in _preparse self.pluginmanager.load_setuptools_entrypoints("pytest11") File "/usr/lib/python3.11/site-packages/pluggy/_manager.py", line 287, in load_setuptools_entrypoints plugin = ep.load() ^^^^^^^^^ File "/usr/lib64/python3.11/importlib/metadata/__init__.py", line 202, in load module = import_module(match.group('module')) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1204, in _gcd_import File "<frozen importlib._bootstrap>", line 1176, in _find_and_load File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "/usr/lib/python3.11/site-packages/_pytest/assertion/rewrite.py", line 168, in exec_module exec(co, module.__dict__) File "/usr/lib/python3.11/site-packages/pulp_ansible/pytest_plugin.py", line 3, in <module> import numpy as np ModuleNotFoundError: No module named 'numpy' Disable the autoloading by setting the PYTEST_DISABLE_PLUGIN_AUTOLOAD environment variable. (cherry picked from commit 6a91dd9) * simplify FAM test command (#16980) - we don't need to export vars, setting them should be sufficient - make can change directories for us, no need to cd (cherry picked from commit fefe1ea) * create a fake ntp module for FAM tests (#16997) * use sat.put() instead of sat.execute(echo) to place puppet files * allow passing in custom module code * create a fake ntp module the one in the repo is too old (cherry picked from commit 39769a5) * better logging of fam failures (#16967) (cherry picked from commit 04976cc)
Problem Statement
The output of FAM tests is mangled due to how pytest tries to print the big
result
object.There are no linebreaks and it's super hard to find the failure.
Additionally the double assert is pointless, as it asserts twice the same thing: the result is successful.
Solution
Stop asserting
PASSED
in stdout (additionally saves the case where there is the stringPASSED
in the output for some reason, but the test actually failed).Pass a custom error output to the
status == 0
assertion, including stdout, stderr and the status code.Related Issues