Add bool_type dictionary to test_migrations

A number of MySQL migration tests fail because the test case
is verifying that an sqlalchemy.types.BOOLEAN column was created.
When the column type is checked, however, mysql reports the type as
sqlalchemy.dialects.mysql.TINYINT.  The mismatch causes numerous
test cases to fail for MySQL.

This creates a dictionary for each engine being tested to handle the
different boolean types.

postgresql and DB2 encounter similar issues.  Subsequent patches
will make the appropriate changes for those databases.

Change-Id: I81cb3c6feeacf887f1f473ec54414e0e215d2c24
Closes-bug: 1260126
This commit is contained in:
Jay S. Bryant 2014-01-06 14:45:34 -06:00
parent 86f6fde84e
commit 2a7b11922b
1 changed files with 15 additions and 7 deletions

View File

@ -147,6 +147,14 @@ class TestMigrations(test.TestCase):
for key, value in self.test_databases.items():
self.engines[key] = sqlalchemy.create_engine(value)
# Set-up a dict of types for those column types that
# are not uniform for all databases.
self.bool_type = {}
for (key, engine) in self.engines.items():
self.bool_type[engine.name] = sqlalchemy.types.BOOLEAN
if engine.name == 'mysql':
self.bool_type[engine.name] = sqlalchemy.dialects.mysql.TINYINT
# We start each test case with a completely blank slate.
self._reset_databases()
@ -561,7 +569,7 @@ class TestMigrations(test.TestCase):
self.assertIsInstance(backups.c.deleted_at.type,
sqlalchemy.types.DATETIME)
self.assertIsInstance(backups.c.deleted.type,
sqlalchemy.types.BOOLEAN)
self.bool_type[engine.name])
self.assertIsInstance(backups.c.id.type,
sqlalchemy.types.VARCHAR)
self.assertIsInstance(backups.c.volume_id.type,
@ -623,9 +631,9 @@ class TestMigrations(test.TestCase):
self.assertIsInstance(snapshot_metadata.c.deleted_at.type,
sqlalchemy.types.DATETIME)
self.assertIsInstance(snapshot_metadata.c.deleted.type,
sqlalchemy.types.BOOLEAN)
self.bool_type[engine.name])
self.assertIsInstance(snapshot_metadata.c.deleted.type,
sqlalchemy.types.BOOLEAN)
self.bool_type[engine.name])
self.assertIsInstance(snapshot_metadata.c.id.type,
sqlalchemy.types.INTEGER)
self.assertIsInstance(snapshot_metadata.c.snapshot_id.type,
@ -664,7 +672,7 @@ class TestMigrations(test.TestCase):
self.assertIsInstance(transfers.c.deleted_at.type,
sqlalchemy.types.DATETIME)
self.assertIsInstance(transfers.c.deleted.type,
sqlalchemy.types.BOOLEAN)
self.bool_type[engine.name])
self.assertIsInstance(transfers.c.id.type,
sqlalchemy.types.VARCHAR)
self.assertIsInstance(transfers.c.volume_id.type,
@ -712,7 +720,7 @@ class TestMigrations(test.TestCase):
self.assertTrue(volumes.c.__contains__(column.name))
self.assertIsInstance(volumes.c.bootable.type,
sqlalchemy.types.BOOLEAN)
self.bool_type[engine.name])
migration_api.downgrade(engine, TestMigrations.REPOSITORY, 10)
metadata = sqlalchemy.schema.MetaData()
@ -925,7 +933,7 @@ class TestMigrations(test.TestCase):
self.assertIsInstance(qos_specs.c.deleted_at.type,
sqlalchemy.types.DATETIME)
self.assertIsInstance(qos_specs.c.deleted.type,
sqlalchemy.types.BOOLEAN)
self.bool_type[engine.name])
self.assertIsInstance(qos_specs.c.id.type,
sqlalchemy.types.VARCHAR)
self.assertIsInstance(qos_specs.c.specs_id.type,
@ -991,7 +999,7 @@ class TestMigrations(test.TestCase):
self.assertIsInstance(volume_admin_metadata.c.deleted_at.type,
sqlalchemy.types.DATETIME)
self.assertIsInstance(volume_admin_metadata.c.deleted.type,
sqlalchemy.types.BOOLEAN)
self.bool_type[engine.name])
self.assertIsInstance(volume_admin_metadata.c.id.type,
sqlalchemy.types.INTEGER)
self.assertIsInstance(volume_admin_metadata.c.volume_id.type,