From 01e4f0badce8386144edad55bf0ff24baa02182d Mon Sep 17 00:00:00 2001 From: Agate Berriot Date: Thu, 4 Aug 2022 09:31:48 +0200 Subject: [PATCH] tox: fixed inconsistent / obscure db names during tests (#67933) --- hobo/test_utils.py | 23 ++++++++++++----------- tests/settings.py | 2 +- tests_authentic/settings.py | 2 +- tests_multipublik/settings.py | 2 +- tests_multitenant/settings.py | 2 +- tests_passerelle/settings.py | 2 +- tests_schemas/settings.py | 2 +- 7 files changed, 18 insertions(+), 17 deletions(-) diff --git a/hobo/test_utils.py b/hobo/test_utils.py index 91adf24..8491323 100644 --- a/hobo/test_utils.py +++ b/hobo/test_utils.py @@ -1,19 +1,20 @@ -import hashlib import os -def get_safe_db_name(prefix): +def get_safe_db_name(): """ PostgreSQL database name limit is 68 characters, which can become an issue during testing, because we need to build a unique - database name using the branch and tox env. + database name using the branch name and tox env. - Ergo, the following code to ensure the database name is always shorter than 68 - characters. + Also, when running tests in parallel through `tox -p`, + pytest django append the tox env name automatically + through a fixture so we have to skip this step. """ - BRANCH_NAME = os.environ.get('BRANCH_NAME', '').replace('/', '-') - TOX_ENV_NAME = os.environ.get('TOX_ENV_NAME') - DB_NAME = '_'.join([part for part in [prefix, BRANCH_NAME, TOX_ENV_NAME] if part]) - DB_NAME = hashlib.sha256(DB_NAME.encode()).hexdigest()[:10] - - return DB_NAME + BRANCH_NAME = os.environ.get('BRANCH_NAME', '').replace('/', '-')[:15] + parts = [BRANCH_NAME] + if not os.environ.get("TOX_PARALLEL_ENV"): + # when we're in parallel mode, pytest-django will do this + # for us at a later point + parts.append(os.environ.get('TOX_ENV_NAME')) + return '_'.join(parts) diff --git a/tests/settings.py b/tests/settings.py index 70e9153..f2a0f05 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -21,7 +21,7 @@ HOBO_MANAGER_HOMEPAGE_URL_VAR = 'portal_agent_url' DATABASES = { 'default': { 'ENGINE': os.environ.get('DB_ENGINE', 'django.db.backends.sqlite3'), - 'NAME': hobo.test_utils.get_safe_db_name('test-hobo'), + 'NAME': hobo.test_utils.get_safe_db_name(), } } diff --git a/tests_authentic/settings.py b/tests_authentic/settings.py index 0db531a..dddb37d 100644 --- a/tests_authentic/settings.py +++ b/tests_authentic/settings.py @@ -15,7 +15,7 @@ open_backup = open with patch.object(builtins, 'open', mock_open(read_data=b'xxx')): exec(open_backup(os.environ['DEBIAN_CONFIG_COMMON']).read()) -DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name('test-authentic') +DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name() # Avoid conflic with real tenants # that might exist in /var/lib/authentic2_multitenant/tenants diff --git a/tests_multipublik/settings.py b/tests_multipublik/settings.py index a3e24c1..fcf53c2 100644 --- a/tests_multipublik/settings.py +++ b/tests_multipublik/settings.py @@ -14,7 +14,7 @@ open_backup = open with patch.object(builtins, 'open', mock_open(read_data=b'xxx')): exec(open_backup(os.path.join(os.path.dirname(__file__), '../debian/debian_config_common.py')).read()) -DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name('test-multipublik') +DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name() CACHES = { 'default': { diff --git a/tests_multitenant/settings.py b/tests_multitenant/settings.py index ac102f0..901e771 100644 --- a/tests_multitenant/settings.py +++ b/tests_multitenant/settings.py @@ -52,7 +52,7 @@ open_backup = open with patch.object(builtins, 'open', mock_open(read_data=b'xxx')): exec(open_backup(os.path.join(os.path.dirname(__file__), '../debian/debian_config_common.py')).read()) -DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name('test-multitenant') +DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name() TENANT_APPS = ( 'django.contrib.auth', diff --git a/tests_passerelle/settings.py b/tests_passerelle/settings.py index 9c3db5a..1c39903 100644 --- a/tests_passerelle/settings.py +++ b/tests_passerelle/settings.py @@ -18,7 +18,7 @@ with patch.object(builtins, 'open', mock_open(read_data=b'xxx')): exec(open_backup(os.environ['DEBIAN_CONFIG_COMMON']).read()) BRANCH_NAME = os.environ.get("BRANCH_NAME", "").replace('/', '-')[:15] -DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name('test-passerelle') +DATABASES['default']['NAME'] = hobo.test_utils.get_safe_db_name() # Avoid conflic with real tenants # that might exist in /var/lib/passerelle/tenants diff --git a/tests_schemas/settings.py b/tests_schemas/settings.py index 74c9586..92b6965 100644 --- a/tests_schemas/settings.py +++ b/tests_schemas/settings.py @@ -12,7 +12,7 @@ BRANCH_NAME = ( DATABASES = { 'default': { 'ENGINE': 'tenant_schemas.postgresql_backend', - 'NAME': hobo.test_utils.get_safe_db_name('test-schemas'), + 'NAME': hobo.test_utils.get_safe_db_name(), } } DATABASE_ROUTERS = ('tenant_schemas.routers.TenantSyncRouter',) -- 2.36.1