diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index cf81cca7..346e0b2b 100644 --- a/nova/tests/test_db_api.py +++ b/nova/tests/test_db_api.py @@ -334,6 +334,16 @@ class DbApiTestCase(test.TestCase): self.assertRaises(exception.DuplicateVlan, db.network_create_safe, ctxt, values2) + def test_network_update_with_duplicate_vlan(self): + ctxt = context.get_admin_context() + values1 = {'host': 'localhost', 'project_id': 'project1', 'vlan': 1} + values2 = {'host': 'something', 'project_id': 'project1', 'vlan': 2} + network_ref = db.network_create_safe(ctxt, values1) + db.network_create_safe(ctxt, values2) + self.assertRaises(exception.DuplicateVlan, + db.network_update, + ctxt, network_ref["id"], values2) + def test_instance_update_with_instance_uuid(self): # test instance_update() works when an instance UUID is passed. ctxt = context.get_admin_context() diff --git a/nova/tests/test_migrations.py b/nova/tests/test_migrations.py index fafe3348..6f55ce84 100644 --- a/nova/tests/test_migrations.py +++ b/nova/tests/test_migrations.py @@ -860,6 +860,26 @@ class TestNovaMigrations(BaseMigrationTestCase): # recheck the 149 data self._check_149(engine, data) + def _prerun_158(self, engine): + networks = get_table(engine, 'networks') + data = [ + {'vlan': 1, 'deleted': 0}, + {'vlan': 1, 'deleted': 0}, + {'vlan': 1, 'deleted': 0}, + ] + + for item in data: + networks.insert().values(item).execute() + return data + + def _check_158(self, engine, data): + networks = get_table(engine, 'networks') + rows = networks.select().\ + where(networks.c.deleted != networks.c.id).\ + execute().\ + fetchall() + self.assertEqual(len(rows), 1) + class TestBaremetalMigrations(BaseMigrationTestCase): """Test sqlalchemy-migrate migrations."""