Add Model-migrations-sync test
Add test which checks whether database models and alembic migration scripts are in sync. Change-Id: I64f2f468c7d6cf6ecb21172781b8126478003f28 Related-bug: #1470678
This commit is contained in:
parent
924eecd968
commit
4fe873d545
7
tox.ini
7
tox.ini
@ -27,18 +27,25 @@ setenv = VIRTUAL_ENV={envdir}
|
||||
|
||||
[testenv:functional]
|
||||
setenv = OS_TEST_TIMEOUT=90
|
||||
deps =
|
||||
{[testenv]deps}
|
||||
-r{toxinidir}/vmware_nsx/neutron/tests/functional/requirements.txt
|
||||
|
||||
[testenv:dsvm-functional]
|
||||
setenv = OS_SUDO_TESTING=1
|
||||
OS_FAIL_ON_MISSING_DEPS=1
|
||||
OS_TEST_TIMEOUT=90
|
||||
sitepackages=True
|
||||
deps =
|
||||
{[testenv:functional]deps}
|
||||
|
||||
[tox:jenkins]
|
||||
sitepackages = True
|
||||
downloadcache = ~/cache/pip
|
||||
|
||||
[testenv:pep8]
|
||||
deps =
|
||||
{[testenv]deps}
|
||||
commands =
|
||||
sh ./tools/check_bash.sh
|
||||
flake8
|
||||
|
0
vmware_nsx/neutron/db/migration/models/__init__.py
Normal file
0
vmware_nsx/neutron/db/migration/models/__init__.py
Normal file
23
vmware_nsx/neutron/db/migration/models/head.py
Normal file
23
vmware_nsx/neutron/db/migration/models/head.py
Normal file
@ -0,0 +1,23 @@
|
||||
# Copyright 2015 VMware, Inc
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from neutron.db.migration.models import head
|
||||
|
||||
from vmware_nsx.neutron.plugins.vmware.dbexts import nsx_models # noqa
|
||||
from vmware_nsx.neutron.plugins.vmware.dbexts import nsxv_models # noqa
|
||||
from vmware_nsx.neutron.plugins.vmware.dbexts import vcns_models # noqa
|
||||
|
||||
|
||||
def get_metadata():
|
||||
return head.model_base.BASEV2.metadata
|
0
vmware_nsx/neutron/tests/functional/__init__.py
Normal file
0
vmware_nsx/neutron/tests/functional/__init__.py
Normal file
0
vmware_nsx/neutron/tests/functional/db/__init__.py
Normal file
0
vmware_nsx/neutron/tests/functional/db/__init__.py
Normal file
60
vmware_nsx/neutron/tests/functional/db/test_migrations.py
Normal file
60
vmware_nsx/neutron/tests/functional/db/test_migrations.py
Normal file
@ -0,0 +1,60 @@
|
||||
# Copyright 2015 VMware, Inc.
|
||||
#
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo_config import cfg
|
||||
|
||||
from neutron.db.migration.alembic_migrations import external
|
||||
from neutron.db.migration import cli as migration
|
||||
from neutron.tests.common import base
|
||||
from neutron.tests.functional.db import test_migrations
|
||||
|
||||
from vmware_nsx.neutron.db.migration import alembic_migrations
|
||||
from vmware_nsx.neutron.db.models import head
|
||||
|
||||
# EXTERNAL_TABLES should contain all names of tables that are not related to
|
||||
# current repo.
|
||||
EXTERNAL_TABLES = set(external.TABLES) - set(external.REPO_VMWARE_TABLES)
|
||||
|
||||
|
||||
class _TestModelsMigrationsFoo(test_migrations._TestModelsMigrations):
|
||||
|
||||
def db_sync(self, engine):
|
||||
cfg.CONF.set_override('connection', engine.url, group='database')
|
||||
for conf in migration.get_alembic_configs():
|
||||
self.alembic_config = conf
|
||||
self.alembic_config.neutron_config = cfg.CONF
|
||||
migration.do_alembic_command(conf, 'upgrade', 'heads')
|
||||
|
||||
def get_metadata(self):
|
||||
return head.get_metadata()
|
||||
|
||||
def include_object(self, object_, name, type_, reflected, compare_to):
|
||||
if type_ == 'table' and (name == 'alembic' or
|
||||
name == alembic_migrations.VERSION_TABLE or
|
||||
name in EXTERNAL_TABLES):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
class TestModelsMigrationsMysql(_TestModelsMigrationsFoo,
|
||||
base.MySQLTestCase):
|
||||
pass
|
||||
|
||||
|
||||
class TestModelsMigrationsPsql(_TestModelsMigrationsFoo,
|
||||
base.PostgreSQLTestCase):
|
||||
pass
|
9
vmware_nsx/neutron/tests/functional/requirements.txt
Normal file
9
vmware_nsx/neutron/tests/functional/requirements.txt
Normal file
@ -0,0 +1,9 @@
|
||||
# Additional requirements for functional tests
|
||||
|
||||
# The order of packages is significant, because pip processes them in the order
|
||||
# of appearance. Changing the order has an impact on the overall integration
|
||||
# process, which may cause wedges in the gate later.
|
||||
|
||||
psutil>=1.1.1,<2.0.0
|
||||
psycopg2
|
||||
PyMySQL>=0.6.2 # MIT License
|
Loading…
Reference in New Issue
Block a user