summaryrefslogtreecommitdiff
path: root/heat/tests/db
diff options
context:
space:
mode:
authorAnant Patil <anant.patil@hp.com>2016-08-18 15:31:23 +0530
committerThomas Herve <therve@redhat.com>2016-09-10 09:22:36 +0200
commit873a40851dd7807c6de0ee73affb7af2be875519 (patch)
treed269dbd3117932111bf788e4aef3718d485199e3 /heat/tests/db
parentb9d1e30a013cdb95350e5818cc63f4b6f3953bd7 (diff)
downloadheat-873a40851dd7807c6de0ee73affb7af2be875519.tar.gz
Convergence: basic framework for cancelling workers
Implements mechanism to cancel existing workers (in_progress resources). The stack-cancel-update request lands in one of the engines, and if there are any workers in that engine which are working for the stack, they are cancelled first and then other engines are requested to cancel the workers. Change-Id: I464c4fdb760247d436473af49448f7797dc0130d
Diffstat (limited to 'heat/tests/db')
-rw-r--r--heat/tests/db/test_sqlalchemy_api.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/heat/tests/db/test_sqlalchemy_api.py b/heat/tests/db/test_sqlalchemy_api.py
index 9b9f7515c..a266978a7 100644
--- a/heat/tests/db/test_sqlalchemy_api.py
+++ b/heat/tests/db/test_sqlalchemy_api.py
@@ -2436,6 +2436,35 @@ class DBAPIResourceTest(common.HeatTestCase):
self.assertRaises(exception.NotFound, db_api.resource_get,
self.ctx, resource.id)
+ def test_engine_get_all_locked_by_stack(self):
+ values = [
+ {'name': 'res1', 'action': rsrc.Resource.DELETE,
+ 'root_stack_id': self.stack.id,
+ 'status': rsrc.Resource.COMPLETE},
+ {'name': 'res2', 'action': rsrc.Resource.DELETE,
+ 'root_stack_id': self.stack.id,
+ 'status': rsrc.Resource.IN_PROGRESS, 'engine_id': 'engine-001'},
+ {'name': 'res3', 'action': rsrc.Resource.UPDATE,
+ 'root_stack_id': self.stack.id,
+ 'status': rsrc.Resource.IN_PROGRESS, 'engine_id': 'engine-002'},
+ {'name': 'res4', 'action': rsrc.Resource.CREATE,
+ 'root_stack_id': self.stack.id,
+ 'status': rsrc.Resource.COMPLETE},
+ {'name': 'res5', 'action': rsrc.Resource.INIT,
+ 'root_stack_id': self.stack.id,
+ 'status': rsrc.Resource.COMPLETE},
+ {'name': 'res6', 'action': rsrc.Resource.CREATE,
+ 'root_stack_id': self.stack.id,
+ 'status': rsrc.Resource.IN_PROGRESS, 'engine_id': 'engine-001'},
+ {'name': 'res6'},
+ ]
+ for val in values:
+ create_resource(self.ctx, self.stack, **val)
+
+ engines = db_api.engine_get_all_locked_by_stack(self.ctx,
+ self.stack.id)
+ self.assertEqual({'engine-001', 'engine-002'}, engines)
+
class DBAPIStackLockTest(common.HeatTestCase):
def setUp(self):