From 7fac88cce5afb249403169907f0a565800b515df Mon Sep 17 00:00:00 2001 From: Renat Akhmerov Date: Tue, 6 Feb 2018 20:14:07 +0700 Subject: [PATCH] Fix how a cron trigger starts a workflow * It was broken when we were adding the "wf_ex_id" parameter to Engine.start_workflow() * Fixed the test that checks how triggers start workflows * Other minor changes Change-Id: Ida361a53ffdb5426a39d276d567391d25261fb7f --- mistral/services/periodic.py | 1 + .../tests/unit/engine/test_cron_trigger.py | 30 ++++++++++++------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/mistral/services/periodic.py b/mistral/services/periodic.py index 0c0e69954..c15d160f5 100644 --- a/mistral/services/periodic.py +++ b/mistral/services/periodic.py @@ -80,6 +80,7 @@ class MistralPeriodicTasks(periodic_task.PeriodicTasks): rpc.get_engine_client().start_workflow( trigger.workflow.name, trigger.workflow.namespace, + None, trigger.workflow_input, description=json.dumps(description), **trigger.workflow_params diff --git a/mistral/tests/unit/engine/test_cron_trigger.py b/mistral/tests/unit/engine/test_cron_trigger.py index 6427a442f..ffedaab0a 100644 --- a/mistral/tests/unit/engine/test_cron_trigger.py +++ b/mistral/tests/unit/engine/test_cron_trigger.py @@ -45,8 +45,7 @@ class ProcessCronTriggerTest(base.EngineTestCase): 'create_trust', type('trust', (object,), {'id': 'my_trust_id'})) @mock.patch('mistral.rpc.clients.get_engine_client') - def test_start_workflow(self, rpc_mock): - + def test_start_workflow(self, get_engine_client_mock): cfg.CONF.set_default('auth_enable', True, group='pecan') wf = workflows.create_workflows(WORKFLOW_LIST)[0] @@ -71,11 +70,18 @@ class ProcessCronTriggerTest(base.EngineTestCase): periodic.MistralPeriodicTasks(cfg.CONF).process_cron_triggers_v2(None) - start_workflow_mock = rpc_mock.return_value.start_workflow - start_workflow_mock.assert_called_once() + start_wf_mock = get_engine_client_mock.return_value.start_workflow + + start_wf_mock.assert_called_once() + + # Check actual parameters of the call. + self.assertEqual( + ('my_wf', '', None, {}), + start_wf_mock.mock_calls[0][1] + ) self.assertIn( t.id, - start_workflow_mock.mock_calls[0][2]['description'] + start_wf_mock.mock_calls[0][2]['description'] ) next_triggers = triggers.get_next_cron_triggers() @@ -181,9 +187,13 @@ class ProcessCronTriggerTest(base.EngineTestCase): def test_validate_cron_trigger_input_first_time(self): cfg.CONF.set_default('auth_enable', False, group='pecan') + first_time = datetime.datetime.utcnow() + datetime.timedelta(0, 1) - self.assertRaises(exc.InvalidModelException, - triggers.validate_cron_trigger_input, - None, - first_time, - None) + + self.assertRaises( + exc.InvalidModelException, + triggers.validate_cron_trigger_input, + None, + first_time, + None + )