From 19f7221d23e234d49426597ac4eca6679dc212d3 Mon Sep 17 00:00:00 2001 From: Boris Pavlovic Date: Sun, 23 Dec 2012 07:03:55 +0400 Subject: [PATCH] Fix bug and remove update lock in db.instance_test_and_set() Remove session from arguments. Instance update works through one query, so we don't need to use update lock. Add tests for instance_test_and_set(). blueprint db-session-cleanup Change-Id: I143877f427f5eba4a7c7aa985bb70c79a9513822 --- nova/tests/test_db_api.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index 29bce8bf..ea6e9aea 100644 --- a/nova/tests/test_db_api.py +++ b/nova/tests/test_db_api.py @@ -284,6 +284,27 @@ class DbApiTestCase(test.TestCase): self.assertRaises(exception.DuplicateVlan, db.network_create_safe, ctxt, values2) + def test_instance_test_and_set(self): + ctxt = context.get_admin_context() + states = [ + (None, [None, 'some'], 'building'), + (None, [None], 'building'), + ('building', ['building'], 'ready'), + ('building', [None, 'building'], 'ready')] + for st in states: + inst = db.instance_create(ctxt, {'vm_state': st[0]}) + uuid = inst['uuid'] + db.instance_test_and_set(ctxt, uuid, 'vm_state', st[1], st[2]) + inst = db.instance_get_by_uuid(ctxt, uuid) + self.assertEqual(inst["vm_state"], st[2]) + + def test_instance_test_and_set_exception(self): + ctxt = context.get_admin_context() + inst = db.instance_create(ctxt, {'vm_state': 'building'}) + self.assertRaises(exception.InstanceInvalidState, + db.instance_test_and_set, ctxt, + inst['uuid'], 'vm_state', [None, 'disable'], 'run') + def test_instance_update_with_instance_uuid(self): """ test instance_update() works when an instance UUID is passed """ ctxt = context.get_admin_context()