improve test logging and replace psycopg2 with psycopg2-binary

This change replaces psycopg2 with psycopg2-binary removing
the need to have postgresql header files to compile the module
when running tests locally. nova did this years ago, so this
is just making placement use the binary wheel as well.

Additionally, this fixes how server-side logs are reported in
tox. Effectively we now use the OS_LOG_CAPTURE env var
to control if logs are printed. By default all logs to
stdout and stderr are captured and not printed to keep existing
behavior. You can now define OS_DEBUG=1 and OS_LOG_CAPTURE=0 to
change the  default log level to debug (from info) and allow
the logs to be printed when tests fail.

Change-Id: I576bdc102f10c6e50a5420590ac64f50dee124c0
This commit is contained in:
Sean Mooney 2025-03-25 16:25:55 +00:00 committed by sean mooney
parent b84329b3f7
commit 4eeb18ef7d
3 changed files with 3 additions and 3 deletions

View File

@ -51,8 +51,6 @@ class Logging(log.ConfigureLogging):
# If level was not otherwise set, default to INFO.
if self.level is None:
self.level = logging.INFO
# Always capture logs, unlike the parent.
self.capture_logs = True
def setUp(self):
super(Logging, self).setUp()

View File

@ -6,7 +6,7 @@ fixtures>=3.0.0 # Apache-2.0/BSD
# psycopg2 and PYMySQL. You can workaround them using sys_platform qualifier.
# See the https://review.opendev.org/#/c/671249/ for details. However, we
# don't use it here to keep the consistency with global requirements.
psycopg2>=2.8 # LGPL/ZPL
psycopg2-binary>=2.8 # LGPL/ZPL
PyMySQL>=0.8.0 # MIT License
oslotest>=3.5.0 # Apache-2.0
stestr>=1.0.0 # Apache-2.0

View File

@ -15,6 +15,7 @@ setenv =
LC_ALL=en_US.utf-8
OS_STDOUT_CAPTURE=1
OS_STDERR_CAPTURE=1
OS_LOG_CAPTURE = {env:OS_LOG_CAPTURE:1}
OS_TEST_TIMEOUT=160
PYTHONDONTWRITEBYTECODE=1
deps = -r{toxinidir}/test-requirements.txt
@ -22,6 +23,7 @@ deps = -r{toxinidir}/test-requirements.txt
commands =
stestr run {posargs}
passenv =
OS_LOG_CAPTURE
OS_DEBUG
GENERATE_HASHES
# there is also secret magic in subunit-trace which lets you run in a fail only