From e90f184143c8d69d826e7763a2503bc480927a5b Mon Sep 17 00:00:00 2001 From: Oleksii Chuprykov Date: Mon, 6 Oct 2014 19:53:24 +0300 Subject: [PATCH] Add ModelSMigrationSync classes Add classes for testing correspondence between migration scripts and metadata. We need oslotest in test-requirements due to bug#1356425 Partial-Bug: #1365436 Change-Id: I0db68ea3557dd9d214ea50ff7c96de1a47a58d4b --- glance/tests/unit/test_migrations.py | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/glance/tests/unit/test_migrations.py b/glance/tests/unit/test_migrations.py index 35a03a513c..1319d912e3 100644 --- a/glance/tests/unit/test_migrations.py +++ b/glance/tests/unit/test_migrations.py @@ -1370,3 +1370,46 @@ class TestSqliteMigrations(test_base.DbTestCase, MigrationsMixin): def test_walk_versions(self): self._walk_versions(True, True) + + +class ModelsMigrationSyncMixin(object): + + def get_metadata(self): + return models.BASE.metadata + + def get_engine(self): + return self.engine + + def db_sync(self, engine): + migration.db_sync(engine=engine) + + def include_object(self, object_, name, type_, reflected, compare_to): + # We need to exclude tables that aren't in models.py and table that + # contains migrate version + + # TODO(ochuprykov): We need to include this tables back after merge of + # models.py and models_metadef.py + # (except 'migrate_version') + if name in ['migrate_version', 'metadef_objects', 'metadef_namespaces', + 'metadef_properties', 'metadef_resource_types', + 'metadef_namespace_resource_types'] and type_ == 'table': + return False + return True + + +class ModelsMigrationsSyncMysql(ModelsMigrationSyncMixin, + test_migrations.ModelsMigrationsSync, + test_base.MySQLOpportunisticTestCase): + pass + + +class ModelsMigrationsSyncPostgres(ModelsMigrationSyncMixin, + test_migrations.ModelsMigrationsSync, + test_base.PostgreSQLOpportunisticTestCase): + pass + + +class ModelsMigrationsSyncSQLite(ModelsMigrationSyncMixin, + test_migrations.ModelsMigrationsSync, + test_base.DbTestCase): + pass