Currently neutron uses MySQLTestCase[1] and
PostgreSQLOpportunisticTestCase[2] for functional and fullstack tests
using a real MySQL/PostgreSQL database. These classes skip tests when
the db is unavailable (db not installed/configured, missing packages,
etc.) which is fine when tests are runned by developers but not when
runned by the gate jobs.
This change updates MySQLTestCase[1] and defines PostgreSQLTestCase[1]
as PostgreSQL oslo.db test class wrapper: when the db is unavailable,
these classes ensure tests will:
* fail in the gate (dsvm-functional, dsvm-fullstack jobs),
* be skipped by default otherwise (functional, fullstack jobs).
[1] neutron.tests.common.base
[2] oslo_db.sqlalchemy.test_base
Closes-Bug: #
1404093
Change-Id: I77b12e728ce9a7b0222c3df081842635f6375a3e
"""Base test class for MySQL tests.
Enforce the supported driver, which is PyMySQL.
+ If the MySQL db is unavailable then this test is skipped, unless
+ OS_FAIL_ON_MISSING_DEPS is enabled.
"""
FIXTURE = PyMySQLFixture
+ SKIP_ON_UNAVAILABLE_DB = not base.bool_from_env('OS_FAIL_ON_MISSING_DEPS')
+
+
+class PostgreSQLTestCase(test_base.PostgreSQLOpportunisticTestCase):
+ """Base test class for PostgreSQL tests.
+
+ If the PostgreSQL db is unavailable then this test is skipped, unless
+ OS_FAIL_ON_MISSING_DEPS is enabled.
+ """
+ SKIP_ON_UNAVAILABLE_DB = not base.bool_from_env('OS_FAIL_ON_MISSING_DEPS')
from oslo_config import cfg
from oslo_db.sqlalchemy import session
-from oslo_db.sqlalchemy import test_base
import testtools
from neutron.api.v2 import attributes
self.configure_test()
-class TestIpamPsql(test_base.PostgreSQLOpportunisticTestCase,
+class TestIpamPsql(common_base.PostgreSQLTestCase,
base.BaseTestCase, IpamTestCase):
def setUp(self):
class TestModelsMigrationsPsql(_TestModelsMigrations,
- test_base.PostgreSQLOpportunisticTestCase):
+ base.PostgreSQLTestCase):
pass