summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-01-24 00:54:25 +0000
committerGerrit Code Review <review@openstack.org>2013-01-24 00:54:25 +0000
commit2e4154e120aef427f05216ff1d1abffe9053041c (patch)
tree1a86e0acc1ba091f7ce02c252006adef8336f6f0 /nova/tests
parent13290fdb99e2454aa0cb6a994e175850b365c9e4 (diff)
parent28191baa2b1a65fb86bbbbfc0974495059db6d42 (diff)
Merge "Provide creating real unique constraints for columns"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_migrations.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/nova/tests/test_migrations.py b/nova/tests/test_migrations.py
index 3e9da9594..f0ed0a863 100644
--- a/nova/tests/test_migrations.py
+++ b/nova/tests/test_migrations.py
@@ -484,3 +484,77 @@ class TestMigrations(test.TestCase):
migration_api.downgrade(engine, TestMigrations.REPOSITORY, 146)
_146_check()
+
+ def test_migration_152(self):
+ host1 = 'compute-host1'
+ host2 = 'compute-host2'
+
+ def _151_check(services, volumes):
+ service = services.select(services.c.id == 1).execute().first()
+ self.assertEqual(False, service.deleted)
+ service = services.select(services.c.id == 2).execute().first()
+ self.assertEqual(True, service.deleted)
+
+ volume = volumes.select(volumes.c.id == "first").execute().first()
+ self.assertEqual(False, volume.deleted)
+ volume = volumes.select(volumes.c.id == "second").execute().first()
+ self.assertEqual(True, volume.deleted)
+
+ for key, engine in self.engines.items():
+ migration_api.version_control(engine, TestMigrations.REPOSITORY,
+ migration.INIT_VERSION)
+ migration_api.upgrade(engine, TestMigrations.REPOSITORY, 151)
+ metadata = sqlalchemy.schema.MetaData()
+ metadata.bind = engine
+
+ # NOTE(boris-42): It is enough to test one table with type of `id`
+ # column Integer and one with type String.
+ services = sqlalchemy.Table('services', metadata, autoload=True)
+ volumes = sqlalchemy.Table('volumes', metadata, autoload=True)
+
+ engine.execute(
+ services.insert(),
+ [
+ {'id': 1, 'host': host1, 'binary': 'nova-compute',
+ 'report_count': 0, 'topic': 'compute', 'deleted': False},
+ {'id': 2, 'host': host1, 'binary': 'nova-compute',
+ 'report_count': 0, 'topic': 'compute', 'deleted': True}
+ ]
+ )
+
+ engine.execute(
+ volumes.insert(),
+ [
+ {'id': 'first', 'host': host1, 'deleted': False},
+ {'id': 'second', 'host': host2, 'deleted': True}
+ ]
+ )
+
+ _151_check(services, volumes)
+
+ migration_api.upgrade(engine, TestMigrations.REPOSITORY, 152)
+ # NOTE(boris-42): One more time get from DB info about tables.
+ metadata2 = sqlalchemy.schema.MetaData()
+ metadata2.bind = engine
+
+ services = sqlalchemy.Table('services', metadata2, autoload=True)
+
+ service = services.select(services.c.id == 1).execute().first()
+ self.assertEqual(0, service.deleted)
+ service = services.select(services.c.id == 2).execute().first()
+ self.assertEqual(service.id, service.deleted)
+
+ volumes = sqlalchemy.Table('volumes', metadata2, autoload=True)
+ volume = volumes.select(volumes.c.id == "first").execute().first()
+ self.assertEqual("", volume.deleted)
+ volume = volumes.select(volumes.c.id == "second").execute().first()
+ self.assertEqual(volume.id, volume.deleted)
+
+ migration_api.downgrade(engine, TestMigrations.REPOSITORY, 151)
+ # NOTE(boris-42): One more time get from DB info about tables.
+ metadata = sqlalchemy.schema.MetaData()
+ metadata.bind = engine
+ services = sqlalchemy.Table('services', metadata, autoload=True)
+ volumes = sqlalchemy.Table('volumes', metadata, autoload=True)
+
+ _151_check(services, volumes)