class TestPlan(unittest.TestCase): def setUp(self): self.plan = Plan() for i in range(4): self.plan.add(generate_definition('vpc', i)) def test_add(self): first_id = 'vpc.1' self.assertIn(first_id, self.plan) self.assertIsInstance(self.plan[first_id], BlueprintContext) def test_status(self): self.assertEqual(len(self.plan.list_submitted()), 0) self.assertEqual(len(self.plan.list_completed()), 0) self.assertEqual(len(self.plan.list_skipped()), 0) self.assertEqual(len(self.plan.list_pending()), 4) self.plan.submit('vpc.1') self.assertEqual(len(self.plan.list_submitted()), 1) self.assertEqual(len(self.plan.list_completed()), 0) self.assertEqual(len(self.plan.list_skipped()), 0) self.assertEqual(len(self.plan.list_pending()), 4) self.plan.complete('vpc.1') self.assertEqual(len(self.plan.list_submitted()), 0) self.assertEqual(len(self.plan.list_completed()), 1) self.assertEqual(len(self.plan.list_skipped()), 0) self.assertEqual(len(self.plan.list_pending()), 3) self.assertFalse(self.plan.completed) self.plan.skip('vpc.2') self.assertEqual(len(self.plan.list_submitted()), 0) self.assertEqual(len(self.plan.list_completed()), 1) self.assertEqual(len(self.plan.list_skipped()), 1) self.assertEqual(len(self.plan.list_pending()), 2) for i in range(4): self.plan.complete("vpc.%d" % i) self.assertTrue(self.plan.completed)
def test_execute_plan_with_watchers(self, patched_multiprocessing): watch_func = mock.MagicMock() plan = Plan(description="Test", sleep_time=0, watch_func=watch_func) previous_stack = None for i in range(5): overrides = {} if previous_stack: overrides["requires"] = [previous_stack.fqn] stack = Stack( definition=generate_definition("vpc", i, **overrides), context=self.context, ) previous_stack = stack plan.add( stack=stack, run_func=self._run_func, requires=stack.requires, ) plan.execute() self.assertEqual(self.count, 9) self.assertEqual(len(plan.list_skipped()), 1) self.assertEqual(patched_multiprocessing.Process().start.call_count, 5) # verify we terminate the process when the stack is finished and also # redundantly terminate the process after execution self.assertEqual( patched_multiprocessing.Process().terminate.call_count, 10)
def test_execute_plan_with_watchers(self, patched_multiprocessing): watch_func = mock.MagicMock() plan = Plan(description='Test', sleep_time=0, watch_func=watch_func) previous_stack = None for i in range(5): overrides = {} if previous_stack: overrides['requires'] = [previous_stack.fqn] stack = Stack( definition=generate_definition('vpc', i, **overrides), context=self.context, ) previous_stack = stack plan.add( stack=stack, run_func=self._run_func, requires=stack.requires, ) plan.execute() self.assertEqual(self.count, 9) self.assertEqual(len(plan.list_skipped()), 1) self.assertEqual(patched_multiprocessing.Process().start.call_count, 5) # verify we terminate the process when the stack is finished and also # redundantly terminate the process after execution self.assertEqual( patched_multiprocessing.Process().terminate.call_count, 10)
def test_execute_plan(self): plan = Plan(description="Test", sleep_time=0) previous_stack = None for i in range(5): overrides = {} if previous_stack: overrides["requires"] = [previous_stack.fqn] stack = Stack(definition=generate_definition("vpc", i, **overrides), context=self.context) previous_stack = stack plan.add(stack=stack, run_func=self._run_func, requires=stack.requires) plan.execute() self.assertEqual(self.count, 9) self.assertEqual(len(plan.list_skipped()), 1)
def test_execute_plan(self): plan = Plan(description="Test", sleep_time=0) previous_stack = None for i in range(5): overrides = {} if previous_stack: overrides["requires"] = [previous_stack.fqn] stack = Stack( definition=generate_definition("vpc", i, **overrides), context=self.context, ) previous_stack = stack plan.add( stack=stack, run_func=self._run_func, requires=stack.requires, ) plan.execute() self.assertEqual(self.count, 9) self.assertEqual(len(plan.list_skipped()), 1)
def test_reset_plan(self): plan = Plan(description='Test', sleep_time=0) previous_stack = None for i in range(5): overrides = {} if previous_stack: overrides['requires'] = [previous_stack.fqn] stack = Stack( definition=generate_definition('vpc', i, **overrides), context=self.context, ) previous_stack = stack plan.add( stack=stack, run_func=self._run_func, requires=stack.requires, ) plan.execute() self.assertEqual(self.count, 9) self.assertEqual(len(plan.list_skipped()), 1) plan.reset() self.assertEqual(len(plan.list_pending()), len(plan))